Deep Learning Containers (DLC) le permite crear rápidamente trabajos de entrenamiento en un solo nodo o distribuidos sin aprovisionar máquinas ni configurar entornos manualmente. Este tutorial demuestra el proceso integral tanto para el entrenamiento en un solo nodo con una sola GPU como para el entrenamiento multinodo con múltiples GPU, mediante la tarea de reconocimiento de dígitos manuscritos MNIST.
El reconocimiento de dígitos manuscritos MNIST es una tarea introductoria clásica en el aprendizaje profundo. El objetivo es construir un modelo de aprendizaje automático que reconozca 10 dígitos manuscritos (del 0 al 9).
1. Requisitos previos
Utilice su cuenta principal para activar PAI y crear un espacio de trabajo. Inicie sesión en la PAI console, seleccione una región en la esquina superior izquierda y siga las indicaciones para otorgar permisos y activar el servicio.
2. Facturación
Los ejemplos de este tutorial utilizan recursos públicos para crear trabajos de DLC, los cuales se facturan bajo el modelo pay-as-you-go. Para obtener más información, consulte Billing for Deep Learning Containers (DLC).
3. Entrenamiento en un solo nodo con una sola GPU
3.1 Crear un conjunto de datos
Un conjunto de datos almacena su código de entrenamiento, datos y artefactos del modelo. Esta sección explica cómo utilizar un conjunto de datos basado en Alibaba Cloud Object Storage Service (OSS).
En el panel de navegación izquierdo de la PAI console, vaya a Datasets > Custom Dataset > Create datasets.
-
Configure los siguientes parámetros clave y conserve los valores predeterminados para el resto.
Name: Por ejemplo, introduzca
dataset_mnist.Storage Type: Seleccione OSS.
-
OSS Path: Haga clic en el icono de carpeta
, seleccione un bucket y cree un nuevo directorio, como dlc_mnist.Si no ha activado OSS o no tiene un bucket disponible en la región actual, siga estos pasos para activar OSS y crear un bucket:
Haga clic en Confirm para crear el conjunto de datos.
-
Cargue el código de entrenamiento y los datos.
-
Descargue el script de entrenamiento proporcionado: mnist_train.py. Para simplificar el proceso, el script descarga automáticamente los datos de entrenamiento al directorio dataSet de su conjunto de datos durante la ejecución.
Para sus propios proyectos, puede precargar su código y datos de entrenamiento en un conjunto de datos de PAI.
Cargue el código. En la página de detalles del conjunto de datos, haga clic en View Data para ir a la consola de OSS. Luego, haga clic en Upload Object >Select Files > Upload Object para cargar el script de entrenamiento en OSS.
-
3.2 Crear un trabajo de DLC
En el panel de navegación izquierdo de la PAI console, vaya a Deep Learning Containers (DLC) > Create Job.
-
Configure los siguientes parámetros clave y conserve los valores predeterminados para el resto. Para ver la lista completa de parámetros, consulte Create a training job.
-
Image Configuration: Seleccione Image Address y luego introduzca la dirección de imagen correspondiente a su Region.
En la barra de navegación superior de la consola, utilice el selector de Region para confirmar su región actual, por ejemplo, China (Hangzhou).
Región
Dirección de imagen
China (Beijing)
dsw-registry-vpc.cn-beijing.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22.04
China (Shanghai)
dsw-registry-vpc.cn-shanghai.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22.04
China (Hangzhou)
dsw-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22.04
Otra
Find your region ID y reemplace <Region ID> en la dirección de la imagen para obtener la URL completa:
dsw-registry-vpc.<Region ID>.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22.04
Esta imagen utiliza el mismo entorno verificado del tema Get Started with DSW Interactive Modeling . Al trabajar con modelos en PAI, un flujo de trabajo típico consiste en verificar primero el entorno y desarrollar el código en DSW, y luego usar DLC para el entrenamiento.
Dataset Mount: Seleccione Custom Dataset y elija el conjunto de datos que creó en el paso anterior. La Mount Path predeterminada es
/mnt/data.-
Startup Command:
python /mnt/data/mnist_train.pyEl comando de inicio es el mismo que cuando ejecuta el código en DSW o localmente. Sin embargo, dado que
mnist_train.pyahora está montado en/mnt/data/, solo necesita cambiar la ruta del código a/mnt/data/mnist_train.py. -
Source: Seleccione Public Resources y luego seleccione
ecs.gn7i-c8g1.2xlargepara el Resource Type.Si este tipo de instancia no está disponible, puede elegir otro tipo de instancia con GPU.
Haga clic en OK para crear el trabajo. El trabajo tarda aproximadamente 15 minutos en ejecutarse. Durante la ejecución, puede hacer clic en Logs para ver el progreso del entrenamiento.
El registro de entrenamiento muestra que el modelo MNIST alcanza una precisión de validación de 9886/10000 (aproximadamente 99%) en la época 18. Cuando el estado del trabajo cambia a Succeeded, el registro muestra la salida final:
Training complete. writer.close().Una vez completado el trabajo, DLC guarda el mejor punto de control del modelo y el registro de TensorBoard en la ruta
outputdel conjunto de datos montado.El directorio
dlc_mnist/en su bucket de OSS ahora contiene un subdirectoriodataSet/para los datos de entrenamiento, un subdirectoriooutput/para los artefactos del modelo y el scriptmnist_train.py. -
3.3 (Opcional) Visualización en TensorBoard
Puede utilizar la herramienta de visualización TensorBoard para consultar la curva de pérdida y comprender mejor el proceso de entrenamiento.
Para usar TensorBoard con un trabajo de DLC, debe configurar un conjunto de datos.
En la página de detalles del trabajo de DLC, haga clic en la pestaña Tensorboard y luego haga clic en Create TensorBoard.
-
Establezca Configuration Type en By Task. Para Summary Path, introduzca la ruta donde SummaryWriter guarda los datos en el código de entrenamiento:
/mnt/data/output/runs/. Haga clic en OK para iniciar.Esto corresponde al fragmento de código:
writer = SummaryWriter('/mnt/data/output/runs/mnist_experiment') -
Haga clic en View TensorBoard para ver la curva train_loss (pérdida del conjunto de entrenamiento) y la curva validation_loss (pérdida del conjunto de validación).

3.4 Desplegar el modelo entrenado
Para obtener más información, consulte V. Use EAS to deploy model services.
4. Entrenamiento distribuido con múltiples GPU
Si una sola GPU no tiene memoria suficiente para su modelo o desea acelerar el entrenamiento, cree un trabajo de entrenamiento distribuido con múltiples GPU o multinodo.
Esta sección utiliza dos instancias, cada una con una sola GPU, como ejemplo. El mismo procedimiento se aplica a otras configuraciones de múltiples GPU y multinodo.
4.1 Preparar el conjunto de datos y el script
Si ya creó un conjunto de datos en la sección 3. Single-node, single-GPU training, simplemente descargue mnist_train_distributed.py y cárguelo. De lo contrario, primero 3.1 Create a dataset y luego cargue el código.
4.2 Crear un trabajo de DLC distribuido
En el panel de navegación izquierdo de la PAI console, vaya a Deep Learning Containers (DLC) > Create Job.
-
Configure los siguientes parámetros clave y conserve los valores predeterminados para el resto. Para ver la lista completa de parámetros, consulte Create a training job.
-
Image Configuration: Seleccione Image Address y luego introduzca la dirección de imagen correspondiente a su Region.
Región
Dirección de imagen
China (Beijing)
dsw-registry-vpc.cn-beijing.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22.04
China (Shanghai)
dsw-registry-vpc.cn-shanghai.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22.04
China (Hangzhou)
dsw-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22.04
Otra
Find your region ID y reemplace <Region ID> en la dirección de la imagen para obtener la URL completa:
dsw-registry-vpc.<Region ID>.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22.04
Esta imagen utiliza el mismo entorno verificado del tema Get Started with DSW Interactive Modeling . Al trabajar con modelos en PAI, un flujo de trabajo típico consiste en verificar primero el entorno y desarrollar el código en DSW, y luego usar DLC para el entrenamiento.
Dataset Mount: Seleccione Custom Dataset y elija el conjunto de datos que creó. La Mount Path predeterminada es
/mnt/data.-
Startup Command:
torchrun --nproc_per_node=1 --nnodes=${WORLD_SIZE} --node_rank=${RANK} --master_addr=${MASTER_ADDR} --master_port=${MASTER_PORT} /mnt/data/mnist_train_distributed.pyDLC inyecta automáticamente variables de entorno comunes de environment variables , como
MASTER_ADDRyWORLD_SIZE, a las que puede acceder con la sintaxis$VARIABLE_NAME. -
Source: Seleccione Public Resources, establezca Number of Nodes en 2 y seleccione
ecs.gn7i-c8g1.2xlargepara el Resource Type.Si este tipo de instancia no está disponible, puede elegir otro tipo de instancia con GPU.
Haga clic en Confirm para crear el trabajo. El trabajo tarda aproximadamente 10 minutos en ejecutarse. Durante la ejecución, puede consultar el Log de entrenamiento de ambas instancias en la página Overview.
Una vez completado el trabajo, DLC guarda el mejor punto de control del modelo y el registro de TensorBoard en la ruta
output_distributeddel conjunto de datos montado. -
4.3 (Opcional) Visualización en TensorBoard
Puede utilizar la herramienta de visualización TensorBoard para consultar la curva de pérdida y comprender mejor el proceso de entrenamiento.
Para usar TensorBoard con un trabajo de DLC, debe configurar un conjunto de datos.
En la página de detalles del trabajo de DLC, haga clic en la pestaña TensorBoard y luego haga clic en Create TensorBoard.
-
Establezca Configuration Type en By Task. Para Summary Path, introduzca la ruta donde el código de entrenamiento guarda los archivos de resumen:
/mnt/data/output_distributed/runs. Haga clic en OK para iniciar.Esto corresponde al fragmento de código:
writer = SummaryWriter('/mnt/data/output_distributed/runs/mnist_experiment') -
Haga clic en View TensorBoard para ver la curva train_loss (pérdida del conjunto de entrenamiento) y la curva validation_loss (pérdida del conjunto de validación).

4.4 Desplegar el modelo entrenado
Para obtener más información, consulte V. Deploying model services using EAS.
5. Información relacionada
Para obtener más información sobre las funciones de DLC, consulte Deep Learning Containers (DLC).