def main(unused_argv=None): """Standard TensorBoard program CLI. See `tensorboard.program.main` for further documentation. """ return program.main(default.get_plugins(), default.get_assets_zip_provider())
def __get_tb_app(self, tensorboard_logs): return application.standard_tensorboard_wsgi( logdir=tensorboard_logs, assets_zip_provider=tb_default.get_assets_zip_provider(), purge_orphaned_data=True, reload_interval=5, plugins=tb_default.get_plugins())
def __init__(self, plugins=None, assets_zip_provider=None, server_class=None): """Creates new instance. Args: plugins: A list of TensorBoard plugins to load, as TBLoader instances or TBPlugin classes. If not specified, defaults to first-party plugins. assets_zip_provider: Delegates to TBContext or uses default if None. server_class: An optional subclass of TensorBoardServer to use for serving the TensorBoard WSGI app. :type plugins: list[Union[base_plugin.TBLoader, Type[base_plugin.TBPlugin]]] :type assets_zip_provider: () -> file :type server_class: class """ if plugins is None: from tensorboard import default plugins = default.get_plugins() if assets_zip_provider is None: from tensorboard import default assets_zip_provider = default.get_assets_zip_provider() if server_class is None: server_class = WerkzeugServer def make_loader(plugin): if isinstance(plugin, base_plugin.TBLoader): return plugin if issubclass(plugin, base_plugin.TBPlugin): return base_plugin.BasicLoader(plugin) raise ValueError("Not a TBLoader or TBPlugin subclass: %s" % plugin) self.plugin_loaders = [make_loader(p) for p in plugins] self.assets_zip_provider = assets_zip_provider self.server_class = server_class self.flags = None
def __init__(self, plugin_loaders=None, assets_zip_provider=None, wsgi_middleware=None): """Creates new instance. The configure() method should be called after creating a new instance of this classe. Args: plugin_loaders: A list of TBLoader plugin loader instances. If not specified, defaults to first-party plugins. assets_zip_provider: Delegates to TBContext or uses default if None. wsgi_middleware: Optional function for installing middleware around the standard TensorBoard WSGI handler. :type plugin_loaders: list[base_plugin.TBLoader] :type assets_zip_provider: () -> file """ if plugin_loaders is None: from tensorboard import default plugin_loaders = default.PLUGIN_LOADERS if assets_zip_provider is None: from tensorboard import default assets_zip_provider = default.get_assets_zip_provider() self.plugin_loaders = plugin_loaders self.assets_zip_provider = assets_zip_provider self._wsgi_middleware = wsgi_middleware self.flags = None self.unparsed_argv = []
def run(self): if LooseVersion(tf.__version__) < LooseVersion("1.12"): # v1.10 # Remove http messages log = logging.getLogger('werkzeug') log.setLevel(logging.ERROR) # Start tensorboard server tb = program.TensorBoard(default.PLUGIN_LOADERS, default.get_assets_zip_provider()) tb.configure(argv=['--logdir', self.dir_path]) url = tb.launch() sys.stdout.write('TensorBoard at %s \n' % url) elif LooseVersion( tf.__version__) >= LooseVersion("1.12") and LooseVersion( tf.__version__) < LooseVersion("2.0"): # v1.12 - v1.14 # Remove http messages log = logging.getLogger('werkzeug').setLevel(logging.ERROR) # Start tensorboard server tb = program.TensorBoard( default.get_plugins()) #, default.get_assets_zip_provider()) tb.configure(argv=[None, '--logdir', self.dir_path]) url = tb.launch() sys.stdout.write('TensorBoard at %s \n' % url) else: # v2.X # Remove http messages log = logging.getLogger('werkzeug').setLevel(logging.ERROR) # Start tensorboard server tb = program.TensorBoard( default.get_plugins()) # , default.get_assets_zip_provider()) tb.configure(argv=[None, '--logdir', self.dir_path]) url = tb.launch() sys.stdout.write('TensorBoard at %s \n' % url)
def start_tf_board(client: skein.ApplicationClient, experiment: Experiment = None): thread = None if experiment: model_dir = experiment.estimator.config.model_dir else: model_dir = os.environ.get('TF_BOARD_MODEL_DIR', None) task = cluster.get_task() os.environ['GCS_READ_CACHE_DISABLED'] = '1' os.environ['PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION'] = 'cpp' os.environ['PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION'] = '2' try: program.setup_environment() tensorboard = program.TensorBoard(default.get_plugins(), default.get_assets_zip_provider()) with _internal.reserve_sock_addr() as (h, p): tensorboard_url = f"http://{h}:{p}" argv = ['tensorboard', f"--logdir={model_dir}", f"--port={p}"] # Append more arguments if needed. if 'TF_BOARD_EXTRA_ARGS' in os.environ: argv += os.environ['TF_BOARD_EXTRA_ARGS'].split(' ') tensorboard.configure(argv) tensorboard.launch() event.url_event(client, task, f"Tensorboard is listening at {tensorboard_url}") thread = [t for t in threading.enumerate() if t.name == 'TensorBoard'][0] except Exception as e: event.stop_event(client, task, e) return thread
def run(self): # Remove http messages log = logging.getLogger('tensorflow').setLevel(logging.FATAL) # Start tensorboard server tb = program.TensorBoard(default.get_plugins(), default.get_assets_zip_provider()) tb.configure(argv=[None, '--logdir', self.dir_path]) url = tb.launch() sys.stdout.write('TensorBoard at %s \n' % url)
def standard_tensorboard_wsgi( logdir, purge_orphaned_data, reload_interval, plugins, db_uri="", assets_zip_provider=None, path_prefix="", window_title="", flags=None): """Construct a TensorBoardWSGIApp with standard plugins and multiplexer. Args: logdir: The path to the directory containing events files. purge_orphaned_data: Whether to purge orphaned data. reload_interval: The interval at which the backend reloads more data in seconds. Zero means load once at startup; negative means never load. plugins: A list of constructor functions for TBPlugin subclasses. path_prefix: A prefix of the path when app isn't served from root. db_uri: A String containing the URI of the SQL database for persisting data, or empty for memory-only mode. assets_zip_provider: See TBContext documentation for more information. If this value is not specified, this function will attempt to load the `tensorboard.default` module to use the default. This behavior might be removed in the future. window_title: A string specifying the the window title. flags: A dict of the runtime flags provided to the application, or None. Returns: The new TensorBoard WSGI application. """ if assets_zip_provider is None: from tensorboard import default assets_zip_provider = default.get_assets_zip_provider() multiplexer = event_multiplexer.EventMultiplexer( size_guidance=DEFAULT_SIZE_GUIDANCE, tensor_size_guidance=DEFAULT_TENSOR_SIZE_GUIDANCE, purge_orphaned_data=purge_orphaned_data) db_module, db_connection_provider = get_database_info(db_uri) # In DB mode, always disable loading event files. if db_connection_provider: reload_interval = -1 plugin_name_to_instance = {} context = base_plugin.TBContext( db_module=db_module, db_connection_provider=db_connection_provider, db_uri=db_uri, flags=flags, logdir=logdir, multiplexer=multiplexer, assets_zip_provider=assets_zip_provider, plugin_name_to_instance=plugin_name_to_instance, window_title=window_title) plugin_instances = [constructor(context) for constructor in plugins] for plugin_instance in plugin_instances: plugin_name_to_instance[plugin_instance.plugin_name] = plugin_instance return TensorBoardWSGIApp( logdir, plugin_instances, multiplexer, reload_interval, path_prefix)
def run(self): # Remove http messages logging.getLogger("werkzeug").setLevel(logging.CRITICAL) logging.getLogger("tensorflow").setLevel(logging.CRITICAL) # Start tensorboard server tb = program.TensorBoard(default.get_plugins(), default.get_assets_zip_provider()) tb.configure(argv=[None, "--logdir", self.dir_path, "--port", str(self.port)]) url = tb.launch() print("TensorBoard at %s/#scalars&_smoothingWeight=0" % url)
def run_v1_10(self): # Remove http messages log = logging.getLogger('werkzeug') log.setLevel(logging.ERROR) # Start tensorboard server tb = program.TensorBoard(default.PLUGIN_LOADERS, default.get_assets_zip_provider()) tb.configure(argv=['--logdir', self.dir_path]) url = tb.launch() sys.stdout.write('TensorBoard at %s \n' % url)
def standard_tensorboard_wsgi( logdir, purge_orphaned_data, reload_interval, plugins, db_uri="", assets_zip_provider=None, path_prefix=""): """Construct a TensorBoardWSGIApp with standard plugins and multiplexer. Args: logdir: The path to the directory containing events files. purge_orphaned_data: Whether to purge orphaned data. reload_interval: The interval at which the backend reloads more data in seconds. plugins: A list of constructor functions for TBPlugin subclasses. path_prefix: A prefix of the path when app isn't served from root. db_uri: A String containing the URI of the SQL database for persisting data, or empty for memory-only mode. assets_zip_provider: See TBContext documentation for more information. If this value is not specified, this function will attempt to load the `tensorboard.default` module to use the default. This behavior might be removed in the future. Returns: The new TensorBoard WSGI application. """ if assets_zip_provider is None: from tensorboard import default assets_zip_provider = default.get_assets_zip_provider() multiplexer = event_multiplexer.EventMultiplexer( size_guidance=DEFAULT_SIZE_GUIDANCE, tensor_size_guidance=DEFAULT_TENSOR_SIZE_GUIDANCE, purge_orphaned_data=purge_orphaned_data) db_module, db_connection_provider = get_database_info(db_uri) if db_connection_provider is not None: with contextlib.closing(db_connection_provider()) as db_conn: schema = db.Schema(db_conn) schema.create_tables() schema.create_indexes() plugin_name_to_instance = {} context = base_plugin.TBContext( db_module=db_module, db_connection_provider=db_connection_provider, logdir=logdir, multiplexer=multiplexer, assets_zip_provider=assets_zip_provider, plugin_name_to_instance=plugin_name_to_instance) plugin_instances = [constructor(context) for constructor in plugins] for plugin_instance in plugin_instances: plugin_name_to_instance[plugin_instance.plugin_name] = plugin_instance return TensorBoardWSGIApp( logdir, plugin_instances, multiplexer, reload_interval, path_prefix)
def create_tb_app(log): return backendWSGI.standard_tensorboard_wsgi( assets_zip_provider=default.get_assets_zip_provider(), db_uri='', logdir=os.path.expanduser(log), purge_orphaned_data=True, reload_interval=5, plugins=default.get_plugins(), path_prefix='', window_title='', max_reload_threads=1, flags='')
def run_main(): """Initializes flags and calls main().""" program.setup_environment() tensorboard = program.TensorBoard(default.get_plugins(), default.get_assets_zip_provider()) try: from absl import app app.run(tensorboard.main, flags_parser=tensorboard.configure) raise AssertionError("absl.app.run() shouldn't return") except ImportError: pass tensorboard.configure(sys.argv) sys.exit(tensorboard.main())
def run(self, emb_name, port): # Remove http messages # log = logging.getLogger('sonvx').setLevel(logging.INFO) logging.basicConfig(level=logging.INFO) logging.propagate = False # Start tensorboard server tb = program.TensorBoard(default.get_plugins(), default.get_assets_zip_provider()) tb.configure( argv=[None, '--logdir', self.dir_path, '--port', str(port)]) url = tb.launch() sys.stdout.write('TensorBoard of %s at %s \n' % (emb_name, url))
def run(self): # Remove http messages log = logging.getLogger('werkzeug').setLevel(logging.ERROR) logging.getLogger("tensorflow").setLevel(logging.WARNING) # Start tensorboard server tb = program.TensorBoard(default.get_plugins(), default.get_assets_zip_provider()) tb.configure(argv=[ None, '--logdir', self.dir_path, '--port', str(self.port) ]) url = tb.launch() print('TensorBoard at %s \n' % url)
def create_tb_app(logdir, reload_interval, purge_orphaned_data): argv = [ "--logdir", logdir, "--reload_interval", str(reload_interval), "--purge_orphaned_data", str(purge_orphaned_data), ] tensorboard = program.TensorBoard( default.PLUGIN_LOADERS, default.get_assets_zip_provider()) tensorboard.configure(argv) return application.standard_tensorboard_wsgi( tensorboard.flags, tensorboard.plugin_loaders, tensorboard.assets_zip_provider)
def run_main(): """Initializes flags and calls main().""" program.setup_environment() tensorboard = program.TensorBoard(default.get_plugins(), default.get_assets_zip_provider()) try: from absl import app # Import this to check that app.run() will accept the flags_parser argument. from absl.flags import argparse_flags app.run(tensorboard.main, flags_parser=tensorboard.configure) raise AssertionError("absl.app.run() shouldn't return") except ImportError: pass tensorboard.configure(sys.argv) sys.exit(tensorboard.main())
def run_main(): """Initializes flags and calls main().""" program.setup_environment() server = program.TensorBoard(default.PLUGIN_LOADERS, default.get_assets_zip_provider()) server.configure(sys.argv[1:]) try: from absl import app app.run(server.main, sys.argv[:1] + server.unparsed_argv) raise AssertionError("absl.app.run() shouldn't return") except ImportError: pass if server.unparsed_argv: sys.stderr.write('Unknown flags: %s\nPass --help for help.\n' % (server.unparsed_argv, )) sys.exit(1) sys.exit(server.main())
def setUp(self): self.context = None # The application should have added routes for both plugins. self.app = application.standard_tensorboard_wsgi( FakeFlags(logdir=self.get_temp_dir()), [ base_plugin.BasicLoader( functools.partial( FakePlugin, plugin_name='foo', is_active_value=True, routes_mapping={'/foo_route': self._foo_handler}, construction_callback=self._construction_callback)), base_plugin.BasicLoader( functools.partial( FakePlugin, plugin_name='bar', is_active_value=True, routes_mapping={'/bar_route': self._bar_handler}, construction_callback=self._construction_callback)), ], default.get_assets_zip_provider())
def run(self): tb = program.TensorBoard(default.get_plugins(), default.get_assets_zip_provider()) tb.configure(argv=[None, '--logdir', self.dir_path]) url = tb.launch() print('TensorBoard at %s \n' % url)
from tensorboard import default from tensorboard import program from argparse import ArgumentParser # import socket import time usage = 'Usage: python tensorb [--logdir] [--host]' argparser = ArgumentParser(usage=usage) argparser.add_argument('--logdir', type=str, help='') argparser.add_argument('--host', type=str, help='') args = argparser.parse_args() argv = [None, '--logdir', args.logdir, '--host', args.host] #print(argv) tb = program.TensorBoard(default.get_plugins(), default.get_assets_zip_provider()) tb.configure(argv=argv) tb.launch() try: while True: time.sleep(10) except KeyboardInterrupt: print('Tensorboard interrupted!')
def standard_tensorboard_wsgi( logdir, purge_orphaned_data, reload_interval, plugins, db_uri="", assets_zip_provider=None, path_prefix="", window_title="", max_reload_threads=None, flags=None): """Construct a TensorBoardWSGIApp with standard plugins and multiplexer. Args: logdir: The path to the directory containing events files. purge_orphaned_data: Whether to purge orphaned data. reload_interval: The interval at which the backend reloads more data in seconds. Zero means load once at startup; negative means never load. plugins: A list of constructor functions for TBPlugin subclasses. db_uri: A String containing the URI of the SQL database for persisting data, or empty for memory-only mode. assets_zip_provider: See TBContext documentation for more information. If this value is not specified, this function will attempt to load the `tensorboard.default` module to use the default. This behavior might be removed in the future. path_prefix: A prefix of the path when app isn't served from root. window_title: A string specifying the the window title. max_reload_threads: The max number of threads that TensorBoard can use to reload runs. Not relevant for db mode. Each thread reloads one run at a time. flags: A dict of the runtime flags provided to the application, or None. Returns: The new TensorBoard WSGI application. """ if assets_zip_provider is None: from tensorboard import default assets_zip_provider = default.get_assets_zip_provider() multiplexer = event_multiplexer.EventMultiplexer( size_guidance=DEFAULT_SIZE_GUIDANCE, tensor_size_guidance=tensor_size_guidance_from_flags(flags), purge_orphaned_data=purge_orphaned_data, max_reload_threads=max_reload_threads) db_module, db_connection_provider = get_database_info(db_uri) # In DB mode, always disable loading event files. if db_connection_provider: reload_interval = -1 plugin_name_to_instance = {} context = base_plugin.TBContext( db_module=db_module, db_connection_provider=db_connection_provider, db_uri=db_uri, flags=flags, logdir=logdir, multiplexer=multiplexer, assets_zip_provider=assets_zip_provider, plugin_name_to_instance=plugin_name_to_instance, window_title=window_title) plugin_instances = [constructor(context) for constructor in plugins] for plugin_instance in plugin_instances: plugin_name_to_instance[plugin_instance.plugin_name] = plugin_instance return TensorBoardWSGIApp( logdir, plugin_instances, multiplexer, reload_interval, path_prefix)