Udostępnij za pośrednictwem


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

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 przedstawiono sposób tworzenia przepływu pracy funkcji GitHub Actions, który kompiluje i wdraża model uczenia maszynowego w usłudze Azure Machine Learning. Trenowanie modelu regresji liniowej scikit-learn na 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. Zalecaną, bezpieczniejszą opcją jest zalogowanie się przy użyciu programu OpenID Connect przy użyciu aplikacji Microsoft Entra lub tożsamości zarządzanej przypisanej przez użytkownika. W razie potrzeby możesz również użyć logowania przy użyciu jednostki usługi i wpisu tajnego. Takie podejście jest mniej bezpieczne i nie jest zalecane.

Generowanie poświadczeń wdrożenia

Aby użyć akcji logowania platformy Azure z funkcją OIDC, należy skonfigurować poświadczenie tożsamości federacyjnej w aplikacji Microsoft Entra lub tożsamości zarządzanej przypisanej przez użytkownika.

Opcja 1. Aplikacja Firmy Microsoft Entra

Opcja 2. Tożsamość zarządzana przypisana przez użytkownika

Tworzenie wpisów tajnych

Musisz podać identyfikator klienta aplikacji, identyfikator katalogu (dzierżawy) i identyfikator subskrypcji do akcji logowania. Te wartości można podać bezpośrednio w przepływie pracy lub przechowywać w wpisach tajnych usługi GitHub i odwoływać się do nich w przepływie pracy. Zapisanie wartości jako wpisów tajnych usługi GitHub jest bezpieczniejszą opcją.

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

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

    Zrzut ekranu przedstawiający dodawanie wpisu tajnego

  3. Wybierz pozycję Nowy wpis tajny repozytorium.

    Uwaga

    Aby zwiększyć bezpieczeństwo przepływu pracy w repozytoriach publicznych, użyj wpisów tajnych środowiska zamiast wpisów tajnych repozytorium. Jeśli środowisko wymaga zatwierdzenia, zadanie nie może uzyskać dostępu do wpisów tajnych środowiska, dopóki jeden z wymaganych recenzentów go nie zatwierdzi.

  4. Utwórz wpisy tajne dla , AZURE_CLIENT_IDAZURE_TENANT_IDi AZURE_SUBSCRIPTION_ID. Skopiuj te wartości z aplikacji Microsoft Entra lub tożsamości zarządzanej przypisanej przez użytkownika dla wpisów tajnych usługi GitHub:

    Wpis tajny usługi GitHub Aplikacja Microsoft Entra lub tożsamość zarządzana przypisana przez użytkownika
    AZURE_CLIENT_ID Client ID
    AZURE_SUBSCRIPTION_ID Identyfikator subskrypcji
    AZURE_TENANT_ID Identyfikator katalogu (dzierżawcy)

    Uwaga

    Ze względów bezpieczeństwa zalecamy używanie wpisów tajnych usługi GitHub zamiast przekazywania wartości bezpośrednio do przepływu pracy.

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

Aby dopasować obszar roboczy, należy zaktualizować zmienne pliku konfiguracji interfejsu wiersza polecenia.

  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 Learning

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

Plik służy pipeline.yml do wdrażania potoku usługi Azure Machine Learning. Potok jest potokiem uczenia maszynowego, a nie potokiem 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 Learning i używa interfejsu wiersza polecenia do trenowania modelu w usłudze Azure Machine Learning.

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 akcji logowania platformy Azure przy użyciu narzędzia OpenID Connect.
  • Sekcja zadań zawiera również akcję konfiguracji, która instaluje i konfiguruje interfejs wiersza polecenia usługi Machine Learning (wersja 2). Po zainstalowaniu interfejsu wiersza polecenia akcja uruchamiania zadania uruchamia plik usługi Azure Machine Learning 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@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. 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 Learning 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 usługi Machine Learning 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