Utilizar um modelo do Azure Resource Manager para criar uma área de trabalho para o Azure Machine Learning

Neste artigo, você aprenderá várias maneiras de criar um espaço de trabalho do Azure Machine Learning usando modelos do Azure Resource Manager. Um modelo do Resource Manager facilita a criação de recursos como uma operação única e coordenada. Um modelo é um documento JSON que define os recursos necessários para uma implantação. Ele também pode especificar parâmetros de implantação. Os parâmetros são usados para fornecer valores de entrada ao usar o modelo.

Para obter mais informações, consulte Implantar um aplicativo com o modelo do Azure Resource Manager.

Pré-requisitos

Limitações

  • Ao criar um novo espaço de trabalho, você pode criar automaticamente os serviços necessários para o espaço de trabalho ou usar serviços existentes. Se você quiser usar serviços existentes de uma assinatura do Azure diferente do espaço de trabalho, deverá registrar o namespace do Azure Machine Learning na assinatura que contém esses serviços. Por exemplo, ao criar um espaço de trabalho na assinatura A que usa uma conta de armazenamento da assinatura B, o namespace do Azure Machine Learning deve ser registrado na assinatura B antes que você possa usar a conta de armazenamento com o espaço de trabalho.

    O provedor de recursos para o Azure Machine Learning é Microsoft.MachineLearningServices. Para obter informações sobre como ver se ele está registrado e como registrá-lo, consulte o artigo Provedores e tipos de recursos do Azure.

    Importante

    Isso se aplica apenas aos recursos fornecidos durante a criação do espaço de trabalho; Contas de Armazenamento do Azure, Azure Container Register, Azure Key Vault e Application Insights.

  • O modelo de exemplo nem sempre pode usar a versão mais recente da API para o Azure Machine Learning. Antes de usar o modelo, recomendamos modificá-lo para usar as versões mais recentes da API. Para obter informações sobre as versões mais recentes da API para o Azure Machine Learning, consulte a API REST do Azure Machine Learning.

    Gorjeta

    Cada serviço do Azure tem seu próprio conjunto de versões de API. Para obter informações sobre a API de um serviço específico, verifique as informações de serviço na referência da API REST do Azure.

    Para atualizar a versão da API, localize a entrada para o tipo de recurso e atualize-a para a "apiVersion": "YYYY-MM-DD" versão mais recente. O exemplo a seguir é uma entrada para o Azure Machine Learning:

    "type": "Microsoft.MachineLearningServices/workspaces",
    "apiVersion": "2023-10-01",
    

Vários espaços de trabalho na mesma rede virtual

O modelo não suporta vários espaços de trabalho do Azure Machine Learning implantados na mesma VNet. Isso ocorre porque o modelo cria novas zonas DNS durante a implantação.

Se você quiser criar um modelo que implante vários espaços de trabalho na mesma rede virtual, configure-o manualmente (usando o Portal do Azure ou a CLI) e, em seguida , use o portal do Azure para gerar um modelo.

Modelo do Gerenciador de Recursos de Espaço de Trabalho

O modelo do Azure Resource Manager usado neste documento pode ser encontrado no diretório microsoft.machineleaerningservices/machine-learning-workspace-vnet do repositório GitHub de modelos de início rápido do Azure.

Este modelo cria os seguintes serviços do Azure:

  • Conta de armazenamento do Azure
  • Azure Key Vault
  • Azure Application Insights
  • Registo de Contentores do Azure
  • Área de trabalho do Azure Machine Learning

O grupo de recursos é o contêiner que contém os serviços. Os vários serviços são exigidos pelo espaço de trabalho do Azure Machine Learning.

O modelo de exemplo tem dois parâmetros necessários :

  • O local onde os recursos serão criados.

    O modelo usará o local selecionado para a maioria dos recursos. A exceção é o serviço Application Insights, que não está disponível em todos os locais em que os outros serviços estão. Se você selecionar um local onde ele não está disponível, o serviço será criado no local Centro-Sul dos EUA.

  • O workspaceName, que é o nome amigável do espaço de trabalho do Azure Machine Learning.

    Nota

    O nome do espaço de trabalho não diferencia maiúsculas de minúsculas.

    Os nomes dos outros serviços são gerados aleatoriamente.

Gorjeta

Embora o modelo associado a este documento crie um novo Registro de Contêiner do Azure, você também pode criar um novo espaço de trabalho sem criar um Registro de contêiner. Um será criado quando você executar uma operação que requer um registro de contêiner. Por exemplo, treinar ou implantar um modelo.

Você também pode fazer referência a uma conta de registro ou armazenamento de contêiner existente no modelo do Azure Resource Manager, em vez de criar uma nova. Ao fazer isso, você deve usar uma identidade gerenciada (visualização) ou habilitar a conta de administrador para o registro do contêiner.

Aviso

Depois que um Registro de Contêiner do Azure tiver sido criado para um espaço de trabalho, não o exclua. Isso interromperá seu espaço de trabalho do Azure Machine Learning.

Para obter mais informações sobre modelos, consulte os seguintes artigos:

Implementar o modelo

Para implantar seu modelo, você precisa criar um grupo de recursos.

Consulte a seção Portal do Azure se preferir usar a interface gráfica do usuário.

az group create --name "examplegroup" --location "eastus"

Depois que o grupo de recursos for criado com êxito, implante o modelo com o seguinte comando:

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"

Por padrão, todos os recursos criados como parte do modelo são novos. No entanto, você também tem a opção de usar recursos existentes. Ao fornecer parâmetros adicionais para o modelo, você pode usar os recursos existentes. Por exemplo, se você quiser usar uma conta de armazenamento existente, defina o valor storageAccountOption como existente e forneça o nome da sua conta de armazenamento no parâmetro storageAccountName.

Importante

Se você quiser usar uma conta de Armazenamento do Azure existente, ela não poderá ser uma conta premium (Premium_LRS e Premium_GRS). Ele também não pode ter um namespace hierárquico (usado com o Azure Data Lake Storage Gen2). Nem o armazenamento premium nem o namespace hierárquico são suportados com a conta de armazenamento padrão do espaço de trabalho. Não há suporte para armazenamento premium ou namespaces hierárquicos com a conta de armazenamento padrão do espaço de trabalho. Você pode usar armazenamento premium ou namespace hierárquico com contas de armazenamento não padrão .

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"

Implantar um espaço de trabalho criptografado

O modelo de exemplo a seguir demonstra como criar um espaço de trabalho com três configurações:

  • Habilite configurações de alta confidencialidade para o espaço de trabalho. Isso cria uma nova instância do Azure Cosmos DB.
  • Habilite a criptografia para o espaço de trabalho.
  • Usa um Cofre de Chaves do Azure existente para recuperar chaves gerenciadas pelo cliente. As chaves gerenciadas pelo cliente são usadas para criar uma nova instância do Azure Cosmos DB para o espaço de trabalho.

Importante

Depois que um espaço de trabalho for criado, você não poderá alterar as configurações de dados confidenciais, criptografia, ID do cofre de chaves ou identificadores de chave. Para alterar esses valores, você deve criar um novo espaço de trabalho usando os novos valores.

Para obter mais informações, consulte Chaves gerenciadas pelo cliente.

Importante

Existem alguns requisitos específicos que a sua subscrição tem de cumprir antes de utilizar este modelo:

  • Você deve ter um Cofre da Chave do Azure existente que contenha uma chave de criptografia.
  • O Cofre da Chave do Azure deve estar na mesma região onde você planeja criar o espaço de trabalho do Azure Machine Learning.
  • Você deve especificar a ID do Cofre da Chave do Azure e o URI da chave de criptografia.

Para conhecer as etapas de criação do cofre e da chave, consulte Configurar chaves gerenciadas pelo cliente.

Para obter os valores para os cmk_keyvault parâmetros (ID do Cofre da Chave) e ( resource_cmk_uri URI da chave) necessários para esse modelo, use as seguintes etapas:

  1. Para obter o ID do Cofre da Chave, use o seguinte comando:

    az keyvault show --name <keyvault-name> --query 'id' --output tsv    
    

    Este comando retorna um valor semelhante a /subscriptions/{subscription-guid}/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>.

  2. Para obter o valor do URI da chave gerenciada pelo cliente, use o seguinte comando:

    az keyvault key show --vault-name <keyvault-name> --name <key-name> --query 'key.kid' --output tsv    
    

Este comando retorna um valor semelhante a https://mykeyvault.vault.azure.net/keys/mykey/{guid}.

Importante

Depois que um espaço de trabalho for criado, você não poderá alterar as configurações de dados confidenciais, criptografia, ID do cofre de chaves ou identificadores de chave. Para alterar esses valores, você deve criar um novo espaço de trabalho usando os novos valores.

Para habilitar o uso de chaves gerenciadas pelo cliente, defina os seguintes parâmetros ao implantar o modelo:

  • encryption_status para Habilitado.
  • cmk_keyvault ao cmk_keyvault valor obtido nas etapas anteriores.
  • resource_cmk_uri ao resource_cmk_uri valor obtido nas etapas anteriores.
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}" \

Ao usar uma chave gerenciada pelo cliente, o Aprendizado de Máquina do Azure cria um grupo de recursos secundário que contém a instância do Azure Cosmos DB. Para obter mais informações, consulte Criptografia em repouso no Azure Cosmos DB.

Uma configuração adicional que você pode fornecer para seus dados é definir o parâmetro confidential_data como true. Ao fazer isso, faz o seguinte:

  • Começa a criptografar o disco de trabalho local para clusters de computação do Aprendizado de Máquina do Azure, desde que você não tenha criado nenhum cluster anterior em sua assinatura. Se você tiver criado anteriormente um cluster na assinatura, abra um tíquete de suporte para ter a criptografia do disco de trabalho habilitada para seus clusters de computação.

  • Limpa o disco de trabalho local entre trabalhos.

  • Passa com segurança credenciais para a conta de armazenamento, registro de contêiner e conta SSH da camada de execução para seus clusters de computação usando o cofre de chaves.

  • Habilita a filtragem de IP para garantir que os pools de lotes subjacentes não possam ser chamados por nenhum serviço externo diferente do AzureMachineLearningService.

    Importante

    Depois que um espaço de trabalho for criado, você não poderá alterar as configurações de dados confidenciais, criptografia, ID do cofre de chaves ou identificadores de chave. Para alterar esses valores, você deve criar um novo espaço de trabalho usando os novos valores.

    Para obter mais informações, consulte criptografia em repouso.

Implantar espaço de trabalho atrás de uma rede virtual

Ao definir o valor do vnetOption parâmetro como um ou existing, você pode criar os recursos usados por um new espaço de trabalho atrás de uma rede virtual.

Importante

Para o registro de contêiner, apenas o sku 'Premium' é suportado.

Importante

O Application Insights não oferece suporte à implantação atrás de uma rede virtual.

Implantar espaço de trabalho somente atrás de ponto de extremidade privado

Se seus recursos associados não estiverem atrás de uma rede virtual, você poderá definir o parâmetro privateEndpointType como AutoAproval ou ManualApproval implantar o espaço de trabalho atrás de um ponto de extremidade privado. Isso pode ser feito para espaços de trabalho novos e existentes. Ao atualizar um espaço de trabalho existente, preencha os parâmetros do modelo com as informações do espaço de trabalho existente.

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"

Usar uma nova rede virtual

Para implantar um recurso atrás de uma nova rede virtual, defina vnetOption como new junto com as configurações de rede virtual para o respetivo recurso. A implantação abaixo mostra como implantar um espaço de trabalho com o recurso de conta de armazenamento por trás de uma nova rede virtual.

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"

Como alternativa, você pode implantar vários ou todos os recursos dependentes por trás de uma rede virtual.

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"

Usar uma rede virtual existente & recursos

Para implantar um espaço de trabalho com recursos associados existentes, você precisa definir o parâmetro vnetOption como existente junto com os parâmetros de sub-rede. No entanto, você precisa criar pontos de extremidade de serviço na rede virtual para cada um dos recursos antes da implantação. Como nas novas implantações de rede virtual, você pode ter um ou todos os seus recursos por trás de uma rede virtual.

Importante

A sub-rede deve ter Microsoft.Storage ponto de extremidade de serviço

Importante

As sub-redes não permitem a criação de pontos de extremidade privados. Desative o ponto de extremidade privado para habilitar a sub-rede.

  1. Habilite pontos de extremidade de serviço para os recursos.

    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"
    
  2. Implantar o espaço de trabalho

    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"
    

Utilizar o portal do Azure

  1. Siga as etapas em Implantar recursos a partir do modelo personalizado. Quando chegar à tela Selecionar um modelo , escolha a entrada de início rápido. Quando aparecer, selecione o link "Clique aqui para abrir o repositório de modelos". Este link leva você ao quickstarts diretório no repositório de modelos de início rápido do Azure.

  2. Na lista de modelos de início rápido, selecione microsoft.machinelearningservices. Por fim, selecione Deploy to Azure.

  3. Quando o modelo for exibido, forneça as seguintes informações necessárias e quaisquer outros parâmetros, dependendo do cenário de implantação.

    • Assinatura: selecione a assinatura do Azure a ser usada para esses recursos.
    • Grupo de recursos: selecione ou crie um grupo de recursos para conter os serviços.
    • Região: selecione a região do Azure onde os recursos serão criados.
    • Nome do espaço de trabalho: o nome a ser usado para o espaço de trabalho do Azure Machine Learning que será criado. O nome do espaço de trabalho deve ter entre 3 e 33 caracteres. Só pode conter caracteres alfanuméricos e «-».
    • Local: Selecione o local onde os recursos serão criados.
  4. Selecione Rever + criar.

  5. Na tela Revisar + criar, concorde com os termos e condições listados e selecione Criar.

Para obter mais informações, consulte Implantar recursos a partir de um modelo personalizado.

Resolução de Problemas

Erros do provedor de recursos

Ao criar um espaço de trabalho do Azure Machine Learning ou um recurso usado pelo espaço de trabalho, você pode receber um erro semelhante às seguintes mensagens:

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

A maioria dos provedores de recursos são registrados automaticamente, mas não todos. Se receber esta mensagem, terá de registar o fornecedor mencionado.

A tabela a seguir contém uma lista dos provedores de recursos exigidos pelo Azure Machine Learning:

Fornecedor de recursos Por que motivo é necessária
Microsoft.MachineLearningServices Criando o espaço de trabalho do Azure Machine Learning.
Microsoft.Armazenamento A Conta de Armazenamento do Azure é usada como o armazenamento padrão para o espaço de trabalho.
Microsoft.ContainerRegistry O Registro de Contêiner do Azure é usado pelo espaço de trabalho para criar imagens do Docker.
Microsoft.KeyVault O Azure Key Vault é usado pelo espaço de trabalho para armazenar segredos.
Microsoft.Notebooks Blocos de anotações integrados na instância de computação do Azure Machine Learning.
Microsoft.ContainerService Se você planeja implantar modelos treinados nos Serviços Kubernetes do Azure.

Se você planeja usar uma chave gerenciada pelo cliente com o Azure Machine Learning, os seguintes provedores de serviços devem ser registrados:

Fornecedor de recursos Por que motivo é necessária
Microsoft.Banco de Dados de Documentos Instância do Azure CosmosDB que registra metadados para o espaço de trabalho.
Microsoft.Pesquisa O Azure Search fornece recursos de indexação para o espaço de trabalho.

Se você planeja usar uma rede virtual gerenciada com o Azure Machine Learning, o provedor de recursos Microsoft.Network deve ser registrado. Esse provedor de recursos é usado pelo espaço de trabalho ao criar pontos de extremidade privados para a rede virtual gerenciada.

Para obter informações sobre como registrar provedores de recursos, consulte Resolver erros para registro de provedor de recursos.

Política de acesso do Azure Key Vault e modelos do Azure Resource Manager

Quando você usa um modelo do Azure Resource Manager para criar o espaço de trabalho e os recursos associados (incluindo o Azure Key Vault), várias vezes. Por exemplo, usando o modelo várias vezes com os mesmos parâmetros como parte de um pipeline contínuo de integração e implantação.

A maioria das operações de criação de recursos por meio de modelos são idempotentes, mas o Cofre da Chave limpa as políticas de acesso sempre que o modelo é usado. Limpar as políticas de acesso interrompe o acesso ao Cofre da Chave para qualquer espaço de trabalho existente que o esteja usando. Por exemplo, as funcionalidades Parar/Criar da VM do Azure Notebooks podem falhar.

Para evitar esse problema, recomendamos uma das seguintes abordagens:

  • Não implante o modelo mais de uma vez para os mesmos parâmetros. Ou exclua os recursos existentes antes de usar o modelo para recriá-los.

  • Examine as políticas de acesso do Cofre da Chave e use essas políticas para definir a accessPolicies propriedade do modelo. Para exibir as políticas de acesso, use o seguinte comando da CLI do Azure:

    az keyvault show --name mykeyvault --resource-group myresourcegroup --query properties.accessPolicies
    

    Para obter mais informações sobre como usar a seção do modelo, consulte a accessPoliciesreferência do objeto AccessPolicyEntry.

  • Verifique se o recurso Cofre da Chave já existe. Se isso acontecer, não o recrie, através do modelo. Por exemplo, para usar o Cofre da Chave existente em vez de criar um novo, faça as seguintes alterações no modelo:

    • Adicione um parâmetro que aceite a ID de um recurso existente do Cofre da Chave:

      "keyVaultId":{
        "type": "string",
        "metadata": {
          "description": "Specify the existing Key Vault ID."
        }
      }
      
    • Remova a seção que cria um recurso do Cofre da Chave:

      {
        "type": "Microsoft.KeyVault/vaults",
        "apiVersion": "2018-02-14",
        "name": "[variables('keyVaultName')]",
        "location": "[parameters('location')]",
        "properties": {
          "tenantId": "[variables('tenantId')]",
          "sku": {
            "name": "standard",
            "family": "A"
          },
          "accessPolicies": [
          ]
        }
      },
      
    • Remova a "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", linha da dependsOn seção do espaço de trabalho. Altere também a keyVault entrada na properties seção do espaço de trabalho para fazer referência ao keyVaultIdparâmetro:

      {
        "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'))]"
        }
      }
      

    Após essas alterações, você pode especificar a ID do recurso existente do Cofre da Chave ao executar o modelo. O modelo reutilizará o Cofre da Chave definindo a keyVault propriedade do espaço de trabalho como sua ID.

    Para obter a ID do Cofre da Chave, você pode fazer referência à saída do trabalho de modelo original ou usar a CLI do Azure. O comando a seguir é um exemplo de uso da CLI do Azure para obter a ID do recurso do Cofre da Chave:

    az keyvault show --name mykeyvault --resource-group myresourcegroup --query id
    

    Este comando retorna um valor semelhante ao seguinte texto:

    /subscriptions/{subscription-guid}/resourceGroups/myresourcegroup/providers/Microsoft.KeyVault/vaults/mykeyvault
    

Próximos passos