Używanie funkcji GitHub Actions z usługą Azure Machine Edukacja

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)

Rozpocznij pracę z funkcją GitHub Actions w celu wytrenowania modelu w usłudze Azure Machine Learning.

W tym artykule dowiesz się, jak utworzyć przepływ pracy funkcji GitHub Actions, który kompiluje i wdraża model uczenia maszynowego w usłudze Azure Machine Edukacja. Wytrenujesz model regresji liniowej scikit-learn w zestawie danych NYC Taxi.

Funkcja GitHub Actions używa pliku YAML przepływu pracy (.yml) w /.github/workflows/ ścieżce w repozytorium. Ta definicja zawiera różne kroki i parametry tworzące przepływ pracy.

Wymagania wstępne

Przed wykonaniem kroków opisanych w tym artykule upewnij się, że masz następujące wymagania wstępne:

Krok 1. Pobieranie kodu

Rozwidlenie następującego repozytorium w usłudze GitHub:

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

Sklonuj rozwidlenie repozytorium lokalnie.

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

Krok 2. Uwierzytelnianie za pomocą platformy Azure

Najpierw należy zdefiniować sposób uwierzytelniania za pomocą platformy Azure. Możesz użyć jednostki usługi lub Połączenie OpenID.

Generowanie poświadczeń wdrożenia

Utwórz jednostkę usługi za pomocą polecenia az ad sp create-for-rbac w interfejsie wiersza polecenia platformy Azure. Uruchom to polecenie za pomocą usługi Azure Cloud Shell w witrynie Azure Portal lub wybierając przycisk Wypróbuj .

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

Parametr --json-auth jest dostępny w wersjach >interfejsu wiersza polecenia platformy Azure = 2.51.0. Wersje przed tym użyciem --sdk-auth z ostrzeżeniem o wycofaniu.

W powyższym przykładzie zastąp symbole zastępcze identyfikatorem subskrypcji, nazwą grupy zasobów i nazwą aplikacji. Dane wyjściowe to obiekt JSON z poświadczeniami przypisania roli, które zapewniają dostęp do aplikacji usługi App Service podobnej do poniższej. Skopiuj ten obiekt JSON do późniejszego użycia.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

Tworzenie wpisów tajnych

  1. W usłudze GitHub przejdź do repozytorium.

  2. Przejdź do Ustawienia w menu nawigacji.

  3. Wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.

    Zrzut ekranu przedstawiający dodawanie wpisu tajnego

  4. Wybierz pozycję Nowy wpis tajny repozytorium.

  5. Wklej całe dane wyjściowe JSON z polecenia interfejsu wiersza polecenia platformy Azure do pola wartości wpisu tajnego. Nadaj wpisowi tajnym nazwę AZURE_CREDENTIALS.

  6. Wybierz przycisk Add secret (Dodaj wpis tajny).

Krok 3. Aktualizacja setup.sh w celu nawiązania połączenia z obszarem roboczym usługi Azure Machine Edukacja

Musisz zaktualizować zmienne pliku konfiguracji interfejsu wiersza polecenia, aby pasować do obszaru roboczego.

  1. W rozwidlonym repozytorium przejdź do strony azureml-examples/cli/.

  2. Edytuj setup.sh i aktualizuj te zmienne w pliku.

    Zmienna opis
    GRUPA Nazwa grupy zasobów
    LOKALIZACJA Lokalizacja obszaru roboczego (przykład: eastus2)
    OBSZAR ROBOCZY Nazwa obszaru roboczego usługi Azure Machine Edukacja

Krok 4. Aktualizowanie pipeline.yml przy użyciu nazwy klastra obliczeniowego

Użyjesz pipeline.yml pliku do wdrożenia potoku usługi Azure Machine Edukacja. Jest to potok uczenia maszynowego, a nie potok DevOps. Musisz wprowadzić tę aktualizację tylko wtedy, gdy używasz nazwy innej niż cpu-cluster nazwa klastra komputerów.

  1. W rozwidlonym repozytorium przejdź do strony azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml.
  2. Za każdym razem, gdy zobaczysz wartość compute: azureml:cpu-cluster, zaktualizuj wartość cpu-cluster za pomocą nazwy klastra obliczeniowego. Jeśli na przykład klaster ma nazwę my-cluster, nowa wartość to azureml:my-cluster. Istnieje pięć aktualizacji.

Krok 5. Uruchamianie przepływu pracy funkcji GitHub Actions

Przepływ pracy uwierzytelnia się za pomocą platformy Azure, konfiguruje interfejs wiersza polecenia usługi Azure Machine Edukacja i używa interfejsu wiersza polecenia do trenowania modelu w usłudze Azure Machine Edukacja.

Plik przepływu pracy składa się z sekcji wyzwalacza i zadań:

  • Wyzwalacz uruchamia przepływ pracy w on sekcji . Przepływ pracy jest uruchamiany domyślnie zgodnie z harmonogramem cron i po wysłaniu żądania ściągnięcia z pasujących gałęzi i ścieżek. Dowiedz się więcej o zdarzeniach wyzwalających przepływy pracy.
  • W sekcji zadań przepływu pracy wyewidencjonujesz kod i zalogujesz się do platformy Azure przy użyciu wpisu tajnego jednostki usługi.
  • Sekcja zadań zawiera również akcję instalatora, która instaluje i konfiguruje interfejs wiersza polecenia maszyny Edukacja (wersja 2). Po zainstalowaniu interfejsu wiersza polecenia akcja uruchamiania zadania uruchamia plik usługi Azure Machine Edukacja pipeline.yml w celu wytrenowania modelu przy użyciu danych taksówek NYC.

Włączanie przepływu pracy

  1. W rozwidlonym repozytorium otwórz .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml i sprawdź, czy przepływ pracy wygląda następująco.

    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@v1
          with:
            creds: ${{secrets.AZURE_CREDENTIALS}}
        - 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. Wybierz pozycję Wyświetl przebiegi.

  3. Włącz przepływy pracy, wybierając pozycję Rozumiem moje przepływy pracy, przejdź do przodu i włącz je.

  4. Wybierz przepływ pracy cli-jobs-pipelines-nyc-taxi-pipeline i wybierz pozycję Włącz przepływ pracy. Zrzut ekranu przedstawiający włączanie przepływu pracy funkcji GitHub Actions.

  5. Wybierz pozycję Uruchom przepływ pracy i wybierz opcję Uruchom przepływ pracy teraz. Zrzut ekranu przedstawiający uruchamianie przepływu pracy funkcji GitHub Actions.

Krok 6. Weryfikowanie przebiegu przepływu pracy

  1. Otwórz ukończony przebieg przepływu pracy i sprawdź, czy zadanie kompilacji zostało pomyślnie uruchomione. Obok zadania zostanie wyświetlony zielony znacznik wyboru.

  2. Otwórz program Azure Machine Edukacja Studio i przejdź do przykładu nyc-taxi-pipeline-example. Sprawdź, czy każda część zadania (przygotowywanie, przekształcanie, trenowanie, przewidywanie, wynik) została ukończona i czy jest widoczna zielona znacznik wyboru.

    Zrzut ekranu przedstawiający pomyślne uruchomienie programu Machine Edukacja Studio.

Czyszczenie zasobów

Gdy grupa zasobów i repozytorium nie są już potrzebne, wyczyść wdrożone zasoby, usuwając grupę zasobów i repozytorium GitHub.

Następne kroki