Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ ModelArts/ Contenedores de Docker con ModelArts/ Uso de una imagen personalizada para entrenar modelos (entrenamiento de nueva versión)/ Uso de una imagen personalizada para crear un trabajo de entrenamiento basado en CPU o GPU
Actualización más reciente 2024-07-31 GMT+08:00

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

Creación de un trabajo de entrenamiento

  1. 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.
  2. 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}

  3. 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.

  1. 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.