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

Git — это популярная система управления версиями, позволяющая совместно использовать проекты и совместно над ними работать.

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

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

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

Совет

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

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

Клонирование репозиториев Git в файловую систему рабочей области

Служба "Машинное обучение Azure" предоставляет общую файловую систему для всех пользователей в рабочей области. Чтобы клонировать репозиторий Git в эту общую папку, рекомендуем вам создать вычислительный экземпляр и открыть терминал. После открытия терминала вы получите доступ к полному клиенту Git и сможете клонировать Git и работать с ним через интерфейс командной строки Git.

Рекомендуется клонировать репозиторий в каталог пользователя, чтобы другие не могли создавать столкновения непосредственно в рабочей ветви.

Совет

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

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

Дополнительные сведения о клонировании см. в руководстве по использованию интерфейса командной строки Git.

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

Создайте новый ключ SSH.

  1. Откройте окно терминала на вкладке записной книжки службы "Машинное обучение Azure".

  2. Вставьте приведенный ниже текст, подставив свой адрес электронной почты.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

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

> Generating public/private rsa key pair.
  1. Когда появится запрос "Введите файл, в который нужно сохранить ключ", нажмите клавишу ВВОД. Так вы примете расположение файла по умолчанию.

  2. Убедитесь, что расположение по умолчанию — это "/home/azureuser/.ssh", и нажмите клавишу ВВОД. В противном случае укажите расположение "/home/azureuser/.ssh".

Совет

Убедитесь, что ключ SSH сохранен в папку "/home/azureuser/.ssh". Этот файл будет сохранен в вычислительном экземпляре, доступном только владельцу вычислительного экземпляра.

> Enter a file in which to save the key (/home/azureuser/.ssh/id_rsa): [Press enter]
  1. В командной строке введите безопасную парольную фразу. Мы рекомендуем добавить парольную фразу в ключ SSH для повышения безопасности.
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

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

  1. В окне терминала скопируйте содержимое файла открытого ключа. Если вы переименовали ключ, замените id_rsa. pub на имя файла открытого ключа.
cat ~/.ssh/id_rsa.pub

Совет

Копирование и вставка в терминале

  • Windows: нажмите клавиши Ctrl-Insert, чтобы скопировать, и Ctrl-Shift-v или Shift-Insert, чтобы вставить данные.
  • Mac OS: Cmd-c для копирования и Cmd-v для вставки.
  • Браузеры FireFox и IE могут не поддерживать разрешения буфера обмена корректно.
  1. Выберите и скопируйте выходные данные ключа SSH в буфер обмена.
  2. Затем выполните действия, чтобы добавить ключ SSH в предпочитаемый тип учетной записи:

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

  1. Скопируйте URL-адрес клонирования Git SSH из репозитория Git.

  2. Вставьте URL-адрес в приведенную ниже команду git clone, чтобы использовать URL-адрес репозитория Git SSH. Он должен выглядеть следующим образом:

git clone git@example.com:GitUser/azureml-example.git
Cloning into 'azureml-example'...

Вы получите ответ следующего вида:

The authenticity of host 'example.com (192.30.255.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.255.112' (RSA) to the list of known hosts.

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

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

  1. Когда появится запрос на продолжение подключения, введите yes. Git клонирует репозиторий и настроит исходное удаленное подключение так, чтобы для подключения в будущих командах Git использовался протокол SSH.

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

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

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

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

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

Совет

Чтобы проверить, доступна ли команда Git в среде разработки, откройте сеанс оболочки, командную строку, PowerShell или другой интерфейс командной строки и введите следующую команду:

git --version

Если Git установлен и находится в соответствующей папке, вы получите ответ вида git version 2.4.1. Дополнительные сведения об установке Git в среде разработки см. на веб-сайте Git.

Просмотр информации в журналах

Информация о Git хранится в свойствах учебного задания. Для просмотра этой информации можно использовать портал Azure или пакет SDK для Python.

Портал Azure

  1. На портале студии выберите свою рабочую область.
  2. Выберите Задания, а затем один из своих экспериментов.
  3. Выберите одно из заданий в столбце Отображаемое имя.
  4. Выберите Выходные данные + журналы, а затем разверните журналы и записи azureml. Выберите ссылку, которая начинается с ###_azure.

Записанная в журнал информация содержит текст, похожий на следующий код JSON:

"properties": {
    "_azureml.ComputeTargetType": "batchai",
    "ContentSnapshotId": "5ca66406-cbac-4d7d-bc95-f5a51dd3e57e",
    "azureml.git.repository_uri": "git@github.com:azure/machinelearningnotebooks",
    "mlflow.source.git.repoURL": "git@github.com:azure/machinelearningnotebooks",
    "azureml.git.branch": "master",
    "mlflow.source.git.branch": "master",
    "azureml.git.commit": "4d2b93784676893f8e346d5f0b9fb894a9cf0742",
    "mlflow.source.git.commit": "4d2b93784676893f8e346d5f0b9fb894a9cf0742",
    "azureml.git.dirty": "True",
    "AzureML.DerivedImageName": "azureml/azureml_9d3568242c6bfef9631879915768deaf",
    "ProcessInfoFile": "azureml-logs/process_info.json",
    "ProcessStatusFile": "azureml-logs/process_status.json"
}

Просмотреть свойства

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

ОБЛАСТЬ ПРИМЕНЕНИЯ: Пакет SDK для Python azure-ai-ml версии 2 (current)

job.properties["azureml.git.commit"]

Следующие шаги