准备训练作业以收集 TensorBoard 输出数据 - 亚马逊 SageMaker AI

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

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

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

先决条件

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

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

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

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

    • 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 对象

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

注意

此示例假设您使用的是 SageMaker Python 开发工具包。如果您使用低级 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 AI 超参数调整作业,因为 CreateHyperParameterTuningJobAPI 未与映射的 TensorBoard 输出配置集成。要将该 TensorBoard应用程序用于超参数调整任务,您需要在训练脚本中编写用于将指标上传到 Amazon S3 的代码。将指标上传到 Amazon S3 存储桶后,您就可以在 A SageMaker I 上将该存储桶加载到 TensorBoard 应用程序中。