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. Entrena un modelo de regresión lineal de scikit-learn en el dataset 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

  • Un área de trabajo de Azure Machine Learning. Para conocer los pasos para crear un área de trabajo, consulte Creación del área de trabajo.

  • Sdk de Azure Machine Learning para Python v2. Para instalar el SDK, 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 Biblioteca cliente de Azure Machine Learning Package para Python.

Paso 1: Obtención del código

Forkea el siguiente repositorio 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

En primer lugar, defina cómo autenticarse con Azure. La opción recomendada y más segura es iniciar sesión mediante OpenID Connect con una aplicación de Microsoft Entra o una identidad administrada asignada por el usuario. Si es necesario, también puede 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 entorno requiere aprobación, una tarea no puede acceder a los secretos del entorno 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

Actualice 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)
    WORKSPACE Nombre del área de trabajo de Azure Machine Learning

Paso 4: Actualiza pipeline.yml con el nombre del clúster de computación

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 para su clúster de computación distinto de cpu-cluster.

  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 cpu-cluster con el nombre de su clúster de cómputo. 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 de trabajos del flujo de trabajo, descargue el código e inicie sesión en Azure con la opció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 bifurcado, abra .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml y compruebe que su flujo de trabajo se vea similar a este.

    Nota:

    El archivo de flujo de trabajo del repositorio puede incluir pasos adicionales (como arranque y validación) que no se muestran aquí. En el ejemplo siguiente se muestran los pasos principales.

    name: cli-jobs-pipelines-nyc-taxi-pipeline
    on:
      workflow_dispatch:
      schedule:
        - cron: "0 0/4 * * *"
      pull_request:
        branches:
          - main
        paths:
          - cli/jobs/pipelines/nyc-taxi/**
          - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml
          - cli/run-pipeline-jobs.sh
          - cli/setup.sh
    permissions:
      id-token: write
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - name: check out repo
          uses: actions/checkout@v4
        - 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 del flujo de trabajo de habilitación de Acciones de GitHub.

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

    Captura de pantalla de la ejecución del flujo de trabajo de Acciones de GitHub.

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 Azure Machine Learning Studio y vaya a 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 ya no necesite el grupo de recursos y el repositorio, limpie los recursos implementados mediante la eliminación del grupo de recursos y el repositorio de GitHub.

Pasos siguientes