如何在 AWS Sagemaker 中使用 Tensorboard
How to use Tensorboard in AWS Sagemaker
我指的是以下链接以在 Sagemaker 脚本模式方法中使用 Tensorboard。
https://www.tensorflow.org/tensorboard/get_started
下面是我的训练脚本中的 tensorboard 回调,它是一个 .py 文件
model = create_model()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)
model.fit(x=x_train,
y=y_train,
epochs=5,
validation_data=(x_test, y_test),
callbacks=[tensorboard_callback])
在笔记本中,我正在创建下面的 Tensorflow Estimator,我将上面的脚本文件名作为 entry_point.
传递
estimator = TensorFlow(
entry_point='Script_File.py',
train_instance_type=train_instance_type,
train_instance_count=1,
model_dir=model_dir,
hyperparameters=hyperparameters,
role=sagemaker.get_execution_role(),
base_job_name='tf-fashion-mnist',
framework_version='1.12.0',
py_version='py3',
output_path=<S3 Path>,
script_mode=True,
)
我在笔记本中使用以下代码开始训练。
estimator.fit(inputs)
训练完成后,我在终端中使用以下代码(也在我的笔记本单元中尝试过)来启动张量板。
tensorboard --logdir logs/fit
但是在张量板上我无法查看任何图表。它显示消息“无法获取运行”。
有什么我想念的吗?或者我是否必须在我的脚本中进行任何额外设置才能在 Tensorboard 中查看我的日志?
您的张量板 logdir
不是 logs/fit
.. 但附加了当前日期。尝试将 logs/fit
用作 log_dir
,看看它是否有效。
编辑
如果您想在本地使用 tensorboard,您必须将 tensorboard 日志发送到 S3 并从那里读取。为了做到这一点,你必须做你的第三个链接示例所做的,所以包括 sagemaker 调试器:
from sagemaker.debugger import TensorBoardOutputConfig
tensorboard_output_config = TensorBoardOutputConfig(
s3_output_path='s3://path/for/tensorboard/data/emission',
container_local_output_path='/local/path/for/tensorboard/data/emission'
)
那么你的 tensorboard 命令将类似于:
AWS_REGION= <your-region> AWS_LOG_LEVEL=3 tensorboard --logdir
s3://path/for/tensorboard/data/emission
或者,如果你想在 notebook 中使用 tensorboard,你必须执行第二个链接示例所做的操作,所以只需安装在一个单元格中,然后 运行 tensorboard 使用类似的东西:
https://<笔记本实例主机名>/proxy/6006/
我指的是以下链接以在 Sagemaker 脚本模式方法中使用 Tensorboard。
https://www.tensorflow.org/tensorboard/get_started
下面是我的训练脚本中的 tensorboard 回调,它是一个 .py 文件
model = create_model()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)
model.fit(x=x_train,
y=y_train,
epochs=5,
validation_data=(x_test, y_test),
callbacks=[tensorboard_callback])
在笔记本中,我正在创建下面的 Tensorflow Estimator,我将上面的脚本文件名作为 entry_point.
传递estimator = TensorFlow(
entry_point='Script_File.py',
train_instance_type=train_instance_type,
train_instance_count=1,
model_dir=model_dir,
hyperparameters=hyperparameters,
role=sagemaker.get_execution_role(),
base_job_name='tf-fashion-mnist',
framework_version='1.12.0',
py_version='py3',
output_path=<S3 Path>,
script_mode=True,
)
我在笔记本中使用以下代码开始训练。
estimator.fit(inputs)
训练完成后,我在终端中使用以下代码(也在我的笔记本单元中尝试过)来启动张量板。
tensorboard --logdir logs/fit
但是在张量板上我无法查看任何图表。它显示消息“无法获取运行”。 有什么我想念的吗?或者我是否必须在我的脚本中进行任何额外设置才能在 Tensorboard 中查看我的日志?
您的张量板 logdir
不是 logs/fit
.. 但附加了当前日期。尝试将 logs/fit
用作 log_dir
,看看它是否有效。
编辑
如果您想在本地使用 tensorboard,您必须将 tensorboard 日志发送到 S3 并从那里读取。为了做到这一点,你必须做你的第三个链接示例所做的,所以包括 sagemaker 调试器:
from sagemaker.debugger import TensorBoardOutputConfig
tensorboard_output_config = TensorBoardOutputConfig( s3_output_path='s3://path/for/tensorboard/data/emission', container_local_output_path='/local/path/for/tensorboard/data/emission' )
那么你的 tensorboard 命令将类似于:
AWS_REGION= <your-region> AWS_LOG_LEVEL=3 tensorboard --logdir s3://path/for/tensorboard/data/emission
或者,如果你想在 notebook 中使用 tensorboard,你必须执行第二个链接示例所做的操作,所以只需安装在一个单元格中,然后 运行 tensorboard 使用类似的东西:
https://<笔记本实例主机名>/proxy/6006/