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 modelos)/ Uso de una imagen personalizada para crear un trabajo de entrenamiento basado en CPU o GPU
Actualización más reciente 2024-09-14 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 las versiones de trabajo, puede determinar el trabajo de entrenamiento más satisfactorio.

Requisitos previos

Creación de un trabajo de entrenamiento

  1. Inicie sesión en la consola de gestión de ModelArts. En el panel de navegación izquierdo, elija Training Management > Training Jobs.
  2. Haga clic en Create Training Job y configure los parámetros.
    Tabla 1 Creación de un trabajo de entrenamiento con una imagen personalizada

    Parámetro

    Descripción

    Algorithm Type

    Seleccione Custom algorithm. Este parámetro es obligatorio.

    Boot Mode

    Seleccione Custom image. Este parámetro es obligatorio.

    Image

    Ruta de la imagen del contenedor. Este parámetro es obligatorio.

    Puede establecer la ruta de acceso de la imagen del contenedor de cualquiera de las siguientes maneras:
    • Para seleccionar su imagen o una imagen compartida con otros, haga clic en Select a la derecha y seleccione una imagen de contenedor para el entrenamiento. La imagen requerida debe cargarse en SWR de antemano.
    • Para seleccionar una imagen pública, introduzca la dirección de la imagen pública en SWR. Introduzca la ruta de la imagen en el formato "Nombre de la organización/Nombre de la imagen:Nombre de la versión". No contenga el nombre de dominio (swr.<region>.xxx.com) en la ruta porque el sistema agregará automáticamente el nombre de dominio a la ruta. Por ejemplo, si la dirección de SWR de una imagen pública es swr.<region>.xxx.com/test-image/tensorflow2_1_1:1.1.1, ingrese test-images/tensorflow2_1_1:1.1.1.

    Code Directory

    Seleccione el directorio de OBS donde se almacena el archivo de código de entrenamiento. Si la imagen personalizada no contiene código de entrenamiento, debe establecer este parámetro. Si la imagen personalizada contiene código de entrenamiento, no es necesario establecer este parámetro.

    • Cargue el código al bucket de OBS de antemano. El tamaño total de los archivos del directorio no puede superar los 5 GB, el número de archivos no puede superar los 1000 y la profundidad de la carpeta no puede superar los 32.
    • El archivo de código de entrenamiento se descarga automáticamente en el directorio ${MA_JOB_DIR}/demo-code del contenedor de entrenamiento cuando se inicia el trabajo de entrenamiento. demo-code es el directorio de OBS de último nivel para almacenar el código. Por ejemplo, si Code Directory se establece en /test/code, el archivo de código de entrenamiento se descarga en el directorio ${MA_JOB_DIR}/code del contenedor de entrenamiento.

    User ID

    ID de usuario para ejecutar el contenedor. Se recomienda el valor predeterminado 1000.

    Si es necesario especificar el UID, su valor debe estar dentro del rango especificado. Los rangos de UID de los diferentes grupos de recursos son los siguientes:

    • Grupo de recursos público: 1000 a 65535
    • Grupo de recursos dedicado: 0 a 65535

    Boot Command

    Comando para arrancar una imagen. Este parámetro es obligatorio.

    Cuando se está ejecutando un trabajo de entrenamiento, el comando de arranque se ejecuta automáticamente después de descargar el directorio de código.
    • Si el script de arranque de entrenamiento es un archivo .py, por ejemplo, train.py, el comando de arranque es el siguiente.
      python ${MA_JOB_DIR}/demo-code/train.py
    • Si el script de arranque de entrenamiento es un archivo .sh, main.sh por ejemplo, el comando de arranque es el siguiente.
      bash ${MA_JOB_DIR}/demo-code/main.sh

    Puede usar punto y coma (;) y ampersands (&&) para combinar varios comandos. demo-code en el comando es el directorio de OBS de último nivel donde se almacena el código. Reemplácelo por el actual.

    Local Code Directory

    Especifique el directorio local de un contenedor de entrenamiento. Cuando se inicia un entrenamiento, el sistema descarga automáticamente el directorio de códigos en este directorio.

    /home/ma-user/modelarts/user-job-dir es el directorio de código local predeterminado. Este parámetro es opcional.

    Work Directory

    Durante el entrenamiento, el sistema ejecuta automáticamente el comando cd para ejecutar el archivo de inicio en este directorio.

    Tabla 2 Parámetros para crear un trabajo de entrenamiento

    Parámetro

    Subparámetro

    Descripción

    Input

    Parameter

    El código del algoritmo lee los datos de entrada de entrenamiento según el nombre del parámetro de entrada.

    Configure este parámetro como data_url, que es 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, 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()

    Dataset

    Haga clic en Dataset y seleccione el conjunto de datos de destino y su versión en la lista del conjunto de datos de ModelArts.

    Cuando se inicia el trabajo de entrenamiento, ModelArts descarga automáticamente los datos en la ruta de entrada al contenedor de entrenamiento.

    NOTA:

    La gestión de datos de ModelArts se está actualizando y es invisible para los usuarios que no han utilizado la gestión de datos. Se recomienda que los nuevos usuarios almacenen sus datos de entrenamiento en buckets de OBS.

    Data path

    Haga clic en Data path y seleccione la ruta de almacenamiento para los datos de entrada de entrenamiento de un bucket de OBS.

    Cuando se inicia el trabajo de entrenamiento, ModelArts descarga automáticamente los datos en la ruta de entrada al contenedor de entrenamiento.

    How to Obtain

    A continuación se utiliza la entrada de entrenamiento data_path como ejemplo.

    • Si selecciona Hyperparameters, utilice este código para obtener los datos:
      import argparse
      parser = argparse.ArgumentParser()
      parser.add_argument('--data_path')
      args, unknown = parser.parse_known_args()
      data_path = args.data_path 
    • Si selecciona Environment variables, utilice este código para obtener los datos:
      import os
      data_path = os.getenv("data_path", "")

    Output

    Parameter

    El código del algoritmo lee los datos de salida de entrenamiento según el nombre del parámetro de salida.

    Configure este parámetro como train_url que es 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.

    Data path

    Haga clic en Data path y seleccione la ruta de almacenamiento para los datos de salida de entrenamiento de un bucket de OBS. Durante el entrenamiento, el sistema sincroniza automáticamente los archivos del directorio de código local del contenedor de entrenamiento con la ruta de datos.

    NOTA:

    La ruta de datos solo puede ser una ruta de OBS. Para evitar problemas con el almacenamiento de datos, elija un directorio vacío como ruta de acceso de datos.

    How to Obtain

    A continuación se utiliza la salida de entrenamiento train_url como ejemplo.

    • Si selecciona Hyperparameters, utilice este código para obtener los datos:
      import argparse
      parser = argparse.ArgumentParser()
      parser.add_argument('--train_url')
      args, unknown = parser.parse_known_args()
      train_url = args.train_url 
    • Si selecciona Environment variables, utilice este código para obtener los datos:
      import os
      train_url = os.getenv("train_url", "")

    Predownload

    Indica si se deben descargar previamente los archivos del directorio de salida a un directorio local.

    • Si establece Predownload en No, el sistema no descarga los archivos de la ruta de datos de salida de entrenamiento a un directorio local del contenedor de entrenamiento cuando se inicia el trabajo de entrenamiento.
    • Si establece Predownload en Yes, el sistema descarga automáticamente los archivos de la ruta de datos de salida de entrenamiento a un directorio local del contenedor de entrenamiento cuando se inicia el trabajo de entrenamiento. Cuanto mayor sea el tamaño del archivo, mayor será el tiempo de descarga. Para evitar un tiempo de entrenamiento excesivo, elimine todos los archivos innecesarios del directorio de código local del contenedor de entrenamiento lo antes posible. Para utilizar los entrenamientos reanudable e incremental, se debe seleccionar Download.

    Hyperparameters

    -

    Se utiliza para el ajuste de entrenamiento. Este parámetro es opcional.

    Environment Variable

    -

    Agregue variables de entorno según los requisitos de servicio. Para obtener más información sobre las variables de entorno predefinidas en el contenedor de entrenamiento, véase Consulta de variables de entorno de un contenedor de entrenamiento.

    Auto Restart

    -

    Número de reintentos para un trabajo de entrenamiento fallido. Si este parámetro está habilitado, un trabajo de entrenamiento fallido se volverá a entregar y ejecutará automáticamente. En la página de detalles del trabajo de entrenamiento, puede ver el número de reintentos de un trabajo de entrenamiento fallido.

    • Esta función está deshabilitada por defecto.
    • Si habilita esta función, establezca el número de reintentos. El valor oscila de 1 a 3 y no se puede cambiar.
  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. Seleccione un grupo de recursos público o dedicado según sea necesario. Para obtener más información sobre los parámetros, véase Creación de un trabajo de entrenamiento.
  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, véase Consulta de detalles del trabajo de entrenamiento.