本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
準備訓練任務以收集 TensorBoard 輸出資料
機器學習在 SageMaker AI 中的典型訓練任務包含兩個主要步驟:準備訓練指令碼和設定 SageMaker AI Python 的 SageMaker AI 估算器物件SDK。在本節中,您將了解從 SageMaker 訓練任務中收集 TensorBoard相容 資料所需的變更。
必要條件
下列清單顯示開始使用 SageMaker AI 的先決條件 TensorBoard。
-
VPC AWS 帳戶中使用 Amazon 設定的 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 偵錯器。
此外,請確定您指定 TensorBoard 資料輸出路徑做為訓練容器中回呼的日誌目錄 (log_dir
)。
如需每個架構回調的更多相關資訊,請參閱下列資源。
-
對於 PyTorch,請使用 torch.utils.tensorboard。SummaryWriter
另請參閱PyTorch教學課程中的使用 TensorBoard 和 PyTorch 記錄純量 章節。或者,您可以使用 TensorBoardX Summary Writer 。 LOG_DIR="/opt/ml/output/tensorboard" tensorboard_callback=torch.utils.tensorboard.writer.SummaryWriter(log_dir=LOG_DIR)
-
對於 TensorFlow,使用原生回呼 TensorBoard,tf.keras.callbacks。TensorBoard
LOG_DIR="/opt/ml/output/tensorboard" tensorboard_callback=tf.keras.callbacks.TensorBoard( log_dir=LOG_DIR, histogram_freq=1)
-
對於搭配 的轉換器 PyTorch,您可以使用 transformers.integrations.TensorBoardCallback
。 對於具有 的轉換器 TensorFlow,請使用
tf.keras.tensorboard.callback
,並將其傳遞至轉換器中的角回呼。提示
您也可以使用不同的容器本機輸出路徑。不過,在 中步驟 2:使用 TensorBoard 輸出組態建立 SageMaker 訓練估算器物件,您必須正確對應 SageMaker AI 的路徑,才能成功搜尋本機路徑,並將 TensorBoard 資料儲存至 S3 輸出儲存貯體。
-
如需使用 SageMaker Debugger Python 程式庫修改訓練指令碼的指引,請參閱 調整訓練指令碼以註冊勾點。
步驟 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 應用程式不支援 out-of-the-box SageMaker AI 超參數調校任務,因為 CreateHyperParameterTuningJob
API 未與映射的 TensorBoard 輸出組態整合。若要使用 TensorBoard應用程式進行超參數調校任務,您需要在訓練指令碼中編寫程式碼,以將指標上傳至 Amazon S3。將指標上傳至 Amazon S3 儲存貯體後,您就可以將儲存貯體載入 SageMaker AI 上的 TensorBoard 應用程式。