Udostępnij za pośrednictwem


Integracja z usługą Git dla usługi Azure Machine Learning

Git to popularny system kontroli wersji, który umożliwia udostępnianie projektów i współpracę nad nimi. W tym artykule wyjaśniono, jak usługa Azure Machine Learning może integrować się z lokalnym repozytorium Git w celu śledzenia repozytorium, gałęzi i bieżących informacji o zatwierdzeniu w ramach zadania szkoleniowego.

Usługa Azure Machine Learning w pełni obsługuje repozytoria Git na potrzeby śledzenia pracy. Repozytoria można sklonować bezpośrednio do udostępnionego systemu plików obszaru roboczego, użyć narzędzia Git na lokalnej stacji roboczej lub użyć usługi Git z potoku ciągłej integracji i ciągłego wdrażania (CI/CD).

Po przesłaniu zadania szkoleniowego usługi Azure Machine Learning zawierającego pliki źródłowe z lokalnego repozytorium Git informacje o repozytorium są śledzone w ramach zadania szkoleniowego. Ponieważ informacje pochodzą z lokalnego repozytorium Git, nie są powiązane z żadnym konkretnym centralnym repozytorium. Repozytorium można sklonować z dowolnej usługi zgodnej z usługą Git, taką jak GitHub, GitLab, Bitbucket lub Azure DevOps.

Napiwek

Program Visual Studio Code umożliwia interakcję z usługą Git za pomocą graficznego interfejsu użytkownika. Aby nawiązać połączenie ze zdalnym wystąpieniem obliczeniowym usługi Azure Machine Learning przy użyciu programu Visual Studio Code, zobacz Uruchamianie programu Visual Studio Code zintegrowanego z usługą Azure Machine Learning (wersja zapoznawcza).

Aby uzyskać więcej informacji na temat funkcji kontroli wersji programu Visual Studio Code, zobacz Używanie kontroli wersji w programie Visual Studio Code i Praca z usługą GitHub w programie Visual Studio Code.

Repozytoria Git w systemie plików obszaru roboczego

Usługa Azure Machine Learning udostępnia udostępniony system plików dla wszystkich użytkowników w obszarze roboczym. Najlepszym sposobem sklonowania repozytorium Git do tego udziału plików jest utworzenie wystąpienia obliczeniowego i otwarcie terminalu. W terminalu masz dostęp do pełnego klienta Usługi Git i możesz klonować usługę Git i pracować z usługą Git przy użyciu interfejsu wiersza polecenia usługi Git. Aby uzyskać więcej informacji, zobacz Interfejs wiersza polecenia usługi Git.

Możesz sklonować dowolne repozytorium Git, do którego można się uwierzytelnić, takie jak repozytorium GitHub, Azure Repos lub BitBucket. Najlepiej sklonować repozytorium do katalogu użytkowników, aby inni użytkownicy nie zderzyli się bezpośrednio z gałęzią roboczą.

Istnieją pewne różnice między klonowaniem do lokalnego systemu plików wystąpienia obliczeniowego lub klonowania do udostępnionego systemu plików zainstalowanego jako katalog ~/cloudfiles/code/ . Ogólnie rzecz biorąc, klonowanie do lokalnego systemu plików zapewnia lepszą wydajność niż klonowanie do zainstalowanego systemu plików. Jeśli jednak usuniesz i ponownie utworzysz wystąpienie obliczeniowe, lokalny system plików zostanie utracony, podczas gdy zainstalowany udostępniony system plików zostanie zachowany.

Klonowanie repozytorium Git przy użyciu protokołu SSH

Repozytorium można sklonować przy użyciu protokołu Secure Shell (SSH). Aby użyć protokołu SSH, musisz uwierzytelnić swoje konto Git przy użyciu protokołu SSH przy użyciu klucza SSH.

Generowanie i zapisywanie nowego klucza SSH

Aby wygenerować nowy klucz SSH, możesz przejść do strony notesu usługi Azure Machine Learning Studio, otworzyć terminal i uruchomić następujące polecenie, zastępując adres e-mail.

ssh-keygen -t ed25519 -C "your_email@example.com"

Polecenie zwraca następujące dane wyjściowe:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/azureuser/.ssh/id_ed25519):

Upewnij się, że lokalizacja w poprzednich danych wyjściowych to /home/azureuser/.ssh, lub zmień ją na lokalizację, a następnie naciśnij Enter.

Najlepiej dodać hasło do klucza SSH w celu dodania zabezpieczeń. W poniższych monitach wprowadź bezpieczne hasło.

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

Po naciśnięciu ssh-keygen Enter polecenie generuje nowy klucz SSH z podanym adresem e-mail jako etykietą. Plik klucza zapisuje w wystąpieniu obliczeniowym i jest dostępny tylko dla właściciela wystąpienia obliczeniowego.

Dodawanie klucza publicznego do konta usługi Git

Musisz dodać publiczny klucz SSH do konta usługi Git. Aby uzyskać klucz, uruchom następujące polecenie w oknie terminalu. Jeśli plik klucza ma inną nazwę, zastąp id_ed25519.pub ciąg nazwą pliku klucza publicznego.

cat ~/.ssh/id_ed25519.pub

Polecenie wyświetla zawartość pliku klucza publicznego. Skopiuj dane wyjściowe.

Napiwek

Aby skopiować i wkleić w oknie terminalu, użyj tych skrótów klawiaturowych, w zależności od systemu operacyjnego:

  • Windows: Ctrl+C lub Ctrl+Insert, aby skopiować, Ctrl+V lub Ctrl+Shift+V, aby wkleić.
  • MacOS: Cmd+C, aby skopiować i cmd+V wkleić.

Niektóre przeglądarki mogą nie obsługiwać prawidłowo uprawnień schowka.

Dodaj klucz SSH do konta usługi Git, korzystając z poniższych instrukcji, w zależności od usługi Git:

Klonowanie repozytorium Git przy użyciu protokołu SSH

Aby sklonować repozytorium Git, skopiuj adres URL klonowania git SSH z repozytorium. W terminalu uruchom polecenie git clone , a następnie adres URL klonowania git protokołu SSH. Na przykład:

git clone git@example.com:GitUser/azureml-example.git

Protokół SSH może wyświetlić odcisk palca SSH serwera i poprosić o jego zweryfikowanie, jak pokazano w poniższym przykładzie.

The authenticity of host 'github.com (000.00.000.0)' can't be established.
ECDSA key fingerprint is SHA256:0000000000000000000/00000000/00000000.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Protokół SSH wyświetla ten odcisk palca, gdy łączy się z nieznanym hostem, aby chronić cię przed atakami typu man-in-the-middle. Należy sprawdzić, czy odcisk palca jest zgodny z jednym z odcisków palców na stronie kluczy publicznych SSH. Po zaakceptowaniu odcisku palca hosta protokół SSH nie wyświetli monitu ponownie, chyba że odcisk palca ulegnie zmianie.

Protokół SSH wyświetla odpowiedź podobną do następującego przykładu:

Cloning into 'azureml-example'...
Warning: Permanently added 'github.com,000.00.000.0' (ECDSA) to the list of known hosts.
Enter passphrase for key '/home/azureuser/.ssh/id_ed25519': 

Po wprowadzeniu hasła narzędzie Git klonuje repozytorium i konfiguruje zdalne źródło w celu nawiązania połączenia z protokołem SSH na potrzeby przyszłych poleceń git.

Śledzenie kodu pochodzącego z repozytoriów Git

Po przesłaniu zadania szkoleniowego z zestawu SDK języka Python lub interfejsu wiersza polecenia usługi Machine Learning pliki potrzebne do wytrenowania modelu zostaną przekazane do obszaru roboczego. git Jeśli polecenie jest dostępne w środowisku projektowym, proces przekazywania sprawdza, czy pliki źródłowe są przechowywane w repozytorium Git.

Jeśli tak, proces przekazuje repozytorium Git, gałąź i bieżące informacje zatwierdzenia w ramach zadania szkoleniowego. Informacje są przechowywane we następujących właściwościach zadania szkoleniowego dla zadań, które używają narzędzia do szacowania, potoku uczenia maszynowego lub uruchomienia skryptu.

Właściwości Polecenie Git w celu pobrania wartości opis
azureml.git.repository_uri lub mlflow.source.git.repoURL git ls-remote --get-url Identyfikator URI sklonowany z repozytorium.
azureml.git.branch lub mlflow.source.git.branch git symbolic-ref --short HEAD Aktywna gałąź po przesłaniu zadania.
azureml.git.commit lub mlflow.source.git.commit git rev-parse HEAD Skrót zatwierdzenia kodu, który został przesłany do zadania.
azureml.git.dirty git status --porcelain . True jeśli gałąź lub zatwierdzenie jest zanieczyszczone, w przeciwnym razie false.

git Jeśli polecenie nie jest dostępne w środowisku programistycznym lub pliki szkoleniowe nie znajdują się w repozytorium Git, żadne informacje związane z usługą Git nie są śledzone.

Napiwek

Aby sprawdzić, czy git polecenie jest dostępne w środowisku projektowym, uruchom git --version polecenie w interfejsie wiersza polecenia. Jeśli usługa Git jest zainstalowana i w ścieżce, otrzymasz odpowiedź podobną do git version 2.43.0. Aby uzyskać informacje na temat instalowania usługi Git w środowisku projektowym, zobacz witrynę internetową git.

Wyświetlanie informacji o usłudze Git

Informacje o usłudze Git są przechowywane jako kod JSON we właściwościach zadania szkoleniowego. Zarejestrowane informacje usługi Git mogą zawierać następujące właściwości:

"azureml.git.repository_uri": "git@github.com:azure/<repo-name>",
"azureml.git.branch": "<branch-name>",
"azureml.git.commit": "<commit-id>",
"azureml.git.dirty": "<True/False>",
"mlflow.source.git.repoURL": "git@github.com:azure/<repo-name>",
"mlflow.source.git.branch": "<branch-name>",
"mlflow.source.git.commit": "<commit-id>",

Te informacje można wyświetlić przy użyciu witryny Azure Portal, zestawu SDK języka Python lub interfejsu wiersza polecenia platformy Azure.

Azure Portal

W obszarze roboczym w usłudze Azure Machine Learning Studio wybierz zadanie na stronie Zadania . W sekcji Właściwości strony Przegląd zadania wybierz pozycję Nieprzetworzone dane JSON w obszarze Zobacz wszystkie właściwości.

W formacie JSON wyszukaj właściwości usługi Git, na przykład:

    "properties": {
        "mlflow.source.git.repoURL": "git@github.com:azure/azureml-examples",
        "mlflow.source.git.branch": "main",
        "mlflow.source.git.commit": "0000000000000000000000000000000000000000",
        "azureml.git.dirty": "False",
        ...
    },

Zestaw PYTHON SDK w wersji 2

Po przesłaniu przebiegu trenowania zwracany jest obiekt Zadania . Atrybut properties tego obiektu zawiera zarejestrowane informacje git. Na przykład możesz uruchomić następujące polecenie, aby pobrać skrót zatwierdzenia:

job.properties["mlflow.source.git.commit"]

Interfejs wiersza polecenia platformy Azure V2

Możesz uruchomić az ml job show polecenie z argumentem --query , aby wyświetlić informacje o usłudze Git. Na przykład następujące zapytanie pobiera mlflow.source.git.commit wartość właściwości:

az ml job show --name my-job-id --query "{GitCommit:properties.azureml.git.commit} --resource-group my-resource-group --workspace-name my-workspace"