Использование частных пакетов Python с Машинным обучением Azure

ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python azureml версии 1

Из этой статьи вы узнаете, как безопасно использовать частные пакеты Python в Машинном обучении Azure. Варианты использования частных пакетов Python:

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

Выбор подхода зависит от количества пакетов: несколько штук для одной рабочей области Машинного обучения Azure или большой репозиторий для всех рабочих областей в пределах организации.

Частные пакеты используются через класс Environment (среда). В среде вы объявляете, какие пакеты Python будут использоваться, включая частные. Дополнительные сведения о средах в Машинном обучении Azure см. в статье Создавайте и используйте программные среды в Машинном обучении Azure.

Предварительные требования

Использование небольшого числа пакетов для разработки и тестирования

Для небольшого числа частных пакетов в одной рабочей области используйте статический метод Environment.add_private_pip_wheel(). Такой подход позволяет быстро добавить в рабочую область частный пакет, что очень удобно для целей разработки и тестирования.

Укажите аргумент пути к файлу в локальном файле wheel и выполните команду add_private_pip_wheel. Эта команда возвращает URL-адрес для отслеживания расположения пакета в рабочей области. Сохраните URL-адрес хранилища и передайте его в метод add_pip_package().

whl_url = Environment.add_private_pip_wheel(workspace=ws,file_path = "my-custom.whl")
myenv = Environment(name="myenv")
conda_dep = CondaDependencies()
conda_dep.add_pip_package(whl_url)
myenv.python.conda_dependencies=conda_dep

На внутреннем уровне служба "Машинное обучение Azure" заменяет URL-адрес защищенным подписанным URL-адресом, поэтому файл wheel остается частным и защищенным.

Использование репозитория пакетов из веб-канала Azure DevOps

Если вы активно разрабатываете пакеты Python для приложения машинного обучения, их можно разместить как артефакты в репозитории Azure DevOps и опубликовать в виде веб-канала. Такой подход позволяет интегрировать рабочий процесс DevOps для создания пакетов в рабочую область машинного обучения Azure. Чтобы узнать, как с помощью Azure DevOps настроить веб-каналы Python, прочитайте статью Начало работы с пакетами Python в Azure Artifacts.

В этом подходе для проверки подлинности в репозитории используется личный маркер доступа. Такой же подход применим и к другим репозиториям с проверкой подлинности на основе маркеров, например к закрытым репозиториям GitHub.

  1. Создайте личный маркер доступа для экземпляра Azure DevOps. Задайте для токена область действия Упаковка > Чтение.

  2. Добавьте URL-адрес Azure DevOps и личный маркер доступа в качестве свойств рабочей области, применив метод Workspace.set_connection.

    from azureml.core import Workspace
    
    pat_token = input("Enter secret token")
    ws = Workspace.from_config()
    ws.set_connection(name="connection-1", 
       category = "PythonFeed",
       target = "https://pkgs.dev.azure.com/<MY-ORG>", 
       authType = "PAT", 
       value = pat_token) 
    
  3. Создайте среду Машинного обучения Azure и добавьте в нее пакеты Python из веб-канала.

    from azureml.core import Environment
    from azureml.core.conda_dependencies import CondaDependencies
    
    env = Environment(name="my-env")
    cd = CondaDependencies()
    cd.add_pip_package("<my-package>")
    cd.set_pip_option("--extra-index-url https://pkgs.dev.azure.com/<MY-ORG>/_packaging/<MY-FEED>/pypi/simple")")
    env.python.conda_dependencies=cd
    

Теперь среда готова к использованию для обучения или развертывания конечной точки веб-службы. При создании среды Машинное обучение Azure применит личный маркер доступа для проверки подлинности в веб-канале с подходящим базовым URL-адресом.

Использование репозитория пакетов из частного хранилища

Вы можете использовать пакеты из учетной записи хранения Azure на корпоративном брандмауэре. Эта учетная запись хранения может содержать курированный набор пакетов или внутреннее зеркало общедоступных пакетов.

Сведения о настройке этого частного хранилища см. в разделе Защита учетных записей хранения Azure с помощью конечных точек службы. Также вам следует разместить Реестр контейнеров Azure (ACR) за виртуальной сетью.

Важно!

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

После завершения этих настроек вы сможете использовать для ссылки на пакеты в определении среды Машинного обучения Azure полные URL-адреса этих пакетов в хранилище больших двоичных объектов Azure.

Дальнейшие действия