Создание рабочей области для Машинного обучения Azure с помощью шаблона Azure Resource Manager.
В этой статье мы рассмотрим несколько способов создания рабочей области Машинного обучения Azure с помощью шаблонов Azure Resource Manager. Шаблон Resource Manager позволяет легко создать все ресурсы в отдельной скоординированной операции. Шаблон представляет собой документ JSON, в котором определены необходимые для развертывания ресурсы. Он также может указывать параметры развертывания. Эти параметры позволят предоставить входные значения при использовании шаблона.
Узнайте подробнее о развертывании приложения с помощью шаблона диспетчера ресурсов Azure.
Необходимые компоненты
Подписка Azure Если у вас ее нет, используйте бесплатную или платную версию Машинного обучения Azure.
Чтобы использовать шаблон из командной строки, вам потребуется Azure PowerShell или Azure CLI.
Ограничения
При создании новой рабочей области можно автоматически создавать службы, необходимые рабочей области, или использовать существующие службы. Если вы хотите использовать существующие службы из подписки Azure, отличной от рабочей области, необходимо зарегистрировать пространство имен Машинного обучения Azure в подписке, которая содержит эти службы. Например, если вы создаете рабочую область в подписке A, использующую учетную запись хранения в подписке B, пространство имен Машинное обучение Azure необходимо зарегистрировать в подписке B, прежде чем рабочая область сможет использовать учетную запись хранения.
Поставщик ресурсов для Машинного обучения Azure — Microsoft.MachineLearningServices. Сведения о том, зарегистрировано ли оно или зарегистрировано, см. в разделе поставщиков ресурсов и типов Azure.
Внимание
Эта информация применяется только к ресурсам, предоставляемым во время создания рабочей области: учетные записи служба хранилища Azure, Реестр контейнеров Azure, Azure Key Vault и Application Insights.
Пример шаблона может не всегда использовать последнюю версию API для Машинное обучение Azure. Прежде чем использовать шаблон, рекомендуется изменить его для использования последних версий API. Сведения о последних версиях API для Машинное обучение Azure см. в Машинное обучение Azure REST API.
Совет
Каждая служба Azure имеет собственный набор версий API. Дополнительные сведения об API для конкретной службы см. в справочнике по REST API Azure.
Чтобы обновить версию API, найдите
"apiVersion": "YYYY-MM-DD"
запись для типа ресурса и обновите ее до последней версии. Ниже приведен пример записи для Машинное обучение Azure:"type": "Microsoft.MachineLearningServices/workspaces", "apiVersion": "2023-10-01",
Несколько рабочих областей в одной виртуальной сети
Шаблон не поддерживает несколько рабочих областей Машинное обучение Azure, развернутых в одной виртуальной сети. Это ограничение обусловлено тем, что шаблон создает новые зоны DNS во время развертывания.
Если вы хотите создать шаблон, который развертывает несколько рабочих областей в одной виртуальной сети, настройте его вручную (с помощью портал Azure или CLI). Затем используйте портал Azure для создания шаблона.
Сведения о шаблоне Azure Resource Manager
Шаблон Azure Resource Manager, используемый в этом документе, можно найти в каталоге microsoft.machineleaerningservices/machine-learning-workspace-vnet репозитория GitHub шаблонов быстрого запуска Azure.
Этот шаблон создает следующие ресурсы Azure:
- Учетная запись хранения Azure
- Azure Key Vault
- Azure Application Insights
- Реестр контейнеров Azure
- Рабочая область службы "Машинное обучение Azure"
Группа ресурсов выполняет функции контейнера, который содержит службы. Рабочая область Машинное обучение Azure использует эти службы для таких функций, как хранение данных, секретов, ведения журнала и образов Docker.
Этот пример шаблона принимает два обязательных параметра:
Расположение, в котором создаются ресурсы.
Шаблон использует расположение, выбранное для большинства ресурсов. Исключением является служба Application Insights, которая недоступна во всех расположениях, которые являются другими службами. Если выбрать расположение, где оно недоступно, служба создается в расположении южной части США.
workspaceName обозначает имя рабочего пространства Машинного обучения Azure в удобном для чтения формате.
Примечание.
В имени рабочей области не учитывается регистр.
Имена для всех остальных служб создаются случайным образом.
Совет
Хотя шаблон, связанный с этим документом, создает новый Реестр контейнеров Azure, вы можете создать рабочую область и без реестра контейнеров. Он будет создан автоматически при выполнении любой операции, для которой реестр контейнеров обязателен. Например, при обучении или развертывании модели.
Вы также можете указать в шаблоне Azure Resource Manager существующий реестр контейнеров или учетную запись хранения, а не создавать новые. При этом необходимо использовать управляемое удостоверение (предварительная версия) или включить учетную запись администратора для реестра контейнеров.
Предупреждение
После создания Реестр контейнеров Azure для рабочей области не удаляйте его. Это нарушает рабочую область Машинное обучение Azure.
Дополнительные сведения о шаблонах вы найдете в следующих статьях.
- Шаблоны диспетчера ресурсов Azure
- Развертывание ресурсов с использованием шаблонов Resource Manager и Azure CLI
- Типы ресурсов Microsoft.MachineLearningServices
Развертывание шаблона
Чтобы развернуть шаблон, необходимо создать группу ресурсов.
Если вы предпочитаете использовать графический пользовательский интерфейс, ознакомьтесь с разделом об использовании портала Azure.
az group create --name "examplegroup" --location "eastus"
После успешного создания группы ресурсов разверните шаблон с помощью следующей команды:
az deployment group create \
--name "exampledeployment" \
--resource-group "examplegroup" \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
--parameters workspaceName="exampleworkspace" location="eastus"
По умолчанию при развертывании шаблона всегда создаются новые ресурсы. Но у вас также есть возможность использовать уже существующие ресурсы. Предоставив другим параметрам шаблону, можно использовать существующие ресурсы. Например, если вы хотите использовать существующую учетную запись хранения, задайте для параметра storageAccountOption значение existing (существующая) и укажите имя учетной записи хранения в параметре storageAccountName.
Внимание
Если вы намерены использовать существующую учетную запись хранения Azure, она не может быть учетной записью "Премиум" (Premium_LRS и Premium_GRS). Она также не может иметь иерархическое пространство имен (используется с Azure Data Lake Storage 2-го поколения). Ни хранилища класса Premium, ни иерархическое пространство имен не поддерживаются для стандартной учетной записи хранения рабочей области. Ни хранилища класса Premium, ни иерархическое пространство имен не поддерживаются в учетной записи хранения по умолчанию рабочей области. Вы можете использовать хранилище класса Premium или иерархическое пространство имен с учетными записями хранения, не являющимися учетными записями по умолчанию.
az deployment group create \
--name "exampledeployment" \
--resource-group "examplegroup" \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
--parameters workspaceName="exampleworkspace" \
location="eastus" \
storageAccountOption="existing" \
storageAccountName="existingstorageaccountname"
Развертывание зашифрованной рабочей области
Создание рабочей области с тремя параметрами показано в следующем примере шаблона:
- Настройка параметров высокой конфиденциальности для рабочей области. Эта конфигурация создает новый экземпляр Azure Cosmos DB.
- Включение шифрования для рабочей области.
- Здесь используется существующий экземпляр Azure Key Vault для извлечения ключей, управляемых клиентом. Управляемые клиентом ключи используются для создания нового экземпляра Azure Cosmos DB для рабочей области.
Внимание
После создания рабочей области вы не сможете изменить параметры для конфиденциальных данных, шифрования, идентификатора хранилища ключей или идентификаторов ключей. Чтобы изменить эти значения, придется создать новую рабочую область с новыми значениями.
Дополнительные сведения см. в разделе Ключи, управляемые клиентом.
Внимание
Чтобы использовать этот шаблон, ваша подписка должна соответствовать некоторым дополнительным требованиям.
- Должен существовать хранилище Azure Key Vault с ключом шифрования.
- Хранилище Azure Key Vault должно размещаться в том же регионе, где вы намерены создать рабочую область Машинного обучения Azure.
- Необходимо указать идентификатор Azure Key Vault и универсальный код ресурса (URI) для ключа шифрования.
Инструкции по созданию хранилища и ключа см. в разделе Настройка ключей, управляемых клиентом.
Чтобы получить значения для параметров cmk_keyvault
(идентификатор Key Vault) и resource_cmk_uri
(URI ключа), которые нужны в этом шаблоне, выполните следующие действия.
Чтобы получить идентификатор Key Vault, используйте следующую команду:
az keyvault show --name <keyvault-name> --query 'id' --output tsv
Эта команда возвращает значение следующего вида:
/subscriptions/{subscription-guid}/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>
.Чтобы получить значение URI для управляемого клиентом ключа, используйте следующую команду:
az keyvault key show --vault-name <keyvault-name> --name <key-name> --query 'key.kid' --output tsv
Эта команда возвращает значение следующего вида: https://mykeyvault.vault.azure.net/keys/mykey/{guid}
.
Внимание
После создания рабочей области вы не сможете изменить параметры для конфиденциальных данных, шифрования, идентификатора хранилища ключей или идентификаторов ключей. Чтобы изменить эти значения, придется создать новую рабочую область с новыми значениями.
Чтобы настроить использование ключей, управляемых клиентом, задайте при развертывании шаблона следующие параметры:
- Encryption_status: Enabled.
- cmk_keyvault: значение
cmk_keyvault
, полученное на предыдущих шагах. - resource_cmk_uri: значение
resource_cmk_uri
, полученное на предыдущих шагах.
az deployment group create \
--name "exampledeployment" \
--resource-group "examplegroup" \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
--parameters workspaceName="exampleworkspace" \
location="eastus" \
encryption_status="Enabled" \
cmk_keyvault="/subscriptions/{subscription-guid}/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>" \
resource_cmk_uri="https://mykeyvault.vault.azure.net/keys/mykey/{guid}" \
При использовании ключа, управляемого клиентом, Машинное обучение Azure создает вторичную группу ресурсов, содержащую экземпляр Azure Cosmos DB. Дополнительные сведения см. в статье "Шифрование неактивных данных" в Azure Cosmos DB.
Другая конфигурация, предоставляемая для данных, — задать для параметра confidential_data значение true. Это обеспечивает следующее поведение:
Начинает шифрование локального диска с нуля для Машинное обучение Azure вычислительных кластеров, если вы не создали предыдущие кластеры в подписке. Если вы ранее создали кластер в подписке, откройте запрос в службу поддержки, чтобы включить шифрование диска с нуля для вычислительных кластеров.
Очищает локальный диск царапины между заданиями.
Безопасно передает учетные данные учетной записи хранения, реестра контейнеров и учетной записи SSH из слоя выполнения в вычислительные кластеры через хранилище ключей.
Позволяет фильтровать IP-адреса, чтобы внешние службы, отличные от AzureMachineLearningService, могли вызывать базовые пулы пакетных пакетов.
Внимание
После создания рабочей области вы не сможете изменить параметры для конфиденциальных данных, шифрования, идентификатора хранилища ключей или идентификаторов ключей. Чтобы изменить эти значения, придется создать новую рабочую область с новыми значениями.
Дополнительные сведения см. в разделе Шифрование данных при хранении.
Развертывание рабочей области за виртуальной сетью
Задав vnetOption
значение new
existing
параметра или создав ресурсы, используемые рабочей областью за виртуальной сетью.
Внимание
Для реестра контейнеров поддерживается только ценовая категория "Премиум".
Внимание
Application Insights не поддерживает развертывание за виртуальной сетью.
Развертывайте рабочую область только за частной конечной точкой.
Если связанные ресурсы не стоят за виртуальной сетью, можно задать для параметра privateEndpointType AutoAproval
значение или ManualApproval
развернуть рабочую область за частной конечной точкой. Этот параметр можно использовать как для новых, так и для существующих рабочих областей. При обновлении существующей рабочей области заполните параметры шаблона данными для существующей рабочей области.
az deployment group create \
--name "exampledeployment" \
--resource-group "examplegroup" \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
--parameters workspaceName="exampleworkspace" \
location="eastus" \
privateEndpointType="AutoApproval"
Использование новой виртуальной сети
Чтобы развернуть ресурс за новой виртуальной сетью, задайте для параметра vnetOption значение new (Новая) и укажите параметры виртуальной сети для соответствующего ресурса. В следующем примере показано, как развернуть рабочую область с ресурсом учетной записи хранения за новой виртуальной сетью.
az deployment group create \
--name "exampledeployment" \
--resource-group "examplegroup" \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
--parameters workspaceName="exampleworkspace" \
location="eastus" \
vnetOption="new" \
vnetName="examplevnet" \
storageAccountBehindVNet="true"
privateEndpointType="AutoApproval"
Кроме того, вы можете развернуть за виртуальной сетью все зависимые ресурсы или некоторую их часть.
az deployment group create \
--name "exampledeployment" \
--resource-group "examplegroup" \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
--parameters workspaceName="exampleworkspace" \
location="eastus" \
vnetOption="new" \
vnetName="examplevnet" \
storageAccountBehindVNet="true" \
keyVaultBehindVNet="true" \
containerRegistryBehindVNet="true" \
containerRegistryOption="new" \
containerRegistrySku="Premium"
privateEndpointType="AutoApproval"
Использование существующей виртуальной сети и ресурсов
Чтобы развернуть рабочую область с существующими ресурсами, необходимо задать параметр vnetOption существующим вместе с параметрами подсети. При этом конечные точки службы в виртуальной сети необходимо создать для каждого ресурса перед развертыванием. Как и в случае с развертываниями новых виртуальных сетей, один или несколько ресурсов могут быть расположены за виртуальной сетью.
Внимание
Подсеть должна иметь конечную точку службы Microsoft.Storage
Внимание
Подсети не допускают создание частных конечных точек. Отключите закрытую конечную точку, чтобы включить подсеть.
Включите конечные точки службы для ресурсов.
az network vnet subnet update --resource-group "examplegroup" --vnet-name "examplevnet" --name "examplesubnet" --service-endpoints "Microsoft.Storage" az network vnet subnet update --resource-group "examplegroup" --vnet-name "examplevnet" --name "examplesubnet" --service-endpoints "Microsoft.KeyVault" az network vnet subnet update --resource-group "examplegroup" --vnet-name "examplevnet" --name "examplesubnet" --service-endpoints "Microsoft.ContainerRegistry"
Развертывание рабочей области
az deployment group create \ --name "exampledeployment" \ --resource-group "examplegroup" \ --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \ --parameters workspaceName="exampleworkspace" \ location="eastus" \ vnetOption="existing" \ vnetName="examplevnet" \ vnetResourceGroupName="examplegroup" \ storageAccountBehindVNet="true" \ keyVaultBehindVNet="true" \ containerRegistryBehindVNet="true" \ containerRegistryOption="new" \ containerRegistrySku="Premium" \ subnetName="examplesubnet" \ subnetOption="existing" privateEndpointType="AutoApproval"
Использование портала Azure
Выполните инструкции из раздела Развертывание ресурсов с помощью настраиваемого шаблона. При поступлении на экран пользовательского развертывания выберите запись шаблона быстрого запуска.
В раскрывающемся списке для шаблонов быстрого запуска выберите
microsoft.machinelearningservices/machine-learning-workspace-vnet
запись. Наконец, используйтеSelect template
.Когда откроется шаблон, укажите следующие обязательные сведения и другие параметры в зависимости от сценария развертывания.
- Подписка. Выберите подписку Azure, используемую для этих ресурсов.
- Группа ресурсов: выберите или создайте группу ресурсов, которая будет содержать службы.
- Регион. Выберите регион Azure, в котором будут созданы ресурсы.
- Имя рабочей области: имя, используемое для создаваемой рабочей области Машинное обучение Azure. Для имени рабочего пространства допускается длина от 3 до 33 символов. Он может содержать только буквенно-цифровые символы и "-".
- Расположение. Выберите расположение, в котором должны быть созданы ресурсы.
Выберите Review + create (Просмотреть и создать).
На экране Просмотр и создание подтвердите приведенные условия и щелкните Создать.
Дополнительные сведения см. в разделе Развертывание ресурсов с помощью настраиваемого шаблона.
Устранение неполадок
Ошибки поставщика ресурсов
При создании рабочей области машинного обучения Azure или ресурса, используемого рабочей областью, может появиться сообщение об ошибке, аналогичное приведенному ниже.
No registered resource provider found for location {location}
The subscription is not registered to use namespace {resource-provider-namespace}
Многие, но не все поставщики ресурсов регистрируются автоматически. При появлении этого сообщения необходимо зарегистрировать упомянутый поставщик.
В следующей таблице содержится список поставщиков ресурсов, необходимых для Машинного обучения Azure:
Поставщик ресурсов | Роль |
---|---|
Microsoft.MachineLearningServices | Создание рабочей области машинного обучения Azure. |
Microsoft.Storage | Учетная запись службы хранилища Azure используется в качестве хранилища данных по умолчанию для рабочей области. |
Microsoft.ContainerRegistry | Реестр контейнеров Azure используется рабочей областью для создания образов Docker. |
Microsoft.KeyVault | Azure Key Vault используется рабочей областью для хранения секретов. |
Microsoft.Notebooks | Интегрированные записные книжки в вычислительном экземпляре машинного обучения Azure. |
Microsoft.ContainerService | Если вы планируете развертывать обученные модели в службах Azure Kubernetes. |
Если вы планируете использовать ключ, управляемый клиентом, для машинного обучения Azure, необходимо зарегистрировать следующих поставщиков услуг:
Поставщик ресурсов | Роль |
---|---|
Microsoft.DocumentDB | Экземпляр Azure CosmosDB, который регистрирует метаданные для рабочей области. |
Microsoft.Search | Служба "Поиск Azure" предоставляет возможности индексирования для рабочей области. |
Если вы планируете использовать управляемую виртуальную сеть с Машинное обучение Azure, необходимо зарегистрировать поставщика ресурсов Microsoft.Network. Этот поставщик ресурсов используется рабочей областью при создании частных конечных точек для управляемой виртуальной сети.
Сведения о регистрации поставщиков ресурсов см. в статье Устранение ошибок регистрации поставщика ресурсов.
Политики доступа Azure Key Vault и шаблоны Azure Resource Manager
Шаблон Azure Resource Manager можно многократно применять для создания рабочей области и связанных с ней ресурсов (в том числе Azure Key Vault). Например, шаблон можно многократно применять с одинаковыми параметрами в составе конвейера непрерывной интеграции и развертывания.
Большинство операций создания ресурсов с использованием шаблонов являются идемпотентными, но Key Vault удаляет политики доступа каждый раз при использовании шаблона. Очистка политик доступа нарушает доступ к Key Vault из любой существующей рабочей области, которая его использует. Например, может произойть сбой функций виртуальной машины Записных книжек Azure и создания.
Чтобы избежать этой проблемы, примените один из следующих подходов.
Не развертывайте шаблон несколько раз для одинаковых параметров. Удаляйте существующие ресурсы перед тем, как создавать их повторно с помощью шаблона.
Изучите политики доступа к Key Vault, а затем примените их для настройки свойства
accessPolicies
в шаблоне. Для просмотра политик доступа можно выполнить следующую команду Azure CLI.az keyvault show --name mykeyvault --resource-group myresourcegroup --query properties.accessPolicies
Дополнительные сведения об использовании раздела
accessPolicies
шаблона см. в разделе Объект AccessPolicyEntry справочника.Проверьте, существует ли ресурс Key Vault. Если это так, не создайте его с помощью шаблона. Например, внесите следующие изменения в шаблон, чтобы использовать существующий ресурс Key Vault вместо создания нового:
Добавьте параметр, который принимает значение идентификатора существующего ресурса Key Vault:
"keyVaultId":{ "type": "string", "metadata": { "description": "Specify the existing Key Vault ID." } }
Удалите раздел, который создает ресурс Key Vault:
{ "type": "Microsoft.KeyVault/vaults", "apiVersion": "2018-02-14", "name": "[variables('keyVaultName')]", "location": "[parameters('location')]", "properties": { "tenantId": "[variables('tenantId')]", "sku": { "name": "standard", "family": "A" }, "accessPolicies": [ ] } },
Удалите строку
"[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]",
из разделаdependsOn
для рабочей области. Кроме того, измените записьkeyVault
в разделеproperties
для рабочей области, включив в нее ссылку на параметрkeyVaultId
:{ "type": "Microsoft.MachineLearningServices/workspaces", "apiVersion": "2019-11-01", "name": "[parameters('workspaceName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", "[resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))]" ], "identity": { "type": "systemAssigned" }, "sku": { "tier": "[parameters('sku')]", "name": "[parameters('sku')]" }, "properties": { "friendlyName": "[parameters('workspaceName')]", "keyVault": "[parameters('keyVaultId')]", "applicationInsights": "[resourceId('Microsoft.Insights/components',variables('applicationInsightsName'))]", "storageAccount": "[resourceId('Microsoft.Storage/storageAccounts/',variables('storageAccountName'))]" } }
После этих изменений вы сможете указать идентификатор существующего ресурса Key Vault при запуске шаблона. Затем шаблон повторно использует Key Vault, задав
keyVault
свойству рабочей области идентификатор.Чтобы получить идентификатор Key Vault, можно ссылаться на выходные данные исходного задания шаблона или использовать Azure CLI. Следующая команда является примером использования Azure CLI для получения идентификатора ресурса Key Vault.
az keyvault show --name mykeyvault --resource-group myresourcegroup --query id
Эта команда возвращает значение следующего вида:
/subscriptions/{subscription-guid}/resourceGroups/myresourcegroup/providers/Microsoft.KeyVault/vaults/mykeyvault
Связанный контент
- Развертывание ресурсов с использованием шаблонов и REST API Resource Manager.
- Создание и развертывание групп ресурсов Azure с помощью Visual Studio.
- Другие шаблоны, связанные с Машинным обучением Azure, размещены в репозитории шаблонов быстрого запуска Azure на сайте GitHub.
- Сведения об использовании диагностики рабочей области.
- Перемещение рабочей области Машинного обучения Azure в другую подписку.