Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
Instancia de proceso de Azure Machine Learning con un servidor de notebooks dedicado, precargado con el SDK y el repositorio de ejemplos de Machine Learning.
Esta configuración no requiere descargas ni ninguna otra instalación. Para preparar este entorno, consulte Creación de recursos para empezar.
Servidor de Jupyter Notebook. Los siguientes recursos proporcionan instrucciones para ayudarle a preparar este entorno:
- Cree un archivo de configuración del área de trabajo.
- Instale el SDK de Azure Machine Learning.
- Cree una instancia de Azure Container Registry u otro registro de Docker disponible en Internet.
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.