准备收集 TensorBoard 输出数据的训练作业 - Amazon SageMaker

准备收集 TensorBoard 输出数据的训练作业

SageMaker 机器学习的典型训练作业包括两个主要步骤:准备训练脚本和配置 SageMaker Python SDK 的 SageMaker 估算器对象。本节将介绍从 SageMaker 训练作业中收集与 TensorBoard 兼容数据所需的更改。

先决条件

以下列表显示了开始使用 SageMaker with TensorBoard 的先决条件。

  • 在您的 AWS 账户中使用 Amazon VPC 设置的 SageMaker 域。

    有关设置域的说明,请参阅使用快速设置功能登录 Amazon SageMaker 域。您还需要为单个用户添加域用户配置文件,以便访问 TensorBoard on SageMaker。有关更多信息,请参阅 添加用户配置文件

  • 以下列表显示了一组用于使用 TensorBoard on SageMaker 的最低权限。

    • sagemaker:CreateApp

    • sagemaker:DeleteApp

    • sagemaker:DescribeTrainingJob

    • sagemaker:Search

    • s3:GetObject

    • s3:ListBucket

步骤 1:使用开源 TensorBoard 辅助工具修改训练脚本

请您务必确定要收集哪些输出张量和标量,并使用以下任意工具修改训练脚本中的代码行:TensorBoardX、TensorFlow Summary Writer、PyTorch Summary Writer 或 SageMaker Debugger。

此外,请务必将 TensorBoard 数据输出路径指定为用于在训练容器中回调的日志目录 (log_dir)。

有关每个框架的回调的更多信息,请参阅以下资源。

步骤 2:使用 TensorBoard 输出配置创建 SageMaker 训练估算器对象

在配置 SageMaker 框架估算器时使用 sagemaker.debugger.TensorBoardOutputConfig。此配置 API 将您指定用于保存 TensorBoard 数据的 S3 存储桶映射到训练容器中的本地路径 (/opt/ml/output/tensorboard)。将模块的对象传递给估算器类的 tensorboard_output_config 参数。以下代码段显示一个使用 TensorBoard 输出配置参数准备 TensorFlow 估算器的示例。

注意

此示例假定您使用 SageMaker Python SDK。如果您使用低级 SageMaker API,则应在 CreateTrainingJob API 的请求语法中加入以下内容。

"TensorBoardOutputConfig": { "LocalPath": "/opt/ml/output/tensorboard", "S3OutputPath": "s3_output_bucket" }
from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import TensorBoardOutputConfig # Set variables for training job information, # such as s3_out_bucket and other unique tags. ... LOG_DIR="/opt/ml/output/tensorboard" output_path = os.path.join( "s3_output_bucket", "sagemaker-output", "date_str", "your-training_job_name" ) tensorboard_output_config = TensorBoardOutputConfig( s3_output_path=os.path.join(output_path, 'tensorboard'), container_local_output_path=LOG_DIR ) estimator = TensorFlow( entry_point="train.py", source_dir="src", role=role, image_uri=image_uri, instance_count=1, instance_type="ml.c5.xlarge", base_job_name="your-training_job_name", tensorboard_output_config=tensorboard_output_config, hyperparameters=hyperparameters )
注意

TensorBoard 应用程序不为 SageMaker 超参数调整作业提供开箱即用的支持,因为 CreateHyperParameterTuningJob API 未与 TensorBoard 的映射输出配置集成。要将 TensorBoard 应用程序用于超参数调整作业,您需要在训练脚本中编写将指标上传到 Amazon S3 的代码。将指标上传到 Amazon S3 存储桶后,就可以将存储桶加载到 SageMaker 上的 TensorBoard 应用程序中。