Compartir a través de


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:

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

Opción 2: identidad administrada asignada por el usuario

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.

  1. En GitHub, vaya al repositorio.

  2. Seleccione Seguridad > Secretos y variables > Acciones.

    Captura de pantalla de la adición de un secreto

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

  4. Cree secretos para AZURE_CLIENT_ID, AZURE_TENANT_ID y AZURE_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.

  1. En el repositorio bifurcada, vaya a azureml-examples/cli/.

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

  1. En el repositorio bifurcada, vaya a azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml.
  2. Cada vez que vea compute: azureml:cpu-cluster, actualice el valor de con el nombre del clúster de cpu-cluster proceso. Por ejemplo, si su grupo se denominamy-cluster, su nuevo valor sería azureml: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

  1. 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
    
  2. Seleccione Ver ejecuciones.

  3. Habilite los flujos de trabajo seleccionando Entiendo mis flujos de trabajo, continúe y habilítelos.

  4. Seleccione el flujo de trabajo cli-jobs-pipelines-nyc-taxi-pipeline y elija Habilitar flujo de trabajo.

    Captura de pantalla de habilitar Acciones de GitHub flujo de trabajo.

  5. Seleccione Ejecutar flujo de trabajo y elija la opción Ejecutar flujo de trabajo ahora.

    Captura de pantalla de ejecutar Acciones de GitHub flujo de trabajo.

Paso 6: Comprobación de la ejecución del flujo de trabajo

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

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

    Captura de pantalla de la ejecución correcta de Machine Learning Studio.

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.

Pasos siguientes