Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Preparación de un trabajo de entrenamiento para recopilar los datos de salida de TensorBoard
Un trabajo de entrenamiento típico para machine learning en SageMaker AI consta de dos pasos principales: la preparación de un script de entrenamiento y la configuración de un objeto estimator de SageMaker AI del SageMaker AI Python SDK. En esta sección, conocerá los cambios necesarios para recopilar datos compatibles con TensorBoard de los trabajos de entrenamiento de SageMaker.
Requisitos previos
En la siguiente lista se muestran los requisitos previos para empezar a utilizar SageMaker AI con TensorBoard.
-
Dominio de SageMaker AI configurado con Amazon VPC en la cuenta de AWS
Para obtener instrucciones sobre cómo configurar un dominio, consulte Onboard to Amazon SageMaker AI domain using quick setup. También debe agregar perfiles de usuario de dominio para que los usuarios individuales puedan acceder a TensorBoard con SageMaker AI. Para obtener más información, consulte Adición de perfiles de usuario.
-
La siguiente lista indica el conjunto mínimo de permisos para usar TensorBoard en SageMaker AI.
-
sagemaker:CreateApp -
sagemaker:DeleteApp -
sagemaker:DescribeTrainingJob -
sagemaker:Search -
s3:GetObject -
s3:ListBucket
-
Paso 1: modificación del script de entrenamiento con las herramientas auxiliares de TensorBoard de código abierto
Asegúrese de determinar qué escalares y tensores de salida desea recopilar, y modifique las líneas de código del script de entrenamiento con cualquiera de las siguientes herramientas: TensorBoardX, TensorFlow Summary Writer, PyTorch Summary Writer o SageMaker Debugger.
Asegúrese también de especificar la ruta de salida de datos de TensorBoard como el directorio de registro (log_dir) para la devolución de llamadas en el contenedor de entrenamiento.
Para obtener más información sobre las devoluciones de llamadas por marco, consulte los siguientes recursos.
-
Para PyTorch, use torch.utils.tensorboard.SummaryWriter
. Consulte además las secciones Using TensorBoard in PyTorch y Log scalars en los tutoriales de PyTorch. También puede usar TensorBoardX Summary Writer . LOG_DIR="/opt/ml/output/tensorboard" tensorboard_callback=torch.utils.tensorboard.writer.SummaryWriter(log_dir=LOG_DIR) -
Para TensorFlow, use la devolución de llamada nativa de TensorBoard, tf.keras.callbacks.TensorBoard
. LOG_DIR="/opt/ml/output/tensorboard" tensorboard_callback=tf.keras.callbacks.TensorBoard( log_dir=LOG_DIR, histogram_freq=1) -
Para transformadores con PyTorch, puede usar transformers.integrations.TensorBoardCallback
. Para transformadores con TensorFlow, use
tf.keras.tensorboard.callbacky páselo a la devolución de llamada de keras en los transformadores.sugerencia
También puede usar una ruta de salida local de contenedor diferente. Sin embargo, en Paso 2: creación de un objeto de estimador de entrenamiento de SageMaker con la configuración de salida de TensorBoard, debe asignar las rutas correctamente para que SageMaker AI busque correctamente la ruta local y guarde los datos de TensorBoard en el bucket de salida de S3.
-
Para obtener instrucciones sobre cómo modificar los scripts de entrenamiento mediante la biblioteca de Python del depurador de SageMaker, consulte Adaptación del script de entrenamiento para registrar un enlace.
Paso 2: creación de un objeto de estimador de entrenamiento de SageMaker con la configuración de salida de TensorBoard
Use sagemaker.debugger.TensorBoardOutputConfig al configurar un estimador de marco de SageMaker AI. Esta API de configuración asigna el bucket de S3 que especifica para guardar los datos de TensorBoard con la ruta local en el contenedor de entrenamiento (/opt/ml/output/tensorboard). Transfiere el objeto del módulo al parámetro tensorboard_output_config de la clase estimator. En el siguiente fragmento de código, se muestra un ejemplo de cómo preparar un estimador de TensorFlow con el parámetro de configuración de salida de TensorBoard.
nota
En este ejemplo, se presupone que utiliza el SageMaker Python SDK. Si utiliza la API de SageMaker de nivel bajo, debe incluir lo siguiente en la sintaxis de solicitud de la API CreateTrainingJob.
"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)
nota
La aplicación TensorBoard no ofrece compatibilidad inmediata con los trabajos de ajuste de hiperparámetros de SageMaker AI, ya que la API CreateHyperParameterTuningJob no está integrada con la configuración de salida de TensorBoard para la asignación. Para usar la aplicación TensorBoard para trabajos de afinación de hiperparámetros, debe escribir el código para cargar métricas en Amazon S3 en su script de entrenamiento. Una vez que las métricas se cargan en un bucket de Amazon S3, puede cargar el bucket en la aplicación TensorBoard de SageMaker AI.