Uso de Acciones de GitHub con Azure Machine Learning
SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)
SDK de Python azure-ai-ml v2 (actual)
Introducción a Acciones de GitHub para entrenar un modelo en Azure Machine Learning.
En este artículo se explica cómo crear un flujo de trabajo de Acciones de GitHub que compila e implementa un modelo de Machine Learning en Azure Machine Learning. Entrenará un modelo de regresión lineal scikit-learn en el conjunto de datos de NYC Taxi.
Las Acciones de GitHub usan un archivo YAML (.yml) de flujo de trabajo en la ruta de acceso /.github/workflows/
del repositorio. En esta definición se incluyen los diversos pasos y parámetros que componen el flujo de trabajo.
Prerrequisitos
Antes de seguir los pasos de este artículo, asegúrese de que tiene los siguientes requisitos previos:
Un área de trabajo de Azure Machine Learning. Si no tiene uno, siga los pasos descritos en el artículo Inicio rápido: Creación de recursos del área de trabajo para crear uno.
Para instalar el SDK de Python v2, use el siguiente comando:
pip install azure-ai-ml azure-identity
Para actualizar una instalación existente del SDK a la versión más reciente, use el siguiente comando:
pip install --upgrade azure-ai-ml azure-identity
Para más información, consulte Instalación del SDK v2 de Python para Azure Machine Learning.
- Una cuenta de GitHub. Si no tiene ninguna, regístrese para obtener una gratuita.
Paso 1: Obtención del código
Bifurque el repositorio siguiente en GitHub:
https://github.com/azure/azureml-examples
Clone el repositorio bifurcado localmente.
git clone https://github.com/YOUR-USERNAME/azureml-examples
Paso 2: Autenticación con Azure
Primero deberá definir cómo autenticarse con Azure. La opción recomendada y más segura es iniciar sesión con OpenID Connect mediante una aplicación de Microsoft Entra o una identidad administrada asignada por el usuario. Si es necesario, también puede usar iniciar sesión con una entidad de servicio y un secreto. Este enfoque es menos seguro y no se recomienda.
Genere las credenciales de implementación
Para usar acción de inicio de sesión de Azure con OIDC, debe configurar una credencial de identidad federada en una aplicación de Microsoft Entra o en una identidad administrada asignada por el usuario.
Opción 1: aplicaciones de Microsoft Entra
- Cree una aplicación de Microsoft Entra con una entidad de servicio mediante Azure Portal, la CLI de Azure o Azure PowerShell.
- Copie los valores de Id. de cliente, Id. de suscripción e Id. de directorio (inquilino) para usarlos más adelante en el flujo de trabajo de Acciones de GitHub.
- Asigne un rol adecuado a la entidad de servicio con Azure Portal, la CLI de Azureo Azure PowerShell.
- Configurar una credencial de identidad federada en una aplicación de Microsoft Entra para confiar en tokens emitidos por Acciones de GitHub en el repositorio de GitHub.
Opción 2: identidad administrada asignada por el usuario
- Creación de una identidad administrada asignada por el usuario.
- Copie los valores de Id. de cliente, Id. de suscripción e Id. de directorio (inquilino) para usarlos más adelante en el flujo de trabajo de Acciones de GitHub.
- Asigne un rol apropiado a la identidad administrada asignada por el usuario.
- Configurar una credencial de identidad federada en una identidad administrada asignada por el usuario para confiar en los tokens emitidos por Acciones de GitHub en el repositorio de GitHub.
Crear secretos
Debe especificar el identificador de cliente, el identificador de directorio (inquilino) y el identificador de suscripción en la acción de inicio de sesión. Estos valores se pueden proporcionar directamente en el flujo de trabajo o se pueden almacenar en secretos de GitHub y se puede hacer referencia a ellos en el flujo de trabajo. Guardar los valores como secretos de GitHub es la opción más segura.
En GitHub, vaya al repositorio.
Seleccione Seguridad > Secretos y variables > Acciones.
Seleccione New repository secret (Nuevo secreto del repositorio).
Nota:
Para mejorar la seguridad del flujo de trabajo en repositorios públicos, use secretos de entorno en lugar de secretos de repositorio. Si el ambiente requiere aprobación, un job no puede acceder a secretos de ambiente hasta que uno de los revisores requeridos lo apruebe.
Cree secretos para
AZURE_CLIENT_ID
,AZURE_TENANT_ID
yAZURE_SUBSCRIPTION_ID
. Copie estos valores de la aplicación de Microsoft Entra o identidad administrada asignada por el usuario para los secretos de GitHub:Secreto de GitHub Aplicación de Microsoft Entra o identidad administrada asignada por el usuario AZURE_CLIENT_ID Id. de cliente AZURE_SUBSCRIPTION_ID Id. de suscripción AZURE_TENANT_ID Id. de directorio (inquilino) Nota:
Por motivos de seguridad, se recomienda usar secretos de GitHub en lugar de pasar valores directamente al flujo de trabajo.
Paso 3: Actualización setup.sh
para conectarse al área de trabajo de Azure Machine Learning
Debe actualizar las variables del archivo de instalación de la CLI para que coincidan con el área de trabajo.
En el repositorio bifurcada, vaya a
azureml-examples/cli/
.Edite
setup.sh
y actualice estas variables en el archivo.Variable Descripción GROUP nombre del grupo de recursos. LOCATION Ubicación del área de trabajo (ejemplo: eastus2
)ÁREA DE TRABAJO Nombre del área de trabajo de Azure Machine Learning
Paso 4: Actualización pipeline.yml
con el nombre del clúster de proceso
Use un archivo pipeline.yml
para implementar la canalización de Azure Machine Learning. Esta canalización es una canalización de aprendizaje automático y no una canalización de DevOps. Solo tiene que realizar esta actualización si usa un nombre distinto cpu-cluster
del nombre del clúster del equipo.
- En el repositorio bifurcada, vaya a
azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml
. - Cada vez que vea
compute: azureml:cpu-cluster
, actualice el valor de con el nombre del clúster decpu-cluster
proceso. Por ejemplo, si su grupo se denominamy-cluster
, su nuevo valor seríaazureml:my-cluster
. Hay cinco actualizaciones.
Paso 5: Ejecución del flujo de trabajo de Acciones de GitHub
El flujo de trabajo se autentica con Azure, configura la CLI de Azure Machine Learning y usa la CLI para entrenar un modelo en Azure Machine Learning.
El archivo de flujo de trabajo se compone de una sección de desencadenador y trabajos:
- Un desencadenador inicia el flujo de trabajo en la sección
on
. El flujo de trabajo se ejecuta de forma predeterminada en una programación cron y cuando se realiza una solicitud de incorporación de cambios a partir de ramas y rutas de acceso coincidentes. Obtenga más información sobre los eventos que desencadenan flujos de trabajo. - En la sección trabajos del flujo de trabajo, el código de desprotegerá e inicia sesión en Azure con la acción de inicio de sesión de Azure mediante OpenID Connect.
- La sección trabajos también incluye una acción de instalación que instala y configura la CLI de Machine Learning (v2). Una vez instalada la CLI, la acción ejecutar trabajo ejecuta el archivo de Azure Machine Learning
pipeline.yml
para entrenar un modelo con datos de taxis de Nueva York.
Habilitación del flujo de trabajo
En el repositorio bifurcada, abra
.github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml
y compruebe que el flujo de trabajo tiene este aspecto.name: cli-jobs-pipelines-nyc-taxi-pipeline on: workflow_dispatch: schedule: - cron: "0 0/4 * * *" pull_request: branches: - main - sdk-preview paths: - cli/jobs/pipelines/nyc-taxi/** - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml - cli/run-pipeline-jobs.sh - cli/setup.sh jobs: build: runs-on: ubuntu-latest steps: - name: check out repo uses: actions/checkout@v2 - name: azure login uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - name: setup run: bash setup.sh working-directory: cli continue-on-error: true - name: run job run: bash -x ../../../run-job.sh pipeline.yml working-directory: cli/jobs/pipelines/nyc-taxi
Seleccione Ver ejecuciones.
Habilite los flujos de trabajo seleccionando Entiendo mis flujos de trabajo, continúe y habilítelos.
Seleccione el flujo de trabajo cli-jobs-pipelines-nyc-taxi-pipeline y elija Habilitar flujo de trabajo.
Seleccione Ejecutar flujo de trabajo y elija la opción Ejecutar flujo de trabajo ahora.
Paso 6: Comprobación de la ejecución del flujo de trabajo
Abra la ejecución del flujo de trabajo completado y compruebe que el trabajo de compilación se ejecutó correctamente. Verá una marca de verificación verde junto al trabajo.
Abra Estudio de Azure Machine Learning y vaya al nyc-taxi-pipeline-example. Compruebe que se ha completado cada parte del trabajo (preparación, transformación, entrenamiento, predicción, puntuación) y que ve una marca de verificación verde.
Limpieza de recursos
Cuando el repositorio y el grupo de recursos ya no sean necesarios, limpie los recursos que implementó eliminando el grupo de recursos y el repositorio de GitHub.