Интеграция Git со службой "Машинное обучение Azure"

Git — это популярная система управления версиями, позволяющая совместно использовать проекты и совместно над ними работать. В этой статье объясняется, как Машинное обучение Azure интегрироваться с локальным репозиторием Git для отслеживания репозитория, ветви и текущей информации о фиксации в рамках задания обучения.

Машинное обучение Azure полностью поддерживает репозитории Git для отслеживания работы. Клонировать репозитории можно непосредственно на общую файловую систему рабочей области, использовать Git на локальной рабочей станции или использовать Git из конвейера непрерывной интеграции и непрерывного развертывания (CI/CD).

При отправке задания обучения Машинное обучение Azure с исходными файлами из локального репозитория Git информация о репозитории отслеживается в рамках задания обучения. Так как информация поступает из локального репозитория Git, она не привязана к конкретному центральному репозиторию. Репозиторий можно клонировать из любой службы, совместимой с Git, например GitHub, GitLab, Bitbucket или Azure DevOps.

Совет

Visual Studio Code можно использовать для взаимодействия с Git с помощью графического пользовательского интерфейса. Сведения о подключении к удаленному экземпляру вычислений Машинное обучение Azure с помощью Visual Studio Code см. в статье "Запуск Visual Studio Code, интегрированный с Машинное обучение Azure (предварительная версия)".

Дополнительные сведения о функциях управления версиями Visual Studio Code см. в статье "Использование управления версиями" в Visual Studio Code и работа с GitHub в Visual Studio Code.

Репозитории Git в файловой системе рабочей области

Машинное обучение Azure предоставляет общую файловую систему для всех пользователей в рабочей области. Лучший способ клонировать репозиторий Git в эту общую папку — создать вычислительный экземпляр и открыть терминал. В терминале у вас есть доступ к полному клиенту Git и клонировать и работать с Git с помощью интерфейса командной строки Git. Дополнительные сведения см . в Git CLI.

Вы можете клонировать любой репозиторий Git, в который можно выполнить проверку подлинности, например репозиторий GitHub, Azure Repos или BitBucket. Лучше клонировать репозиторий в каталог пользователей, чтобы другие пользователи не сталкивались непосредственно в рабочей ветви.

Существует ряд различий между клонированием в локальную файловую систему вычислительного экземпляра или клонированием в общую файловую систему, подключенную как ~/cloudfiles/code/ directory. Как правило, клонирование в локальную файловую систему обеспечивает лучшую производительность, чем клонирование в подключенную файловую систему. Однако при удалении и повторном создании вычислительного экземпляра локальная файловая система теряется, а подключенная общая файловая система сохраняется.

Клонирование репозитория Git с помощью SSH

Клонировать репозиторий можно с помощью протокола Secure Shell (SSH). Чтобы использовать SSH, необходимо пройти проверку подлинности учетной записи Git с помощью ключа SSH.

Создание и сохранение нового ключа SSH

Чтобы создать новый ключ SSH, перейдите на страницу Студия машинного обучения Azure Notebook, откройте терминал и выполните следующую команду, подставив адрес электронной почты.

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

Команда возвращает следующие выходные данные:

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

Убедитесь, что расположение в предыдущем выходных данных равно /home/azureuser/.sshили измените его на это расположение, а затем нажмите клавишу ВВОД.

Рекомендуется добавить парольную фразу в ключ SSH для дополнительной безопасности. В следующих запросах введите безопасную парольную фразу.

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

При нажатии клавиши ВВОД ssh-keygen команда создает новый ключ SSH с предоставленным адресом электронной почты в виде метки. Файл ключа сохраняется в вычислительном экземпляре и доступен только владельцу вычислительного экземпляра.

Добавление открытого ключа в учетную запись Git

Необходимо добавить открытый ключ SSH в учетную запись Git. Чтобы получить ключ, выполните следующую команду в окне терминала. Если файл ключа имеет другое имя, замените id_ed25519.pub его именем файла открытого ключа.

cat ~/.ssh/id_ed25519.pub

Команда отображает содержимое файла открытого ключа. Скопируйте выходное значение.

Совет

Чтобы скопировать и вставить в окно терминала, используйте эти сочетания клавиш в зависимости от операционной системы:

  • Windows: CTRL+C или CTRL+INSERT для копирования, CTRL+V или CTRL+SHIFT+V для вставки.
  • MacOS: Cmd+C для копирования и вставки cmd+V.

Некоторые браузеры могут не поддерживать разрешения буфера обмена должным образом.

Добавьте ключ SSH в учетную запись Git, выполнив следующие инструкции в зависимости от службы Git:

Клонирование репозитория Git с помощью SSH

Чтобы клонировать репозиторий Git, скопируйте URL-адрес Клонирования SSH Git из репозитория. В терминале запустите git clone url-адрес клонирования SSH Git. Например:

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

SSH может отобразить отпечаток SSH сервера и попросить проверить его, как показано в следующем примере.

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])?

SSH отображает этот отпечаток при подключении к неизвестному узлу и защищает вас от атак типа "злоумышленник в середине". Убедитесь, что отпечатки пальцев соответствуют одному из отпечатков пальцев на странице открытых ключей SSH. После принятия отпечатка пальца узла SSH не предложит вам снова, если изменения отпечатков пальцев не будут изменены.

SSH отображает ответ, как показано в следующем примере:

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': 

После ввода парольной фразы Git клонирует репозиторий и настраивает удаленный источник для подключения к SSH для будущих команд Git.

Трассировка кода, поступающего из репозиториев Git

При отправке учебного задания из пакета SDK для Python или интерфейса командной строки службы "Машинное обучение" файлы, необходимые для обучения модели, отправляются в рабочую область. git Если команда доступна в среде разработки, процесс отправки проверяет, хранятся ли исходные файлы в репозитории Git.

В этом случае процесс отправляет репозиторий, ветвь и текущую информацию о фиксации в рамках задания обучения. Эти сведения хранятся в следующих свойствах задания обучения для заданий, использующих средство оценки, конвейер машинного обучения или выполнение скрипта.

Свойство Команда Git для получения значения Description
azureml.git.repository_uri или mlflow.source.git.repoURL git ls-remote --get-url URI, из который был клонирован репозиторий.
azureml.git.branch или mlflow.source.git.branch git symbolic-ref --short HEAD Ветвь, активная при отправке задания.
azureml.git.commit или mlflow.source.git.commit git rev-parse HEAD Хэш фиксации кода, отправленного для задания.
azureml.git.dirty git status --porcelain . True Значение , если ветвь или фиксация грязна, в противном случае false.

git Если команда недоступна в среде разработки или ваши учебные файлы не находятся в репозитории Git, информация, связанная с Git, не отслеживается.

Совет

Чтобы проверить, доступна ли git команда в среде разработки, выполните git --version команду в интерфейсе командной строки. Если Git установлен и находится в пути, вы получите ответ, аналогичный git version 2.43.0. Сведения об установке Git в среде разработки см. на веб-сайте Git.

Просмотр сведений о Git

Сведения Git хранятся в виде кода JSON в свойствах для задания обучения. Данные Git, зарегистрированные в журнале, могут содержать следующие свойства:

"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>",

Эти сведения можно просмотреть с помощью портал Azure, пакета SDK для Python или Azure CLI.

Портал Azure

В рабочей области в Студия машинного обучения Azure выберите задание на странице "Задания". В разделе "Свойства" страницы обзора задания выберите необработанный JSON в разделе "Просмотреть все свойства".

В формате JSON найдите свойства Git, например:

    "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",
        ...
    },

Пакет SDK для Python версии 2

После отправки учебного запуска возвращается объект Job . Атрибут properties этого объекта содержит записанные сведения о Git. Например, можно выполнить следующую команду, чтобы получить хэш фиксации:

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

Azure CLI 2.0

Чтобы отобразить сведения о Git, можно выполнить az ml job show команду с аргументом --query . Например, следующий запрос получает mlflow.source.git.commit значение свойства:

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