準備訓練任務以收集 TensorBoard 輸出資料 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

準備訓練任務以收集 TensorBoard 輸出資料

SageMaker AI 中,機器學習的典型訓練任務包含兩個主要步驟:準備訓練指令碼和設定 SageMaker AI Python SDK 的 SageMaker AI 估算器物件。在本節中,您將了解所需的變更,以便從 SageMaker 訓練任務中收集與 TensorBoard 相容的資料。

先決條件

下列清單顯示開始使用 SageMaker AI 與 TensorBoard 的先決條件。

  • 在您的AWS帳戶中使用 Amazon VPC 設定的 SageMaker 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、TensorFlow 摘要寫入器、PyTorch 摘要寫入器或 SageMaker Debugger。

此外,請務必將 TensorBoard 資料輸出路徑,指定為訓練容器中回調的日誌目錄 (log_dir)。

如需每個架構回調的更多相關資訊,請參閱下列資源。

步驟 2:使用 TensorBoard 輸出組態建立 SageMaker 訓練估算器物件

在設定 SageMaker AI 架構估算器時使用 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 AI 超參數調校任務支援,因為 CreateHyperParameterTuningJob API 未與映射的 TensorBoard 輸出組態整合。若要將 TensorBoard 應用程式用於超參數調校任務,您需要在訓練指令碼中撰寫將指標上傳至 Amazon S3 的程式碼。將指標上傳至 Amazon S3 儲存貯體後,您就可以將儲存貯體載入 SageMaker AI 上的 TensorBoard 應用程式。