Создание рабочих областей Машинного обучения Azure и управление ими

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

По мере изменения ваших потребностей или увеличения требований к автоматизации вы также можете создавать и удалять рабочие области с помощью CLI или расширения VS Code.

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

Ограничения

  • При создании рабочей области можно либо автоматически создать службы, необходимые для рабочей области, либо использовать существующие службы. Если вы хотите использовать существующие службы из подписки Azure, отличной от рабочей области, необходимо зарегистрировать пространство имен Машинного обучения Azure в подписке, которая содержит эти службы. Например, при создании рабочей области в подписке A, которая использует учетную запись хранения из подписки B, пространство имен Машинного обучения Azure должно быть зарегистрировано в подписке B, прежде чем можно будет использовать учетную запись хранения с рабочей областью.

    Поставщик ресурсов для Машинного обучения Azure — Microsoft.MachineLearningServices. Сведения о наличии и способах регистрации см. в статье Поставщики и типы ресурсов Azure.

    Важно!

    Это относится только к ресурсам, предоставленным при создании рабочей области: учетные записи хранения Azure, реестр контейнеров Azure, Azure Key Vault и Application Insights.

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

Создание рабочей области

  • Спецификация по умолчанию. По умолчанию зависимые ресурсы, а также группа ресурсов будут созданы автоматически. Этот код создает рабочую область с именем myworkspace и группу ресурсов с именем myresourcegroup в eastus2.

    from azureml.core import Workspace
    
    ws = Workspace.create(name='myworkspace',
                   subscription_id='<azure-subscription-id>',
                   resource_group='myresourcegroup',
                   create_resource_group=True,
                   location='eastus2'
                   )
    

    Задайте для параметра create_resource_group значение False, если у вас уже есть группа ресурсов Azure, которую вы хотите использовать для этой рабочей области.

  • Использование нескольких клиентов. Если у вас есть несколько учетных записей, добавьте идентификатор клиента Azure Active Directory, который вы хотите использовать. Найдите идентификатор клиента на портале Azure в разделе Внешние удостоверения Azure Active Directory.

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(tenant_id="my-tenant-id")
    ws = Workspace.create(name='myworkspace',
                subscription_id='<azure-subscription-id>',
                resource_group='myresourcegroup',
                create_resource_group=True,
                location='eastus2',
                auth=interactive_auth
                )
    
  • Национальное облако . Вам потребуется дополнительный код для проверки подлинности в Azure, если вы работаете в национальном облаке.

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(cloud="<cloud name>") # for example, cloud="AzureUSGovernment"
    ws = Workspace.create(name='myworkspace',
                subscription_id='<azure-subscription-id>',
                resource_group='myresourcegroup',
                create_resource_group=True,
                location='eastus2',
                auth=interactive_auth
                )
    
  • Использование существующих ресурсов Azure. Вы также можете создать рабочую область, которая использует существующие ресурсы Azure, в формате идентификатора ресурса Azure. Найдите конкретные идентификаторы ресурсов Azure на портале Azure или с помощью пакета SDK. В этом примере предполагается, что группа ресурсов, учетная запись хранения, хранилище ключей, App Insights и реестр контейнеров уже существуют.

    import os
    from azureml.core import Workspace
    from azureml.core.authentication import ServicePrincipalAuthentication
    
    service_principal_password = os.environ.get("AZUREML_PASSWORD")
    
    service_principal_auth = ServicePrincipalAuthentication(
        tenant_id="<tenant-id>",
        username="<application-id>",
        password=service_principal_password)
    
                          auth=service_principal_auth,
                               subscription_id='<azure-subscription-id>',
                               resource_group='myresourcegroup',
                               create_resource_group=False,
                               location='eastus2',
                               friendly_name='My workspace',
                               storage_account='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.storage/storageaccounts/mystorageaccount',
                               key_vault='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.keyvault/vaults/mykeyvault',
                               app_insights='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.insights/components/myappinsights',
                               container_registry='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.containerregistry/registries/mycontainerregistry',
                               exist_ok=False)
    

Дополнительные сведения см. в разделе Справочник по пакету SDK для рабочей области.

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

Сеть

Важно!

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

Пакет SDK для Python для службы Машинного обучения Azure предоставляет класс PrivateEndpointConfig, который можно использовать с Workspace.create() для создания рабочей области с частной конечной точкой. Для этого класса требуется существующая виртуальная сеть.

Важно!

Использование частной конечной точки с рабочей областью Машинного обучения Azure в настоящее время находится в состоянии общедоступной предварительной версии. Предварительная версия предоставляется без соглашения об уровне обслуживания и не рекомендуется для использования в рабочей среде. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены.
Дополнительные сведения см. в статье Дополнительные условия использования предварительных выпусков Microsoft Azure.

Сканирование уязвимостей

Центр безопасности Azure обеспечивает унифицированное управление безопасностью и расширенную защиту от угроз для гибридных облачных рабочих нагрузок. Вы должны разрешить Центру безопасности Azure проверять ваши ресурсы и следовать его рекомендациям. Дополнительные сведения см. в разделах Проверка образа Реестра контейнеров Azure с помощью Центра безопасности и Интеграция служб Azure Kubernetes с Центром безопасности.

Продвинутый уровень

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

Чтобы ограничить данные, собираемые Майкрософт в вашей рабочей области, выберите на портале параметр High business impact workspace (Рабочая область с сильным влиянием на организацию) или установите hbi_workspace=true в Python. Дополнительные сведения об этом параметре см. в разделе Шифрование данных при хранении.

Важно!

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

Использование собственного ключа

Вы можете предоставить собственный ключ для шифрования данных. При этом создается экземпляр Azure Cosmos DB, в котором хранятся метаданные в вашей подписке Azure.

Важно!

Cosmos DB экземпляр создается в группе ресурсов, управляемой корпорацией Майкрософт, в вашей подписке вместе с любыми нужными ресурсами. Это означает, что вы платите за этот экземпляр Cosmos DB. Имя управляемой группы ресурсов указано в формате <AML Workspace Resource Group Name><GUID>. Если Рабочая область Машинное обучение Azure использует закрытую конечную точку, для экземпляра Cosmos DB также создается виртуальная сеть. Эта виртуальная сеть используется для защиты обмена данными между Cosmos DB и Машинное обучение Azure.

  • Не удаляйте группу ресурсов , содержащую этот Cosmos DB экземпляр, или любые ресурсы, автоматически созданные в этой группе. Если необходимо удалить группу ресурсов, Cosmos DB экземпляр и т. д., необходимо удалить рабочую область Машинное обучение Azure, которая его использует. Группа ресурсов, Cosmos DB экземпляр и другие автоматически созданные ресурсы удаляются при удалении связанной рабочей области.
  • По умолчанию единицы запросов для этой учетной записи Cosmos DB устанавливаются в количестве 8000.
  • Вы не можете предоставить собственную виртуальную сеть для использования с созданным экземпляром Cosmos DB . Вы также не можете изменить виртуальную сеть. Например, нельзя изменить используемый диапазон IP-адресов.

Чтобы предоставить собственный ключ, выполните следующие действия.

Важно!

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

  1. Авторизуйте приложение Машинного обучения (в службе управления удостоверениями и доступом) с разрешениями участника в вашей подписке.

  2. Выполните действия, описанные в разделе Настройка ключей, управляемых клиентом, чтобы:

    • зарегистрировать поставщик ресурсов Azure Cosmos DB;
    • Создание и настройка Azure Key Vault
    • создать ключ.

    Вам не придется вручную создавать экземпляр Azure Cosmos DB, он будет создан автоматически во время создания рабочей области. Этот экземпляр Azure Cosmos DB будет создан в отдельной группе ресурсов с использованием имени на основе шаблона <your-workspace-resource-name>_<GUID>.

После создания рабочей области этот параметр изменить нельзя. При удалении Azure Cosmos DB, используемой рабочей областью, необходимо также удалить и рабочую область, которая ее использует.

Чтобы указать ключ, управляемый клиентом, используйте cmk_keyvault и resource_cmk_uri.

from azureml.core import Workspace
   ws = Workspace.create(name='myworkspace',
               subscription_id='<azure-subscription-id>',
               resource_group='myresourcegroup',
               create_resource_group=True,
               location='eastus2'
               cmk_keyvault='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.keyvault/vaults/<keyvault-name>', 
               resource_cmk_uri='<key-identifier>'
               )

Скачивание файла конфигурации.

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

Если вы планируете использовать код в локальной среде, которая ссылается на эту рабочую область (ws), напишите файл конфигурации:

ws.write_config()

Поместите файл в структуру каталогов со скриптами Python или приложениями Jupyter Notebook. Он может находиться в том же каталоге, подкаталоге с именем .azureml или родительском каталоге. При создании вычислительного экземпляра этот файл автоматически добавляется в нужный каталог на виртуальной машине.

Подключение к рабочей области

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

from azureml.core import Workspace

ws = Workspace.from_config()
  • Использование нескольких клиентов. Если у вас есть несколько учетных записей, добавьте идентификатор клиента Azure Active Directory, который вы хотите использовать. Найдите идентификатор клиента на портале Azure в разделе Внешние удостоверения Azure Active Directory.

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(tenant_id="my-tenant-id")
    ws = Workspace.from_config(auth=interactive_auth)
    
  • Национальное облако . Вам потребуется дополнительный код для проверки подлинности в Azure, если вы работаете в национальном облаке.

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(cloud="<cloud name>") # for example, cloud="AzureUSGovernment"
    ws = Workspace.from_config(auth=interactive_auth)
    

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

Поиск рабочей области

Просмотрите список всех рабочих областей, которые можно использовать.

Найдите свою подписку на странице подписок на портале Azure. Скопируйте идентификатор и используйте его в приведенном ниже коде, чтобы просмотреть все рабочие области, доступные для этой подписки.

from azureml.core import Workspace

Workspace.list('<subscription-id>')

Удаление рабочей области

Если эта рабочая область больше не нужна, удалите ее.

Удалите рабочую область ws:

ws.delete(delete_dependent_resources=False, no_wait=False)

Действие по умолчанию — не удалять ресурсы, связанные с рабочей областью, а именно реестр контейнеров, учетную запись хранения, хранилище ключей и Application Insights. Задайте для delete_dependent_resources значение true, чтобы удалить также и эти ресурсы.

Очистка ресурсов

Важно!

Созданные вами ресурсы могут использоваться в качестве необходимых компонентов при работе с другими руководствами по Машинному обучению Azure.

Если вы не планируете использовать созданные вами ресурсы, удалите их, чтобы с вас не взималась плата:

  1. На портале Azure выберите Группы ресурсов в левой части окна.

  2. Выберите созданную группу ресурсов из списка.

  3. Выберите Удалить группу ресурсов.

    Снимок экрана с выбранными параметрами для удаления группы ресурсов на портале Azure.

  4. Введите имя группы ресурсов. Теперь щелкните Удалить.

Устранение неполадок

  • Поддерживаемые браузеры в Машинном обучении Azure: рекомендуется использовать наиболее актуальный браузер, совместимый с вашей операционной системой. Поддерживаются следующие браузеры:

    • Microsoft Edge (новый Microsoft Edge последней версии, а не устаревшая версия Microsoft Edge);
    • Safari (последняя версия, только для Mac);
    • Chrome (последняя версия);
    • Firefox (последняя версия).
  • Портал Azure:

    • Если вы перейдете непосредственно в рабочую область по общей ссылке из пакета SDK или на портале Azure, то не сможете увидеть стандартную страницу обзора со сведениями о подписке в расширении. В этом случае вы также не сможете переключиться на другую рабочую область. Чтобы просмотреть другую рабочую область, перейдите непосредственно в студию машинного обучения Azure и найдите имя рабочей области.
    • Все ресурсы (наборы данных, эксперименты, вычисления и т. п.) доступны только в студии машинного обучения Azure. Они не доступны с портала Azure.

Ошибки поставщика ресурсов

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

  • No registered resource provider found for location {location}
  • The subscription is not registered to use namespace {resource-provider-namespace}

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

Сведения о регистрации поставщиков ресурсов см. в статье Устранение ошибок регистрации поставщика ресурсов.

Перемещение рабочей области

Предупреждение

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

Удаление Реестра контейнеров Azure

Для некоторых операций в рабочей области Машинного обучения Azure используется реестр контейнеров Azure (ACR) Он автоматически создает экземпляр ACR при необходимости.

Предупреждение

После создания реестра контейнеров Azure для рабочей области не удаляйте его. В противном случае будет нарушена функциональность рабочей области машинного обучения Azure.

Примеры

Примеры создания рабочей области:

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

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