Uso de una imagen personalizada para crear un trabajo de entrenamiento basado en CPU o GPU
El entrenamiento de modelos es un proceso de optimización iterativo. A través de la gestión de entrenamiento unificada, puede seleccionar de forma flexible algoritmos, datos e hiperparámetros para obtener la configuración y el modelo de entrada óptimos. Después de comparar métricas entre versiones de trabajo, puede determinar el trabajo de entrenamiento más satisfactorio.
Prerrequisitos
- Los datos que se van a entrenar se han subido a un directorio de OBS.
- Se ha creado al menos una carpeta vacía para almacenar la salida de entrenamiento en OBS.
- Se ha creado una imagen personalizada basada en las especificaciones de ModelArts. Para obtener más información sobre las especificaciones de imágenes personalizadas, consulte Especificaciones a las Imágenes personalizadas para trabajos de entrenamiento.
- La imagen personalizada se ha subido a SWR. Para obtener más información, véase ¿Cómo puedo iniciar sesión en SWR y cargar imágenes en él?.
Creación de un trabajo de entrenamiento
- Inicie sesión en la consola de gestión ModelArts. En el panel de navegación izquierdo, elija Training Management > Training Jobs. Se muestra la lista de trabajos de entrenamiento.
- Haga clic en Create Training Job y configure los parámetros. Tabla 1 enumera los parámetros.
Tabla 1 Parámetros de trabajo Parámetro
Descripción
Created By
Seleccione un algoritmo personalizado. Este parámetro es obligatorio.
Si ha creado un algoritmo basado en una imagen personalizada en Algorithm Management, elija el algoritmo creado en My Algorithms.
Boot Mode
Seleccione Custom images. Este parámetro es obligatorio.
Image Path
URL de una imagen de SWR. Este parámetro es obligatorio.
- Imágenes privadas o imágenes compartidas: Haga clic en Select a la derecha para seleccionar una imagen de SWR. Asegúrese de que la imagen se ha cargado a SWR.
- Imágenes públicas: También puede introducir manualmente la ruta de la imagen en el formato "<Organización a la que pertenece la imagen>/<Nombre de la imagen>" en SWR. No contenga el nombre de dominio (swr.<región>.example.com) en la ruta porque el sistema agregará automáticamente el nombre de dominio a la ruta. Por ejemplo:
modelarts-job-dev-image/pytorch_1_8:train-pytorch_1.8.0-cuda_10.2-py_3.7-euleros_2.10.1-x86_64-8.1.1
Code Directory
Ruta de OBS para almacenar el código de entrenamiento. Este parámetro es opcional.
Tome la ruta de OBS obs://obs-bucket/training-test/demo-code como ejemplo. El código de entrenamiento en esta ruta se descargará automáticamente a ${MA_JOB_DIR}/demo-code en el contenedor de entrenamiento, donde demo-code es el directorio del último nivel de la ruta de OBS y se puede personalizar.
Boot Command
Comando para arrancar una imagen. Este parámetro es obligatorio. El comando de arranque se ejecutará automáticamente después de descargar el directorio de código.
- Si el script de inicio de entrenamiento es un archivo .py, train.py por ejemplo, el comando de arranque puede ser python ${MA_JOB_DIR}/demo-code/train.py.
- Si el script de inicio de entrenamiento es un archivo .sh, main.sh por ejemplo, el comando de arranque puede ser bash ${MA_JOB_DIR}/demo-code/main.sh,
donde demo-code es el directorio del último nivel de la ruta de OBS y se puede personalizar.
Training Input - Parameter Name
El valor recomendado es data_url, que debe ser el mismo que el parámetro para analizar los datos de entrada en el código de entrenamiento. Puede establecer varios parámetros de entrada de entrenamiento. El nombre de cada parámetro de entrada de entrenamiento debe ser único, por ejemplo, car_data_url, dog_data_url y cat_data_url.
Por ejemplo, si utiliza argparse en el código de entrenamiento para analizar data_url en la entrada de datos, establezca el nombre del parámetro de la entrada del entrenamiento en data_url.
import argparse # Create a parsing task. parser = argparse.ArgumentParser(description="train mnist", formatter_class=argparse.ArgumentDefaultsHelpFormatter) # Add parameters. parser.add_argument('--train_url', type=str, help='the path model saved') parser.add_argument('--data_url', type=str, help='the training data') # Parse the parameters. args, unknown = parser.parse_known_args()
Training Input - Data Path
Seleccione Dataset o Data path como la entrada de entrenamiento. Si selecciona Data path, establezca una ruta de OBS como la entrada de entrenamiento.
Cuando comienza el entrenamiento, los datos de la ruta especificada se descargarán automáticamente al contenedor de entrenamiento.
Tome la ruta de OBS obs://obs-bucket/training-test/data como ejemplo. Los datos se descargarán automáticamente al ${MA_MOUNT_PATH}/inputs/${data_url}_N del contenedor de entrenamiento. El valor de N es el número de parámetros de entrada de entrenamiento menos 1.
Por ejemplo:
- Si solo hay un parámetro de entrada de entrenamiento data_url, los datos se descargarán automáticamente al ${MA_MOUNT_PATH}/inputs/data_url_0/ del contenedor de entrenamiento.
- Si hay múltiples parámetros de entrada de entrenamiento car_data_url, dog_data_url y cat_data_url, los datos de entrenamiento se descargarán automáticamente a ${MA_MOUNT_PATH}/inputs/car_data_url_0/, ${MA_MOUNT_PATH}/inputs/dog_data_url_1/ y ${MA_MOUNT_PATH}/inputs/cat_data_url_2/ del contenedor, respectivamente.
Training Output - Parameter Name
El valor recomendado es train_url, que debe ser el mismo que el parámetro para analizar los datos de salida en el código de entrenamiento. Puede establecer varios parámetros de salida de entrenamiento. El nombre de cada parámetro de salida de entrenamiento debe ser único.
Training Output - Data Path
Seleccione una ruta de OBS como la salida de entrenamiento. Para minimizar los errores, seleccione un directorio vacío.
El archivo de resultados de entrenamiento en el contenedor de entrenamiento ${MA_MOUNT_PATH}/outputs/${train_url}_N/ se cargará automáticamente a obs://obs-bucket/training-test/output. El valor de N es el número de parámetros de salida de entrenamiento menos 1.
Por ejemplo:
- Si solo hay un parámetro de salida de entrenamiento train_url, el directorio de contenedor de la salida de entrenamiento es ${MA_MOUNT_PATH}/outputs/data_url_0/.
- Si hay múltiples parámetros de salida de entrenamiento, por ejemplo car_train_url, dog_train_url y cat_train_url, los directorios de contenedores de la salida de entrenamiento son ${MA_MOUNT_PATH}/outputs/car_train_url_0/, ${MA_MOUNT_PATH}/outputs/dog_train_url_1/ y ${MA_MOUNT_PATH}/outputs/cat_train_url_2/ respectivamente.
Hyperparameters
Se utiliza para entrenar tuning. Este parámetro es opcional.
Environment Variable
Después de iniciar el contenedor, el sistema carga las variables de entorno predeterminadas y las personalizadas aquí.
Tabla 2 muestra las variables de entorno predeterminadas.
Auto Restart
Después de activar esta función, puede establecer el número de veces de reinicio para una falla de entrenamiento. Este parámetro es opcional.
Tabla 2 Variables de entorno predeterminadas Variable de entorno
Descripción
MA_JOB_DIR
Directorio padre del directorio de código.
MA_MOUNT_PATH
Directorio padre de los directorios de entrada y salida de entrenamiento.
VC_TASK_INDEX
Índice de contenedores, a partir de 0. Este parámetro no tiene sentido para el entrenamiento independiente. En los trabajos de entrenamiento de multinodos, puede utilizar este parámetro para determinar la lógica del algoritmo del contenedor.
MA_NUM_HOSTS
Número de nodos de cómputo, que se obtiene automáticamente de Compute Nodes.
${MA_VJ_NAME}-${MA_TASK_NAME}-N.${MA_VJ_NAME}
Nombre de dominio de comunicación de un nodo. Por ejemplo, el nombre de dominio de comunicación del nodo 0 es ${MA_VJ_NAME}-${MA_TASK_NAME}-0.${MA_VJ_NAME}.
N indica el número de los nodos de cómputo. Por ejemplo, si el número de los nodos de cómputo es 4, las variables de entorno son las siguientes:
${MA_VJ_NAME}-${MA_TASK_NAME}-0.${MA_VJ_NAME}
${MA_VJ_NAME}-${MA_TASK_NAME}-1.${MA_VJ_NAME}
${MA_VJ_NAME}-${MA_TASK_NAME}-2.${MA_VJ_NAME}
${MA_VJ_NAME}-${MA_TASK_NAME}-3.${MA_VJ_NAME}
- Seleccione una variante de instancia. El rango de valores de los parámetros de entrenamiento es coherente con las restricciones de las imágenes personalizadas existentes.
Tabla 3 Parámetros de recursos Parámetro
Descripción
Resource Pool
Los grupos de recursos públicos y dedicados están disponibles para que usted seleccione.
Resource Type
Establezca este parámetro en función del tipo de recurso especificado en la imagen.
Instance Flavor
Seleccione una variante de recurso basado en el tipo de recurso. Asegúrese de que la variante seleccionada es la misma que la variante de entrenamiento especificada en la imagen.
Por ejemplo, si se selecciona GPU en el código de entrenamiento pero se selecciona CPU aquí, el entrenamiento puede fallar.
Durante el entrenamiento, ModelArts montará SSD NVME en el directorio /cache. Puede utilizar este directorio para almacenar archivos temporales.
El tamaño del disco de datos varía según el tipo de recurso. Para evitar que la memoria sea insuficiente durante el entrenamiento, compruebe el tamaño del disco de la variante de instancia seleccionada.
Compute Nodes
Establezca el número de nodos de cálculo. El valor predeterminado es 1.
Persistent Log Saving
Si habilita esta función, seleccione un directorio de OBS vacío como la ruta de log de trabajos para almacenar los archivos de log generados durante la ejecución del trabajo, por ejemplo obs://obs-bucket/training-test/output/log. Este parámetro es opcional.NOTA:Asegúrese de tener permisos de lectura y escritura en el directorio OBS seleccionado.
- Haga clic en Submit para crear el trabajo de entrenamiento.
Se necesita un período de tiempo para crear un trabajo de entrenamiento.
Para ver el estado en tiempo real de un trabajo de entrenamiento, vaya a la lista de los trabajos de entrenamiento y haga clic en su nombre. En la página de detalles del trabajo de entrenamiento que se muestra, vea la información básica del trabajo de entrenamiento. Para obtener más información, consulte Detalles de trabajos de entrenamiento.