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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

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

先决条件

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

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

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

  • 以下列表是在 TensorBoard 上使用的最低权限集 SageMaker。

    • sagemaker:CreateApp

    • sagemaker:DeleteApp

    • sagemaker:DescribeTrainingJob

    • sagemaker:Search

    • s3:GetObject

    • s3:ListBucket

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

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

另外,请确保将 TensorBoard 数据输出路径指定为训练容器中回调的日志目录 (log_dir)。

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

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

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

注意

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

"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 应用程序不 out-of-the-box支持 SageMaker超参数调整作业,因为CreateHyperParameterTuningJobAPI未与映射的 TensorBoard 输出配置集成。要将该 TensorBoard应用程序用于超参数调整任务,您需要在训练脚本中编写用于将指标上传到 Amazon S3 的代码。将指标上传到 Amazon S3 存储桶后,您就可以将该存储桶加载到 TensorBoard 应用程序中 SageMaker。