Använda en Azure Resource Manager-mall för att skapa en arbetsyta för Azure Machine Learning

I den här artikeln får du lära dig flera sätt att skapa en Azure Machine Learning-arbetsyta med hjälp av Azure Resource Manager-mallar. En Resource Manager mall gör det enkelt att skapa resurser som en enda samordnad åtgärd. En mall är ett JSON-dokument som definierar de resurser som behövs för en distribution. Den kan också ange distributionsparametrar. Parametrar används för att ange indatavärden när du använder mallen.

Mer information finns i Distribuera ett program med Azure Resource Manager-mall.

Förutsättningar

Begränsningar

  • När du skapar en ny arbetsyta kan du antingen automatiskt skapa tjänster som krävs av arbetsytan eller använda befintliga tjänster. Om du vill använda befintliga tjänster från en annan Azure-prenumeration än arbetsytan måste du registrera Azure Machine Learning-namnområdet i prenumerationen som innehåller dessa tjänster. Om du till exempel skapar en arbetsyta i prenumeration A som använder ett lagringskonto från prenumeration B måste Azure Machine Learning-namnområdet registreras i prenumeration B innan du kan använda lagringskontot med arbetsytan.

    Resursprovidern för Azure Machine Learning är Microsoft.MachineLearningServices. Information om hur du ser om den är registrerad och hur du registrerar den finns i artikeln Azure-resursproviders och -typer .

    Viktigt

    Detta gäller endast för resurser som tillhandahålls när arbetsytan skapas. Azure Storage-konton, Azure Container Register, Azure Key Vault och Application Insights.

  • Exempelmallen kanske inte alltid använder den senaste API-versionen för Azure Machine Learning. Innan du använder mallen rekommenderar vi att du ändrar den så att den använder de senaste API-versionerna. Information om de senaste API-versionerna för Azure Machine Learning finns i REST-API:et för Azure Machine Learning.

    Tips

    Varje Azure-tjänst har en egen uppsättning API-versioner. Information om API:et för en specifik tjänst finns i tjänstinformationen i Azure REST API-referensen.

    Om du vill uppdatera API-versionen letar du upp "apiVersion": "YYYY-MM-DD" posten för resurstypen och uppdaterar den till den senaste versionen. Följande exempel är en post för Azure Machine Learning:

    "type": "Microsoft.MachineLearningServices/workspaces",
    "apiVersion": "2020-03-01",
    

Flera arbetsytor i samma virtuella nätverk

Mallen stöder inte flera Azure Machine Learning-arbetsytor som distribuerats i samma virtuella nätverk. Det beror på att mallen skapar nya DNS-zoner under distributionen.

Om du vill skapa en mall som distribuerar flera arbetsytor i samma virtuella nätverk konfigurerar du detta manuellt (med Hjälp av Azure-portalen eller CLI) och använder sedan Azure Portal för att generera en mall.

Mall för Resource Manager arbetsyta

Azure Resource Manager-mallen som används i det här dokumentet finns i katalogen microsoft.machineleaerningservices/machine-learning-workspace-vnet i Azure-snabbstartsmallarna på GitHub-lagringsplatsen.

Den här mallen skapar följande Azure-tjänster:

  • Azure Storage-konto
  • Azure Key Vault
  • Azure Application Insights
  • Azure Container Registry
  • Azure Machine Learning-arbetsyta

Resursgruppen är den container som innehåller tjänsterna. De olika tjänsterna krävs av Azure Machine Learning-arbetsytan.

Exempelmallen har två obligatoriska parametrar:

  • Platsen där resurserna ska skapas.

    Mallen använder den plats som du väljer för de flesta resurser. Undantaget är Application Insights-tjänsten, som inte är tillgänglig på alla platser som de andra tjänsterna är. Om du väljer en plats där den inte är tillgänglig skapas tjänsten på platsen USA, södra centrala.

  • WorkspaceName, som är det egna namnet på Azure Machine Learning-arbetsytan.

    Anteckning

    Arbetsytans namn är skiftlägesokänsligt.

    Namnen på de andra tjänsterna genereras slumpmässigt.

Tips

Mallen som är associerad med det här dokumentet skapar en ny Azure Container Registry, men du kan också skapa en ny arbetsyta utan att skapa ett containerregister. En skapas när du utför en åtgärd som kräver ett containerregister. Till exempel träning eller distribution av en modell.

Du kan också referera till ett befintligt containerregister eller lagringskonto i Azure Resource Manager-mallen i stället för att skapa ett nytt. När du gör det måste du antingen använda en hanterad identitet (förhandsversion) eller aktivera administratörskontot för containerregistret.

Varning

När en Azure Container Registry har skapats för en arbetsyta ska du inte ta bort den. Om du gör det bryts din Azure Machine Learning-arbetsyta.

Mer information om mallar finns i följande artiklar:

Distribuera mallen

Om du vill distribuera mallen måste du skapa en resursgrupp.

Se avsnittet Azure Portal om du föredrar att använda det grafiska användargränssnittet.

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

När resursgruppen har skapats distribuerar du mallen med följande kommando:

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"

Som standard är alla resurser som skapas som en del av mallen nya. Men du kan också välja att använda befintliga resurser. Genom att ange ytterligare parametrar för mallen kan du använda befintliga resurser. Om du till exempel vill använda ett befintligt lagringskonto anger du värdet storageAccountOption till befintligt och anger namnet på ditt lagringskonto i parametern storageAccountName .

Viktigt

Om du vill använda ett befintligt Azure Storage-konto kan det inte vara ett Premium-konto (Premium_LRS och Premium_GRS). Den kan inte heller ha ett hierarkiskt namnområde (används med Azure Data Lake Storage Gen2). Varken premiumlagring eller hierarkisk namnrymd stöds med arbetsytans standardlagringskonto. Varken premiumlagring eller hierarkiska namnrymder stöds med arbetsytans standardlagringskonto . Du kan använda premiumlagring eller hierarkiskt namnområde med lagringskonton som inte är standard .

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"

Distribuera en krypterad arbetsyta

Följande exempelmall visar hur du skapar en arbetsyta med tre inställningar:

  • Aktivera inställningar för hög konfidentialitet för arbetsytan. Detta skapar en ny Azure Cosmos DB-instans.
  • Aktivera kryptering för arbetsytan.
  • Använder en befintlig Azure-Key Vault för att hämta kundhanterade nycklar. Kundhanterade nycklar används för att skapa en ny Azure Cosmos DB-instans för arbetsytan.

Viktigt

När en arbetsyta har skapats kan du inte ändra inställningarna för konfidentiella data, kryptering, nyckelvalvs-ID eller nyckelidentifierare. Om du vill ändra dessa värden måste du skapa en ny arbetsyta med de nya värdena.

Mer information finns i Kundhanterade nycklar.

Viktigt

Det finns vissa specifika krav som din prenumeration måste uppfylla innan du använder den här mallen:

  • Du måste ha en befintlig Azure-Key Vault som innehåller en krypteringsnyckel.
  • Azure-Key Vault måste finnas i samma region där du planerar att skapa Azure Machine Learning-arbetsytan.
  • Du måste ange ID för Azure Key Vault och URI för krypteringsnyckeln.

Anvisningar för hur du skapar valvet och nyckeln finns i Konfigurera kundhanterade nycklar.

Använd följande steg för att hämta värdena för (ID för cmk_keyvault Key Vault) och de resource_cmk_uri (nyckel-URI) parametrar som krävs av den här mallen:

  1. Använd följande kommando för att hämta Key Vault-ID:

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

    Det här kommandot returnerar ett värde som liknar /subscriptions/{subscription-guid}/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>.

  2. Använd följande kommando för att hämta värdet för URI:n för den kundhanterade nyckeln:

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

Det här kommandot returnerar ett värde som liknar https://mykeyvault.vault.azure.net/keys/mykey/{guid}.

Viktigt

När en arbetsyta har skapats kan du inte ändra inställningarna för konfidentiella data, kryptering, nyckelvalvs-ID eller nyckelidentifierare. Om du vill ändra dessa värden måste du skapa en ny arbetsyta med hjälp av de nya värdena.

Om du vill aktivera användning av kundhanterade nycklar anger du följande parametrar när du distribuerar mallen:

  • encryption_status till Aktiverad.
  • cmk_keyvault till värdet cmk_keyvault som erhölls i föregående steg.
  • resource_cmk_uri till värdet resource_cmk_uri som erhölls i föregående steg.
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}" \

När du använder en kundhanterad nyckel skapar Azure Machine Learning en sekundär resursgrupp som innehåller Azure Cosmos DB-instansen. Mer information finns i Kryptering i vila i Azure Cosmos DB.

En ytterligare konfiguration som du kan ange för dina data är att ange parametern confidential_data till true. Gör följande:

  • Börjar kryptera den lokala scratch-disken för Azure Machine Learning-beräkningskluster, förutsatt att du inte har skapat några tidigare kluster i din prenumeration. Om du tidigare har skapat ett kluster i prenumerationen öppnar du ett supportärende för att ha kryptering av den tillfälliga disken aktiverad för dina beräkningskluster.

  • Rensar den lokala scratch-disken mellan jobb.

  • Skickar autentiseringsuppgifter på ett säkert sätt för lagringskontot, containerregistret och SSH-kontot från körningslagret till dina beräkningskluster med hjälp av nyckelvalvet.

  • Aktiverar IP-filtrering för att säkerställa att de underliggande batchpoolerna inte kan anropas av andra externa tjänster än AzureMachineLearningService.

    Viktigt

    När en arbetsyta har skapats kan du inte ändra inställningarna för konfidentiella data, kryptering, nyckelvalvs-ID eller nyckelidentifierare. Om du vill ändra dessa värden måste du skapa en ny arbetsyta med hjälp av de nya värdena.

    Mer information finns i kryptering i vila.

Distribuera arbetsytan bakom ett virtuellt nätverk

Genom att ange vnetOption parametervärdet till antingen new eller existingkan du skapa de resurser som används av en arbetsyta bakom ett virtuellt nätverk.

Viktigt

För containerregistret stöds endast premium-sku:n.

Viktigt

Application Insights stöder inte distribution bakom ett virtuellt nätverk.

Distribuera endast arbetsyta bakom privat slutpunkt

Om dina associerade resurser inte ligger bakom ett virtuellt nätverk kan du ange parametern privateEndpointType till AutoAproval eller ManualApproval distribuera arbetsytan bakom en privat slutpunkt. Detta kan göras för både nya och befintliga arbetsytor. När du uppdaterar en befintlig arbetsyta fyller du i mallparametrarna med informationen från den befintliga arbetsytan.

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"

Använda ett nytt virtuellt nätverk

Om du vill distribuera en resurs bakom ett nytt virtuellt nätverk ställer du in vnetOptionnytt tillsammans med inställningarna för det virtuella nätverket för respektive resurs. Distributionen nedan visar hur du distribuerar en arbetsyta med lagringskontoresursen bakom ett nytt virtuellt nätverk.

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"

Du kan också distribuera flera eller alla beroende resurser bakom ett virtuellt nätverk.

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"

Använda befintliga virtuella nätverksresurser &

Om du vill distribuera en arbetsyta med befintliga associerade resurser måste du ange parametern vnetOption till befintlig tillsammans med undernätsparametrar. Du måste dock skapa tjänstslutpunkter i det virtuella nätverket för var och en av resurserna före distributionen. Precis som med nya distributioner av virtuella nätverk kan du ha en eller alla resurser bakom ett virtuellt nätverk.

Viktigt

Undernätet ska ha Microsoft.Storage tjänstslutpunkt

Viktigt

Undernät tillåter inte att privata slutpunkter skapas. Inaktivera privat slutpunkt för att aktivera undernät.

  1. Aktivera tjänstslutpunkter för resurserna.

    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. Distribuera arbetsytan

    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"
    

Använda Azure-portalen

  1. Följ stegen i Distribuera resurser från en anpassad mall. När du kommer till skärmen Välj en mall väljer du posten snabbstarter . När den visas väljer du länken "Klicka här för att öppna malllagringsplatsen". Den här länken tar dig till quickstarts katalogen i lagringsplatsen för Azure-snabbstartsmallar.

  2. I listan över snabbstartsmallar väljer du microsoft.machinelearningservices. Välj Deploy to Azureslutligen .

  3. När mallen visas anger du följande nödvändiga information och andra parametrar beroende på ditt distributionsscenario.

    • Prenumeration: Välj den Azure-prenumeration som ska användas för dessa resurser.
    • Resursgrupp: Välj eller skapa en resursgrupp som ska innehålla tjänsterna.
    • Region: Välj den Azure-region där resurserna ska skapas.
    • Arbetsytans namn: Namnet som ska användas för den Azure Machine Learning-arbetsyta som ska skapas. Arbetsytans namn måste vara mellan 3 och 33 tecken. Den får bara innehålla alfanumeriska tecken och "-".
    • Plats: Välj den plats där resurserna ska skapas.
  4. Välj Granska + skapa.

  5. På skärmen Granska + skapa godkänner du de angivna villkoren och väljer Skapa.

Mer information finns i Distribuera resurser från en anpassad mall.

Felsökning

Resursproviderfel

När du skapar en Azure Machine Learning-arbetsyta eller en resurs som används av arbetsytan kan du få ett felmeddelande som liknar följande meddelanden:

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

De flesta resursprovidrar registreras automatiskt, men inte alla. Om du får det här meddelandet måste du registrera den angivna providern.

Följande tabell innehåller en lista över de resursprovidrar som krävs av Azure Machine Learning:

Resursprovider Varför det behövs
Microsoft.MachineLearningServices Skapa Azure Machine Learning-arbetsytan.
Microsoft.Storage Azure Storage-kontot används som standardlagring för arbetsytan.
Microsoft.ContainerRegistry Azure Container Registry används av arbetsytan för att skapa Docker-avbildningar.
Microsoft.KeyVault Azure Key Vault används av arbetsytan för att lagra hemligheter.
Microsoft.Notebooks/NotebookProxies Integrerade notebook-filer på Azure Machine Learning-beräkningsinstansen.
Microsoft.ContainerService Om du planerar att distribuera tränade modeller till Azure Kubernetes Services.

Om du planerar att använda en kundhanterad nyckel med Azure Machine Learning måste följande tjänsteleverantörer registreras:

Resursprovider Varför det behövs
Microsoft.DocumentDB/databaseAccounts Azure CosmosDB-instans som loggar metadata för arbetsytan.
Microsoft.Search/searchServices Azure Search tillhandahåller indexeringsfunktioner för arbetsytan.

Information om hur du registrerar resursprovidrar finns i Lösa fel för registrering av resursprovider.

Azure Key Vault-åtkomstprincip och Azure Resource Manager-mallar

När du använder en Azure Resource Manager-mall för att skapa arbetsytan och associerade resurser (inklusive Azure Key Vault) flera gånger. Du kan till exempel använda mallen flera gånger med samma parametrar som en del av en pipeline för kontinuerlig integrering och distribution.

De flesta åtgärder för att skapa resurser via mallar är idempotent, men Key Vault rensar åtkomstprinciperna varje gång mallen används. När åtkomstprinciperna rensas bryts åtkomsten till Key Vault för alla befintliga arbetsytor som använder den. Du kan till exempel misslyckas med att stoppa/skapa funktioner för virtuella Azure Notebooks-datorer.

För att undvika det här problemet rekommenderar vi någon av följande metoder:

  • Distribuera inte mallen mer än en gång för samma parametrar. Eller ta bort befintliga resurser innan du använder mallen för att återskapa dem.

  • Granska Key Vault åtkomstprinciper och använd sedan dessa principer för att ange mallens accessPolicies egenskap. Om du vill visa åtkomstprinciperna använder du följande Azure CLI-kommando:

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

    Mer information om hur du använder accessPolicies avsnittet i mallen finns i objektreferensen AccessPolicyEntry.

  • Kontrollera om den Key Vault resursen redan finns. Om den gör det ska du inte återskapa den via mallen. Om du till exempel vill använda den befintliga Key Vault i stället för att skapa en ny, gör du följande ändringar i mallen:

    • Lägg till en parameter som accepterar ID:t för en befintlig Key Vault resurs:

      "keyVaultId":{
        "type": "string",
        "metadata": {
          "description": "Specify the existing Key Vault ID."
        }
      }
      
    • Ta bort avsnittet som skapar en Key Vault resurs:

      {
        "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'))]",Ta bort raden från dependsOn avsnittet på arbetsytan. ÄndrakeyVault även posten i properties avsnittet på arbetsytan för att referera till parameternkeyVaultId:

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

    Efter dessa ändringar kan du ange ID för den befintliga Key Vault resursen när du kör mallen. Mallen återanvänder sedan Key Vault genom att ange keyVault arbetsytans egenskap till dess ID.

    Om du vill hämta ID:t för Key Vault kan du referera till utdata från det ursprungliga malljobbet eller använda Azure CLI. Följande kommando är ett exempel på hur du använder Azure CLI för att hämta Key Vault resurs-ID:

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

    Det här kommandot returnerar ett värde som liknar följande text:

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

Nästa steg