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

I den här artikeln lär du 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 behö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 i prenumeration B måste Azure Machine Learning-namnområdet registreras i prenumeration B innan arbetsytan kan använda lagringskontot.

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

    Viktigt!

    Den här informationen gäller endast för resurser som tillhandahålls när arbetsytan skapas: Azure Storage-konton, Azure Container Registry, 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.

    Dricks

    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 reda på "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": "2023-10-01",
    

Flera arbetsytor i samma virtuella nätverk

Mallen stöder inte flera Azure Machine Learning-arbetsytor som distribuerats i samma virtuella nätverk. Den här begränsningen 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 den manuellt (med hjälp av Azure Portal eller CLI). Använd sedan Azure Portal för att generera en mall.

Om Azure Resource Manager-mallen

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

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 containern som innehåller tjänsterna. Azure Machine Learning-arbetsytan använder dessa tjänster för funktioner som att lagra data, hemligheter, loggning och Docker-avbildningar.

Exempelmallen har två obligatoriska parametrar:

  • Platsen där resurserna 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.

    Kommentar

    Arbetsytans namn är skiftlägeskänsligt.

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

Dricks

Mallen som är associerad med det här dokumentet skapar ett nytt 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 ett Azure Container Registry har skapats för en arbetsyta ska du inte ta bort det. Detta bryter 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 har också möjlighet att använda befintliga resurser. Genom att ange andra 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). Det kan inte heller ha ett hierarkiskt namnområde (används med Azure Data Lake Storage Gen2). Varken premiumlagring eller hierarkisk namnrymd stöds med standardlagringskontot för arbetsytan. Varken premiumlagring eller hierarkiska namnområden stöds med standardlagringskontot för arbetsytan. 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. Den här konfigurationen skapar en ny Azure Cosmos DB-instans.
  • Aktivera kryptering för arbetsytan.
  • Använder ett befintligt 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 hjälp av 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 ett befintligt 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 om 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 parametrarna (ID för cmk_keyvault Key Vault) och ( resource_cmk_uri nyckel-URI) som krävs av den här mallen:

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

    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 det värde som resource_cmk_uri 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 annan konfiguration som du kan ange för dina data är att ange parametern confidential_data till true. På så sätt kan du göra 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 hade skapat ett kluster i prenumerationen öppnar du ett supportärende för att ha kryptering av den scratch-disken aktiverad för dina beräkningskluster.

  • Rensar den lokala scratch-disken mellan jobb.

  • Skickar säkert autentiseringsuppgifter 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 inga externa tjänster förutom AzureMachineLearningService kan anropa de underliggande batchpoolerna.

    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 containerregister 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 finns bakom ett virtuellt nätverk kan du ange parametern privateEndpointType till AutoAproval eller ManualApproval distribuera arbetsytan bakom en privat slutpunkt. Den här inställningen kan användas 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. I följande exempel visas 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 ett befintligt virtuellt nätverk och resurser

Om du vill distribuera en arbetsyta med befintliga 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 innan 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änstslutpunkten

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 Portal

  1. Följ stegen i Distribuera resurser från en anpassad mall. När du kommer till skärmen Anpassad distribution väljer du posten Snabbstartsmall .

  2. I listrutan för Snabbstartsmallar väljer du posten microsoft.machinelearningservices/machine-learning-workspace-vnet . Använd slutligen Select template.

  3. När mallen visas anger du följande nödvändig 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 den resursgrupp som ska innehålla tjänsterna.
    • Region: Välj den Azure-region där resurserna ska skapas.
    • Namn på arbetsyta: 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 kan 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 fel 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 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 Azure CosmosDB-instans som loggar metadata för arbetsytan.
Microsoft.Search Azure Search tillhandahåller indexeringsfunktioner för arbetsytan.

Om du planerar att använda ett hanterat virtuellt nätverk med Azure Machine Learning måste resursprovidern Microsoft.Network vara registrerad. Den här resursprovidern används av arbetsytan när du skapar privata slutpunkter för det hanterade virtuella nätverket.

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

Åtkomstprincip för Azure Key Vault 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-åtkomstprinciperna 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 Key Vault-resursen redan finns. Om den gör det ska du inte återskapa den via mallen. Om du till exempel vill använda det befintliga Nyckelvalvet i stället för att skapa ett nytt 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. Ändra även posten i properties avsnittet på arbetsytan för att referera till parameternkeyVaultId:keyVault

      {
        "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 egenskapen för arbetsytan 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:t:

    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