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.
Ejecutar trabajos de entrenamiento de TensorFlow con el Compilador de entrenamiento de SageMaker
Puede utilizar cualquiera de las interfaces de SageMaker AI para ejecutar un trabajo de entrenamiento con el Compilador de entrenamiento de SageMaker: Amazon SageMaker Studio Classic, instancias de cuadernos de Amazon SageMaker, AWS SDK para Python (Boto3) y AWS Command Line Interface.
Temas
Uso de SageMaker Python SDK
Para activar el Compilador de entrenamiento de SageMaker, añada el parámetro compiler_config al estimador TensorFlow o Hugging Face de SageMaker AI. Importe la clase TrainingCompilerConfig y pase una instancia de ella al parámetro compiler_config. Los siguientes ejemplos de código muestran la estructura de las clases de estimador de SageMaker AI con el Compilador de entrenamiento de SageMaker activado.
sugerencia
Para empezar con los modelos prediseñados proporcionados por las bibliotecas TensorFlow y Transformers, pruebe a usar los tamaños de lote que se proporcionan en la tabla de referencia en Modelos probados.
nota
El Compilador de entrenamiento de SageMaker para TensorFlow está disponible a través de los estimadores de marco TensorFlow
Para obtener información que se adapte a su caso de uso, consulte una de las siguientes opciones.
La siguiente lista es el conjunto mínimo de parámetros necesarios para ejecutar un trabajo de entrenamiento de SageMaker con el compilador.
nota
Al utilizar el estimador Hugging Face de SageMaker AI, debe especificar los parámetros transformers_version, tensorflow_version, hyperparameters y compiler_config para activar el Compilador de entrenamiento de SageMaker. No puede utilizar image_uri para especificar manualmente los contenedores de aprendizaje profundo integrados en el Compilador de entrenamiento que aparecen en Marcos admitidos.
-
entry_point(str): obligatorio. Especifique el nombre de archivo de su script de entrenamiento. -
instance_count(int): obligatorio. Especifique el número de instancias. -
instance_type(str): obligatorio. Especifique el tipo de instancia. -
transformers_version(str): necesario únicamente cuando se utiliza el estimador Hugging Face de SageMaker AI. Especifique la versión de la biblioteca Hugging Face Transformers compatible con el Compilador de entrenamiento de SageMaker. Para buscar las versiones disponibles, consulte Marcos admitidos. -
framework_versionortensorflow_version(str): obligatorio. Especifique la versión de TensorFlow compatible con el Compilador de entrenamiento de SageMaker. Para buscar las versiones disponibles, consulte Marcos admitidos.nota
Al utilizar el estimador TensorFlow de SageMaker AI, debe especificar
framework_version.Al utilizar el estimador Hugging Face de SageMaker AI, debe especificar tanto
transformers_versioncomotensorflow_version. -
hyperparameters(dict): opcional. Especifique los hiperparámetros para el trabajo de entrenamiento, comon_gpus,batch_sizeylearning_rate. Al activar el Compilador de entrenamiento de SageMaker, pruebe con lotes más grandes y ajuste la velocidad de aprendizaje en consecuencia. Para encontrar casos prácticos sobre el uso del compilador y los tamaños de lote ajustados para mejorar la velocidad de entrenamiento, consulte Modelos probados y Ejemplos de cuadernos y blogs del compilador de entrenamiento SageMaker. -
compiler_config(objeto TrainingCompilerConfig): obligatorio. Incluya este parámetro para activar el Compilador de entrenamiento de SageMaker. A continuación se incluyen los parámetros para la claseTrainingCompilerConfig.-
enabled(bool): opcional. EspecifiqueTrueoFalsepara activar o desactivar el Compilador de entrenamiento de SageMaker. El valor predeterminado esTrue. -
debug(bool): opcional. Para recibir registros de entrenamiento más detallados de sus trabajos de entrenamiento acelerados por el compilador, cámbielo aTrue. Sin embargo, el registro adicional podría añadir una sobrecarga y ralentizar el trabajo de entrenamiento compilado. El valor predeterminado esFalse.
-
aviso
Si activa Depurador de SageMaker, podría afectar al rendimiento de Compilador de entrenamiento de SageMaker. Le recomendamos que desactive el Depurador cuando ejecute el Compilador de entrenamiento de SageMaker para asegurarse de que no se vea afectado el rendimiento. Para obtener más información, consulte Consideraciones. Para desactivar las funcionalidades del Depurador, añada los dos argumentos siguientes al estimador:
disable_profiler=True, debugger_hook_config=False
Si el trabajo de entrenamiento con el compilador se ha iniciado correctamente, recibirá los siguientes registros durante la fase de inicialización del trabajo:
-
Con
TrainingCompilerConfig(debug=False)Found configuration for Training Compiler Configuring SM Training Compiler... -
Con
TrainingCompilerConfig(debug=True)Found configuration for Training Compiler Configuring SM Training Compiler... Training Compiler set to debug mode
Uso del SageMaker AI Python SDK y ampliación de los contenedores de aprendizaje profundo de marco de SageMaker AI
AWSLos Contenedores de aprendizaje profundo (DLC) para TensorFlow utilizan versiones adaptadas de TensorFlow que incluyen cambios en la estructura de código abierto de TensorFlow. Los Contenedores de aprendizaje profundo de marco de SageMaker AI
nota
Esta característica de personalización de Docker actualmente solo está disponible para TensorFlow.
Para ampliar y personalizar los DLC TensorFlow de SageMaker AI para su caso de uso, siga las instrucciones siguientes.
Cree un archivo Dockerfile.
Utilice la siguiente plantilla de Dockerfile para ampliar el DLC TensorFlow de SageMaker AI. Debe usar la imagen DLC TensorFlow de SageMaker AI como imagen base del contenedor de Docker. Para encontrar los URI de imagen del DLC TensorFlow de SageMaker AI, consulte Marcos compatibles.
# SageMaker AI TensorFlow Deep Learning Container image FROM 763104351884.dkr.ecr.<aws-region>.amazonaws.com/tensorflow-training:<image-tag>ENV PATH="/opt/ml/code:${PATH}" # This environment variable is used by the SageMaker AI container # to determine user code directory. ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code # Add more code lines to customize for your use-case ...
Para obtener más información, consulte Paso 2: Crear y cargar los scripts de entrenamiento de Dockerfile y Python.
Tenga en cuenta las siguientes dificultades a la hora de ampliar los DLC de marco de SageMaker AI:
-
No desinstale ni cambie explícitamente la versión de los paquetes de TensorFlow en contenedores de SageMaker AI. Si lo hace, los paquetes de TensorFlow optimizados de AWS se sobrescriban con paquetes de TensorFlow de código abierto, lo que podría provocar una degradación del rendimiento.
-
Tenga cuidado con los paquetes que tengan una versión o un tipo de TensorFlow en particular como dependencia. Estos paquetes pueden desinstalar implícitamente el TensorFlow optimizado de AWS e instalar paquetes de TensorFlow de código abierto.
Por ejemplo, existe un problema conocido por el que las bibliotecas tensorflow/modelstensorflow/training/docker/<tensorflow-version>/py3/<cuda-version>/Dockerfile.gpu. En los Dockerfiles, debería encontrar las líneas de código para reinstalar el binario de TensorFlow administrado por AWS (especificado en la variable de entorno TF_URL) y otras dependencias en orden. La sección de reinstalación debe ser similar a la siguiente especificación de ejemplo:
# tf-models does not respect existing installations of TensorFlow # and always installs open source TensorFlow RUN pip3 install --no-cache-dir -U \ tf-models-official==x.y.zRUN pip3 uninstall -y tensorflow tensorflow-gpu \ ; pip3 install --no-cache-dir -U \ ${TF_URL} \ tensorflow-io==x.y.z\ tensorflow-datasets==x.y.z
Compilar e insertar en ECR
Para compilar e insertar el contenedor de Docker en Amazon ECR, siga las instrucciones de los siguientes enlaces:
Ejecute con el estimador de SageMaker Python SDK
Utilice el estimador de marco TensorFlow de SageMaker AI de la forma habitual. Debe especificar image_uri para usar el nuevo contenedor alojado en Amazon ECR.
import sagemaker, boto3 from sagemaker import get_execution_role from sagemaker.tensorflow import TensorFlow, TrainingCompilerConfig account_id = boto3.client('sts').get_caller_identity().get('Account') ecr_repository ='tf-custom-container-test'tag =':latest'region = boto3.session.Session().region_name uri_suffix = 'amazonaws.com' byoc_image_uri = '{}.dkr.ecr.{}.{}/{}'.format( account_id, region, uri_suffix, ecr_repository + tag ) byoc_image_uri # This should return something like # 111122223333.dkr.ecr.us-east-2.amazonaws.com/tf-custom-container-test:latest estimator = TensorFlow( image_uri=image_uri, role=get_execution_role(), base_job_name='tf-custom-container-test-job', instance_count=1, instance_type='ml.p3.8xlarge' compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) # Start training estimator.fit()
Habilitar el Compilador de entrenamiento de SageMaker mediante la operación de la API CreateTrainingJob de SageMaker AI
"AlgorithmSpecification": { "TrainingImage": "<sagemaker-training-compiler-enabled-dlc-image>" }, "HyperParameters": { "sagemaker_training_compiler_enabled": "true", "sagemaker_training_compiler_debug_mode": "false" }
Para encontrar una lista completa de los URI de imágenes de contenedores de aprendizaje profundo que tienen implementado el Compilador de entrenamiento de Sagemaker, consulte Marcos admitidos.