Compartir a través de


Entrenamiento de un modelo con una imagen de Docker personalizada

SE APLICA A:SDK de Azure Machine Learning v1 para Python

Importante

En este artículo se proporciona información sobre el uso del SDK de Azure Machine Learning v1. EL SDK v1 está en desuso a partir del 31 de marzo de 2025. El soporte técnico finalizará el 30 de junio de 2026. Puede instalar y usar SDK v1 hasta esa fecha.

Se recomienda realizar la transición al SDK v2 antes del 30 de junio de 2026. Para más información sobre SDK v2, consulte ¿Qué es la CLI de Azure Machine Learning y el SDK de Python v2? y la referencia del SDK v2.

En este artículo se describe cómo usar una imagen personalizada de Docker para entrenar modelos con Azure Machine Learning. Los scripts de ejemplo muestran cómo clasificar imágenes mediante la creación de una red neuronal convolucional.

Azure Machine Learning proporciona una imagen base de Docker predeterminada. También puede usar entornos de Azure Machine Learning para especificar una imagen base diferente, como una imagen base de Azure Machine Learning mantenida o su propia imagen personalizada. Las imágenes base personalizadas permiten administrar estrechamente las dependencias y mantener un mayor control sobre las versiones de componentes al ejecutar trabajos de entrenamiento.

Requisitos previos

Para ejecutar el código de ejemplo, la configuración debe incluir uno de los siguientes entornos:

Configuración de un experimento de entrenamiento

La primera tarea consiste en configurar el experimento de entrenamiento inicializando un área de trabajo de Machine Learning, definiendo el entorno y configurando un destino de proceso.

Inicialización de un área de trabajo

El área de trabajo de Azure Machine Learning es el recurso de nivel superior para el servicio. Proporciona un lugar centralizado para trabajar con todos los artefactos que cree. En el SDK de Python, puede acceder a los artefactos del área de trabajo mediante la creación de un objeto Workspace.

Según sea necesario, cree un Workspace objeto a partir del archivo config.json que creó como requisito previo.

from azureml.core import Workspace

ws = Workspace.from_config()

Definición del entorno

Cree un objeto Environment.

from azureml.core import Environment

fastai_env = Environment("fastai2")

La imagen base especificada en el siguiente código es compatible con la biblioteca fast.ai, que permite funcionalidades de aprendizaje profundo distribuido. Para obtener más información, consulte el repositorio de Docker Hub de fast.ai.

Al usar la imagen personalizada de Docker, es posible que ya tenga configurado correctamente el entorno de Python. En ese caso, establezca la marca user_managed_dependencies en True para usar el entorno de Python integrado de la imagen personalizada. De forma predeterminada, Azure Machine Learning crea un entorno de Conda con las dependencias que especificó. El servicio ejecuta el script en ese entorno en lugar de usar las bibliotecas de Python que haya instalado en la imagen base.

fastai_env.docker.base_image = "fastdotai/fastai2:latest"
fastai_env.python.user_managed_dependencies = True

Importante

Azure Machine Learning solo admite imágenes de Docker que proporcionan el software siguiente:

  • Ubuntu 18.04 o superior
  • Conda 4.7.# o superior
  • Python 3.7+
  • Se requiere un shell compatible con POSIX disponible en /bin/sh en cualquier imagen de contenedor que se use para el entrenamiento.

Para obtener más información sobre la creación y la administración de los entornos de Azure Machine Learning, consulte Creación y uso de entornos de software.

Creación o conexión de un destino de proceso

Para entrenar el modelo, necesita crear un destino de proceso. En este tutorial, creará una instancia de AmlCompute como recurso de proceso de entrenamiento.

La creación de AmlCompute tarda unos minutos. Si el recurso AmlCompute ya está en el área de trabajo, este código omite el proceso de creación.

Al igual que en otros servicios de Azure, existen límites en determinados recursos (por ejemplo, AmlCompute) asociados con Azure Machine Learning Service. Para obtener más información, consulte Límites predeterminados y cómo solicitar una cuota más alta.

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your cluster
cluster_name = "gpu-cluster"

try:
    compute_target = ComputeTarget(workspace=ws, name=cluster_name)
    print('Found existing compute target.')
except ComputeTargetException:
    print('Creating a new compute target...')
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6',
                                                           max_nodes=4)

    # Create the cluster
    compute_target = ComputeTarget.create(ws, cluster_name, compute_config)

    compute_target.wait_for_completion(show_output=True)

# Use get_status() to get a detailed status for the current AmlCompute
print(compute_target.get_status().serialize())

Importante

Use las SKU de CPU para cualquier compilación de imagen en el proceso.

Configuración del trabajo de entrenamiento

Para este tutorial, use el script de entrenamiento train.py en GitHub. En la práctica, puede tomar cualquier script de entrenamiento personalizado tal cual y ejecutarlo con Azure Machine Learning.

Cree un recurso ScriptRunConfig para configurar el trabajo para que se ejecute en el destino de proceso que desee.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='fastai-example',
                      script='train.py',
                      compute_target=compute_target,
                      environment=fastai_env)

Enviar su trabajo de entrenamiento

Cuando se envía una ejecución de entrenamiento mediante un objeto ScriptRunConfig, el método submit devuelve un objeto de tipo ScriptRun. El objeto ScriptRun devuelto proporciona acceso mediante programación a información sobre la ejecución de entrenamiento.

from azureml.core import Experiment

run = Experiment(ws,'Tutorial-fastai').submit(src)
run.wait_for_completion(show_output=True)

Advertencia

Azure Machine Learning ejecuta scripts de entrenamiento mediante la copia de todo el directorio de origen. Si tiene información confidencial que no quiere cargar, use un archivo .ignore o no lo incluya en el directorio de origen. En su lugar, acceda a los datos mediante un almacén de datos.