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:
Obszar roboczy usługi Azure Machine Learning. Jeśli go nie masz, wykonaj kroki opisane w artykule Szybki start: tworzenie zasobów obszaru roboczego, aby je utworzyć.
Aby zainstalować zestaw PYTHON SDK w wersji 2, użyj następującego polecenia:
pip install azure-ai-ml azure-identity
Aby zaktualizować istniejącą instalację zestawu SDK do najnowszej wersji, użyj następującego polecenia:
pip install --upgrade azure-ai-ml azure-identity
Aby uzyskać więcej informacji, zobacz Instalowanie zestawu PYTHON SDK w wersji 2 dla usługi Azure Machine Learning.
- Konto usługi GitHub. Jeśli nie masz takiego konta, zarejestruj się bezpłatnie.
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
- Utwórz aplikację Firmy Microsoft Entra przy użyciu jednostki usługi według witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.
- Skopiuj wartości identyfikatora klienta, identyfikatora subskrypcji i identyfikatora katalogu (dzierżawy), aby użyć ich później w przepływie pracy funkcji GitHub Actions.
- Przypisz odpowiednią rolę do jednostki usługi za pomocą witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.
- Skonfiguruj poświadczenie tożsamości federacyjnej w aplikacji Microsoft Entra w celu zaufania tokenów wystawionych przez funkcję GitHub Actions do repozytorium GitHub.
Opcja 2. Tożsamość zarządzana przypisana przez użytkownika
- Utwórz tożsamość zarządzaną przypisaną przez użytkownika.
- Skopiuj wartości identyfikatora klienta, identyfikatora subskrypcji i identyfikatora katalogu (dzierżawy), aby użyć ich później w przepływie pracy funkcji GitHub Actions.
- Przypisz odpowiednią rolę do tożsamości zarządzanej przypisanej przez użytkownika.
- Skonfiguruj poświadczenia tożsamości federacyjnej w tożsamości zarządzanej przypisanej przez użytkownika do tokenów zaufania wystawionych przez funkcję GitHub Actions w repozytorium GitHub.
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ą.
W usłudze GitHub przejdź do repozytorium.
Wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.
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.
Utwórz wpisy tajne dla ,
AZURE_CLIENT_ID
AZURE_TENANT_ID
iAZURE_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.
W rozwidlonym repozytorium przejdź do strony
azureml-examples/cli/
.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.
- W rozwidlonym repozytorium przejdź do strony
azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml
. - 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ść toazureml: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
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
Wybierz pozycję Wyświetl przebiegi.
Włącz przepływy pracy, wybierając pozycję Rozumiem moje przepływy pracy, przejdź do przodu i włącz je.
Wybierz przepływ pracy cli-jobs-pipelines-nyc-taxi-pipeline i wybierz pozycję Włącz przepływ pracy.
Wybierz pozycję Uruchom przepływ pracy i wybierz opcję Uruchom przepływ pracy teraz.
Krok 6. Weryfikowanie przebiegu przepływu pracy
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.
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.
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.