Použití GitHub Actions se službou Azure Machine Learning

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)

Začněte s využitím GitHub Actions k natrénování modelu ve službě Azure Machine Learning.

Tento článek vás naučí, jak vytvořit pracovní postup GitHub Actions, který sestaví a nasadí model strojového učení do služby Azure Machine Learning. Vytrénujete model lineární regrese scikit-learn v datové sadě taxi NYC.

Ve vašem úložišti GitHub Actions používá soubor pracovního postupu YAML (.yml) nacházející se v cestě /.github/workflows/. Tato definice obsahuje různé kroky a parametry, které tvoří pracovní postup.

Požadavky

Krok 1: Získání kódu

Na GitHubu forkněte následující úložiště.

https://github.com/azure/azureml-examples

Naklonujte své forkované úložiště místně.

git clone https://github.com/YOUR-USERNAME/azureml-examples

Krok 2: Ověření pomocí Azure

Nejprve definujte, jak se ověřovat pomocí Azure. Doporučenou, bezpečnější možností je přihlásit se pomocí OpenID Connect s aplikací Microsoft Entra nebo spravovanou identitou přiřazenou uživatelem. V případě potřeby se můžete také přihlásit pomocí principála služby a tajemství. Tento přístup je méně zabezpečený a nedoporučuje se.

Generování přihlašovacích údajů pro nasazení

Pokud chcete s OIDC použít akci přihlášení k Azure, musíte nakonfigurovat přihlašovací údaje federované identity v aplikaci Microsoft Entra nebo spravované identitě přiřazené uživatelem.

Možnost 1: Aplikace Microsoft Entra

Možnost 2: Spravovaná identita přiřazená uživatelem

Vytváření tajných kódů

K akci přihlášení musíte zadat ID klienta, ID adresáře (tenanta) a ID předplatného vaší aplikace. Tyto hodnoty je možné zadat buď přímo v pracovním postupu, nebo je můžete uložit v tajných kódech GitHubu a odkazovat na je ve vašem pracovním postupu. Uložením hodnot jako tajných kódů GitHubu je bezpečnější možnost.

  1. Na GitHubu přejděte do svého úložiště.

  2. Vyberte Zabezpečení > Tajemství a proměnné > Akce.

    Snímek obrazovky s přidáváním tajného údaje

  3. Vyberte Nové tajemství úložiště.

    Poznámka:

    Pokud chcete zvýšit zabezpečení pracovního postupu ve veřejných úložištích, používejte tajné kódy prostředí místo tajných kódů úložiště. Pokud prostředí vyžaduje schválení, úloha nemůže získat přístup k tajným kódům prostředí, dokud ho některý z požadovaných kontrolorů neschválí.

  4. Vytváření tajných kódů pro AZURE_CLIENT_ID, AZURE_TENANT_IDa AZURE_SUBSCRIPTION_ID. Zkopírujte tyto hodnoty z vaší aplikace Microsoft Entra nebo spravované identity přiřazené uživatelem pro tajné kódy GitHubu:

    Tajný kód GitHubu Identita spravovaná aplikací Microsoft Entra nebo přiřazená uživatelem
    AZURE_CLIENT_ID ID klienta
    AZURE_PŘEDPLATNÉ_ID Identifikátor předplatného
    AZURE_TENANT_ID ID adresáře (klienta)

    Poznámka:

    Z bezpečnostních důvodů doporučujeme místo předávání hodnot přímo pracovnímu postupu používat tajné kódy GitHubu.

Krok 3: Aktualizujte setup.sh tak, aby se připojil k pracovnímu prostoru Azure Machine Learning

Aktualizujte proměnné instalačního souboru rozhraní příkazového řádku tak, aby odpovídaly vašemu pracovnímu prostoru.

  1. Ve vámi vytvořeném forku úložiště přejděte na azureml-examples/cli/.

  2. Upravte a aktualizujte setup.sh tyto proměnné v souboru.

    Proměnná Popis
    GROUP Název skupiny prostředků
    LOCATION Umístění pracovního prostoru (příklad: eastus2)
    WORKSPACE Název pracovního prostoru Azure Machine Learning

Krok 4: Aktualizace pipeline.yml názvu výpočetního clusteru

Použijte soubor pipeline.yml k nasazení pipeline v Azure Machine Learning. Pipeline je pipeline strojového učení, nikoli pipeline DevOps. Tuto aktualizaci musíte provést jenom v případě, že používáte jiný název než cpu-cluster název výpočetního clusteru.

  1. Ve vašem forknutém úložišti přejděte na azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml.
  2. Pokaždé, když uvidíte compute: azureml:cpu-cluster, aktualizujte hodnotu názvem výpočetního cpu-cluster clusteru. Pokud je váš cluster například pojmenovaný my-cluster, bude nová hodnota azureml:my-cluster. Existuje pět aktualizací.

Krok 5: Spuštění pracovního postupu GitHub Actions

Váš pracovní postup se ověřuje pomocí Azure, nastavuje rozhraní příkazového řádku služby Azure Machine Learning a používá rozhraní příkazového řádku k trénování modelu ve službě Azure Machine Learning.

Soubor pracovního postupu se skládá z oddílu triggeru a úloh:

  • Trigger spustí pracovní postup v on části. Pracovní postup se spouští ve výchozím nastavení podle plánu cron a při vytvoření pull requestu z odpovídajících větví a cest. Přečtěte si další informace o událostech, které aktivují pracovní postupy.
  • V části Úlohy pracovního postupu si projděte kód a přihlaste se k Azure pomocí akce přihlášení k Azure pomocí OpenID Connect.
  • Sekce úloh také obsahuje akci nastavení, která nainstaluje a nastaví CLI pro strojové učení (v2). Po instalaci CLI spustí příkaz spuštění váš soubor Azure Machine Learning pipeline.yml k trénování modelu s daty NYC taxi.

Aktivujte svůj pracovní postup

  1. V rozvětveném úložišti otevřete .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml a ověřte, že váš pracovní postup vypadá nějak takto.

    Poznámka:

    Soubor pracovního postupu v úložišti může obsahovat další kroky (například bootstrapping a ověřování), které se zde nezobrazují. Následující příklad ukazuje základní kroky.

    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. Vyberte Zobrazit běhy.

  3. Povolte pracovní postupy výběrem možnosti Rozumím svým pracovním postupům, pokračujte a povolte je.

  4. Vyberte pracovní postup cli-jobs-pipelines-nyc-taxi-pipeline a aktivujte pracovní postup.

    Snímek obrazovky s povolením pracovního postupu GitHub Actions

  5. Vyberte Spustit pracovní postup a zvolte možnost Spustit pracovní postup .

    Snímek obrazovky se spuštěním pracovního postupu GitHub Actions

Krok 6: Ověření spuštění pracovního postupu

  1. Otevřete dokončené spuštění pracovního postupu a ověřte, že se úloha sestavení úspěšně spustila. Vedle úlohy se zobrazí zelená značka zaškrtnutí.

  2. Otevřete Azure Machine Learning Studio a přejděte na příklad nyc-taxi-pipeline-example. Ověřte, že každá část úlohy (příprava, transformace, trénování, předpověď, skóre) byla dokončena a že se zobrazí zelené zaškrtnutí.

    Snímek obrazovky úspěšného spuštění nástroje Machine Learning Studio

Úklid prostředků

Pokud už skupinu prostředků a úložiště nepotřebujete, vyčistěte prostředky, které jste nasadili, odstraněním skupiny prostředků a úložiště GitHub.

Další kroky