首页 > 解决方案 > Azure ML 包启动的 Tensorboard 无法正常工作

问题描述

我想访问在训练期间创建并存储在 Azure ML 服务日志中的 tfevent 文件。此 tfevent 文件可以在普通张量板上正确访问和显示,因此文件不会损坏,但是当我使用 Azure ML 的张量板库访问它时,本地张量板上没有任何显示或连接被拒绝。

我首先将它登录到 ./logs/tensorboard,就像 Azure ML 有 ./logs/azureml 但 Azure ML 的模块启动的 tensorboard 说在浏览器上没有像下面这样显示的文件。

No dashboards are active for the current data set.
Probable causes:

You haven’t written any data to your event files.
TensorBoard can’t find your event files.
If you’re new to using TensorBoard, and want to find out how to add data and set up your event files, check out the README and perhaps the TensorBoard tutorial.
If you think TensorBoard is configured properly, please see the section of the README devoted to missing data problems and consider filing an issue on GitHub.

Last reload: Wed Aug 21 2019 *****
Data location: /tmp/tmpkfj7gswu

所以我认为保存的位置不会被 AML 识别,我将保存位置更改为 ./logs 然后浏览器显示“无法访问此站点。****** 拒绝连接。”

我的 Azure ML Python SDK 版本是 1.0.57

1)我该如何解决这个问题?

2)我应该在哪里保存 tfevent 文件以便 AML 识别它?我在此处的文档中找不到有关它的任何信息。 https://docs.microsoft.com/en-us/python/api/azureml-tensorboard/azureml.tensorboard.tensorboard?view=azure-ml-py

这就是我通过 Azure ML 启动 tensorboard 的方式。

if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description=f'This script is to lanuch TensorBoard with '
        f'accessing run history from machine learning '
        f'experiments that output Tensorboard logs')
    parser.add_argument('--experiment-name',
                        dest='experiment_name',
                        type=str,
                        help='experiment name in Azure ML')
    parser.add_argument('--run-id',
                        dest='run_id',
                        type=str,
                        help='The filename of merged json file.')

    args = parser.parse_args()

    logger = get_logger(__name__)
    logger.info(f'SDK Version: {VERSION}')

    workspace = get_workspace()
    experiment_name = args.experiment_name
    run_id = args.run_id
    experiment = get_experiment(experiment_name, workspace, logger)
    run = get_run(experiment, run_id)

    # The Tensorboard constructor takes an array of runs, so pass it in as a single-element array here
    tb = Tensorboard([run])

    # If successful, start() returns a string with the URI of the instance.
    url = tb.start()
    print(url)

标签: pythonazureazure-machine-learning-service

解决方案


AzureML 中的 Tensorboard 支持的设计方式如下:

  1. 在 AMLCluster 或附加的 VM 上训练模型并将 Tensorboard 日志文件写入./logs目录(请参阅此处以获取要运行的脚本示例)。
from azureml.train.dnn import TensorFlow

script_params = {"--log_dir": "./logs"}

# If you want the run to go longer, set --max-steps to a higher number.
# script_params["--max_steps"] = "5000"

tf_estimator = TensorFlow(source_directory=exp_dir,
                          compute_target=attached_dsvm_compute,
                          entry_script='mnist_with_summaries.py',
                          script_params=script_params)

run = exp.submit(tf_estimator)
  1. 在您的本地计算机或笔记本虚拟机上,您启动azureml.tensorboard.Tensorboard实例,然后该实例将不断从运行中提取日志并将它们写入本地磁盘。它还将启动一个 Tensorboard 实例,您可以将浏览器指向该实例。
tb = Tensorboard(run)
# If successful, start() returns a string with the URI of the instance.
tb.start()

如果在您的本地计算机上完成,URL 将是http://localhost:6000(或您的计算机主机名),在笔记本 VM 上,URL 将采用以下形式https://vmname-6000.westeurope.notebooks.azureml.net/

下面是如何在 AzureML 中执行运行的图表。#6 和 #7 是此处的相关点,说明了 Tensorboard 日志如何从计算目标传输到运行实际 Tensorboard 的机器。在这种情况下是“我的电脑”,但也可以是 NotebookVM。 在此处输入图像描述


推荐阅读