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 dowiesz się, jak utworzyć przepływ pracy funkcji GitHub Actions, który kompiluje i wdraża model uczenia maszynowego w usłudze Azure Machine Learning. 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:
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. Możesz użyć jednostki usługi lub openID Connect.
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
W usłudze GitHub przejdź do repozytorium.
Przejdź do pozycji Ustawienia w menu nawigacji.
Wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.
Wybierz pozycję Nowy wpis tajny repozytorium.
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
.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 Learning
Musisz zaktualizować zmienne pliku konfiguracji interfejsu wiersza polecenia, aby pasować do obszaru roboczego.
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
Użyjesz pipeline.yml
pliku do wdrożenia potoku usługi Azure Machine Learning. 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.
- 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 wpisu tajnego jednostki usługi.
- 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@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
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.