Distribuera Azure Machine Learning-tillägget på Azure Kubernetes Service (AKS) eller Azure Arc-aktiverat Kubernetes-kluster

Om du vill aktivera ditt Azure Kubernetes Service (AKS)- eller Azure Arc-aktiverade Kubernetes-kluster för att köra träningsjobb eller slutsatsdragningsarbetsbelastningar distribuerar du först Azure Machine Learning-tillägget. Azure Machine Learning-tillägget är ett Standard-klustertillägg för AKS och cluster-tillägget för Azure Arc-aktiverade Kubernetes. Du kan hantera livscykeln med hjälp av Azure CLI k8s-extension.

I den här artikeln lär du dig mer om:

  • Förutsättningar
  • Begränsningar
  • Granska konfigurationsinställningarna för Azure Machine Learning-tillägg
  • Distributionsscenarier för Azure Machine Learning-tillägg
  • Verifiera distribution för Azure Machine Learning-tillägg
  • Granska Azure Machine Learning-tilläggskomponenter
  • Hantera Azure Machine Learning-tillägg

Förutsättningar

Begränsningar

Granska konfigurationsinställningarna för Azure Machine Learning-tillägget

Använd Azure CLI-kommandot az k8s-extension create för att distribuera Azure Machine Learning-tillägget. Kommandot az k8s-extension create accepterar konfigurationsinställningar som blankstegsavgränsade key=value par via parametern --config eller --config-protected . I följande tabell visas de tillgängliga konfigurationsinställningar som du kan ange under distributionen.

Nyckelnamn för konfigurationsinställning beskrivning Utbildning Slutsatsdragning Utbildning och slutsatsdragning
enableTraining True eller False, standard False. Måste anges till True för distribution av Azure Machine Learning-tillägg med maskininlärningsmodellträning och stöd för batchbedömning. Ej tillämpligt
enableInference True eller False, standard False. Måste anges till True för distribution av Azure Machine Learning-tillägg med stöd för strojové učenie-slutsatsdragning. Ej tillämpligt
allowInsecureConnections True eller False, standard False. Kan ställas in på True för att använda inferens-HTTP-endpoints för utvecklings- eller teständamål. Ej tillämpligt Valfritt Valfritt
inferenceRouterServiceType loadBalancer, nodePort, eller clusterIP. Krävs om enableInference=True. Ej tillämpligt
internalLoadBalancerProvider Den här konfigurationen gäller endast för Azure Kubernetes Service-kluster (AKS) nu. Ange azure för att låta inferensroutern använda den interna lastbalanseraren. Ej tillämpligt Valfritt Valfritt
sslSecret Namnet på Kubernetes-hemligheten i namnrymden azureml. Den här konfigurationen används för att lagra cert.pem (PEM-kodad TLS/SSL-certifikat) och key.pem (PEM-kodad TLS/SSL-nyckel), som krävs för slutsatsdragning av HTTPS-slutpunktsstöd när allowInsecureConnections är inställt på False. En YAML-exempeldefinition av sslSecretfinns i Konfigurera sslSecret. Använd den här konfigurationen eller en kombination av sslCertPemFile och sslKeyPemFile skyddade konfigurationsinställningar. Ej tillämpligt Valfritt Valfritt
sslCname Ett TLS/SSL-CNAME används av HTTPS-slutpunkten för inferens. Krävs om allowInsecureConnections=False Ej tillämpligt Valfritt Valfritt
inferenceRouterHA True eller False, standard True. Som standard distribuerar Azure Machine Learning-tillägget tre slutsatsdragningsrouterrepliker för hög tillgänglighet, vilket kräver minst tre arbetsnoder i ett kluster. Ange till False om klustret har färre än tre arbetsnoder, i det här fallet distribueras endast en slutsatsdragningsroutertjänst. Ej tillämpligt Valfritt Valfritt
nodeSelector Som standard distribueras de distribuerade kubernetes-resurserna och dina maskininlärningsarbetsbelastningar slumpmässigt till en eller flera noder i klustret, och DaemonSet-resurser distribueras till ALLA noder. Om du vill begränsa tilläggsdistributionen och dina tränings- och inferensarbetsbelastningar till specifika noder med etiketterna key1=value1 och key2=value2, använder du nodeSelector.key1=value1 respektive nodeSelector.key2=value2. Valfritt Valfritt Valfritt
installNvidiaDevicePlugin True eller False, standard False. NVIDIA Device Plugin krävs för ML-arbetsbelastningar på NVIDIA GPU-maskinvara. Distributionen av Azure Machine Learning-tillägget installerar som standard inte NVIDIA Device Plugin oavsett om Kubernetes-klustret har GPU-maskinvara eller inte. Användaren kan ange den här inställningen till True, för att installera den, men se till att uppfylla kraven. Valfritt Valfritt Valfritt
installPromOp True eller False, standard True. Azure Machine Learning-tillägget behöver prometheus-operatorn för att hantera prometheus. Ställ in på False för att återanvända den befintliga Prometheus-operatorn. Mer information om hur du återanvänder den befintliga prometheus-operatorn finns i Återanvända prometheus-operatorn Valfritt Valfritt Valfritt
installVolcano True eller False, standard True. Azure Machine Learning-tillägget behöver vulkanschemaläggare för att schemalägga jobbet. Ställ in på False för att återanvända den befintliga Volcano-schemaläggaren. Mer information om hur du återanvänder den befintliga vulkanschemaläggaren finns i Återanvända vulkanschemaläggare Valfritt Ej tillämpligt Valfritt
installDcgmExporter True eller False, standard False. Dcgm-exporter kan exponera GPU-mått för Azure Machine Learning-arbetsbelastningar, som kan övervakas i Azure Portal. Ange installDcgmExporter till True för att installera dcgm-exporter. Men om du vill använda din egen dcgm-exporter, se DCGM exporter Valfritt Valfritt Valfritt
Nyckelnamn för konfigurationsskyddad inställning beskrivning Utbildning Slutsatsdragning Utbildning och slutsatsdragning
sslCertPemFile, sslKeyPemFile Sökväg till TLS/SSL-certifikat och nyckelfil (PEM-kodade), som krävs för distribuering av Azure Machine Learning-tillägget med stöd för HTTPS-slutpunkter för inferens, när allowInsecureConnections är inställt på False. Obs! PEM-fil med lösenordsfras skyddad stöds inte Ej tillämpligt Valfritt Valfritt

Som du ser i tabellen med konfigurationsinställningar kan du med kombinationerna av olika konfigurationsinställningar distribuera Azure Machine Learning-tillägget för olika ML-arbetsbelastningsscenarier:

  • För träningsjobb och arbetsbelastning för batchinferens anger du enableTraining=True
  • Ange detta endast för inferensarbetsbelastning enableInference=True
  • För alla typer av ML-arbetsbelastningar anger du både enableTraining=True och enableInference=True

Om du planerar att distribuera Azure Machine Learning-tillägget för inferensarbetsbelastning i realtid och vill ange enableInference=Truebör du tänka på följande konfigurationsinställningar som rör arbetsbelastningen för slutsatsdragning i realtid:

  • azureml-fe router-tjänsten krävs för inferensstöd i realtid och du måste ange inferenceRouterServiceType konfigurationsinställningen för azureml-fe. azureml-fe kan distribueras med något av följande inferenceRouterServiceType:
    • Skriv loadBalancer. Exponerar azureml-fe externt med hjälp av en molnleverantörs lastbalanserare. Om du vill ange det här värdet kontrollerar du att klustret stöder etablering av lastbalanserare. Observera att de flesta lokala Kubernetes-kluster kanske inte stöder extern lastbalanserare.
    • Skriv nodePort. Exponerar azureml-fe på varje nods IP-adress på en statisk port. Du kan kontakta azureml-fe, utanför klustret, genom att begära <NodeIP>:<NodePort>. Med hjälp av nodePort kan du också konfigurera en egen belastningsutjämningslösning och TLS/SSL-avslutning för azureml-fe. Mer information om hur du konfigurerar din egen ingress finns i Integrera andra ingresskontrollanter med Azure Machine Learning tillägg via HTTP eller HTTPS.
    • Skriv clusterIP. Exponerar azureml-fe via en klusterintern IP-adress och gör att azureml-fe endast kan nås inifrån klustret. För azureml-fe att kunna hantera slutsatsdragningsbegäranden som kommer utanför klustret måste du konfigurera en egen lastbalanseringslösning och TLS/SSL-avslutning för azureml-fe. Mer information om hur du konfigurerar din egen ingress finns i Integrera andra ingresskontrollanter med Azure Machine Learning tillägg via HTTP eller HTTPS.
  • För att säkerställa hög tillgänglighet för routningstjänsten azureml-fe skapar Azure Machine Learning-tilläggsdistributionen som standard tre repliker av azureml-fe för kluster med tre noder eller mer. Om klustret har färre än 3 noder anger du inferenceRouterHA=False.
  • Du vill också överväga att använda HTTPS för att begränsa åtkomsten till modellslutpunkter och skydda de data som klienter skickar. För detta ändamål måste du ange antingen sslSecret konfigurationsinställning eller kombination av sslKeyPemFile och sslCertPemFile konfigurationsskyddade inställningar.
  • Som standard förväntar sig distributionen av Azure Machine Learning-tillägget konfigurationsinställningar för HTTPS-stöd . För utvecklings- eller teständamål kan stöd för HTTP enkelt tillhandahållas via konfigurationsinställningen allowInsecureConnections=True.

Distribution av Azure Machine Learning-tillägg – CLI-exempel och Azure Portal

Om du vill distribuera Azure Machine Learning-tillägget med hjälp av CLI använder du kommandot az k8s-extension create och anger värden för de obligatoriska parametrarna.

I följande lista beskrivs fyra vanliga distributionsscenarier för tillägg. Om du vill distribuera tillägget för din produktionsanvändning läser du noggrant den fullständiga listan med konfigurationsinställningar.

  • Använd AKS-kluster i Azure för ett snabbt koncepttest för att köra alla slags ML-arbetsbelastningar, till exempel för att köra träningsjobb eller driftsätta modeller som online- eller batchslutpunkter

    För Azure Machine Learning tilläggsdistribution i AKS-kluster anger du värdet managedClusters för parametern --cluster-type. Kör följande Azure CLI-kommando för att distribuera Azure Machine Learning-tillägget:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=loadBalancer allowInsecureConnections=True inferenceRouterHA=False --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Använd ett Azure Arc-aktiverat Kubernetes-kluster utanför Azure för att få ett snabbt konceptbevis för att endast köra träningsjobb

    För Azure Machine Learning tilläggsdistribution på ett Azure Arc-aktiverat Kubernetes kluster anger du connectedClusters värde för parametern --cluster-type. Kör följande Azure CLI-kommando för att distribuera Azure Machine Learning-tillägget:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Enable an AKS cluster in Azure for production training and inference workload För Azure Machine Learning tilläggsdistribution på AKS anger du managedClusters värde för parametern --cluster-type. Förutsatt att klustret har fler än tre noder och du använder en offentlig Azure-lastbalanserare och HTTPS för slutsatsdragningsarbetsbelastningsstöd. Kör följande Azure CLI-kommando för att distribuera Azure Machine Learning-tillägget:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=loadBalancer sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Aktivera ett Azure Arc-aktiverat Kubernetes-kluster var som helst för produktionsträning och slutsatsdragningsarbetsbelastning med NVIDIA GPU:er

    För Azure Machine Learning tilläggsdistribution på ett Azure Arc-aktiverat Kubernetes kluster anger du connectedClusters värde för parametern --cluster-type. Förutsatt att klustret har fler än tre noder använder du en NodePort-tjänsttyp och HTTPS för slutsatsdragningsarbetsbelastningsstöd, kör följande Azure CLI-kommando för att distribuera Azure Machine Learning-tillägget:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=nodePort sslCname=<ssl cname> installNvidiaDevicePlugin=True installDcgmExporter=True --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
    

Verifiera distribution för Azure Machine Learning-tillägg

  1. Kör det tillämpliga CLI-kommandot för att kontrollera information om Azure Machine Learning-tillägget:

    AKS

    az k8s-extension show --name <extension-name> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <resource-group>
    

    Kubernetes aktiverade via Azure Arc

    az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
    
  2. I svaret letar du efter "name" och "provisioningState": "Succeeded". Det kan visas "provisioningState": "Pending" under de första minuterna.

  3. Om provisioningState visar Succeeded, kör du följande kommando på din dator med kubeconfig-filen som pekar på ditt kluster för att kontrollera att alla poddar i namnområdet azureml är i tillståndet Running:

     kubectl get pods -n azureml
    

Granska Azure Machine Learning-tilläggskomponenten

När distributionen av Azure Machine Learning-tillägget är klar använder du kubectl get deployments -n azureml för att se listan över resurser som skapats i klustret. Listan består vanligtvis av en delmängd av följande resurser, beroende på vilka konfigurationsinställningar du anger.

Resursnamn Resurstyp Utbildning Slutsatsdragning Utbildning och slutsatsdragning beskrivning Kommunikation med molnet
reläserver Kubernetes-driftsättning Distributionen skapar reläservern endast för Azure Arc-aktiverade Kubernetes-kluster, och inte i AKS-kluster. Relay-servern fungerar med Azure Relay för att kommunicera med molntjänsterna. Ta emot begäran om jobbskapande, modelldistribution från molntjänsten; synkronisera jobbstatusen med molntjänsten.
portingång Kubernetes-driftsättning Gatewayen används för att kommunicera och skicka data fram och tillbaka. Skicka noder och klusterresursinformation till molntjänster.
aml-operatör Kubernetes-driftsättning Ej tillämpligt Hantera livscykeln för träningsjobb. Tokenutbyte med molntokentjänsten för autentisering och auktorisering av Azure Container Registry.
Mätvärdeskontrollhanterare Kubernetes-driftsättning Hantera konfigurationen för Prometheus Ej tillämpligt
{EXTENSION-NAME}-kube-state-metrics Kubernetes-deployment Exportera klusterrelaterade mått till Prometheus. Ej tillämpligt
{EXTENSION-NAME}-prometheus-operator Kubernetes-distribution Valfritt Valfritt Valfritt Ge Kubernetes intern distribution och hantering av Prometheus och relaterade övervakningskomponenter. Ej tillämpligt
amlarc-identity-controller Kubernetes-driftsättning Ej tillämpligt Begära och förnya Azure Blob/Azure Container Registry-token via hanterad identitet. Tokenutbyte med molntokentjänsten för autentisering och auktorisering av Azure Container Registry och Azure Blob som används av slutsatsdragning/modelldistribution.
amlarc-identity-proxy Kubernetes-driftsättning Ej tillämpligt Begära och förnya Azure Blob/Azure Container Registry-token via hanterad identitet. Tokenutbyte med molntokentjänsten för autentisering och auktorisering av Azure Container Registry och Azure Blob som används av slutsatsdragning/modelldistribution.
azureml-fe-v2 Kubernetes-driftsättning Ej tillämpligt Klientdelskomponenten som dirigerar inkommande slutsatsdragningsbegäranden till distribuerade tjänster. Skicka tjänstloggar till Azure Blob.
inference-operator-controller-manager Kubernetes-driftsättning Ej tillämpligt Hantera livscykeln för slutpunkter för slutsatsdragning. Ej tillämpligt
vulkaninmatning Kubernetes-driftsättning Valfritt Ej tillämpligt Valfritt Vulkanantagning webhook. Ej tillämpligt
vulkankontrollanter Kubernetes-driftsättning Valfritt Ej tillämpligt Valfritt Hantera livscykeln för Azure Machine Learning-träningsjobbpoddar. Ej tillämpligt
volcano-scheduler Kubernetes-deployment Valfritt Ej tillämpligt Valfritt Används för att utföra schemaläggning av jobb i klustret. Ej tillämpligt
fluent-bit Kubernetes-daemonset Samla in komponenternas systemloggar. Ladda upp komponenternas systemlogg till molnet.
{EXTENSION-NAME}-dcgm-exporter Kubernetes DaemonSet Valfritt Valfritt Valfritt dcgm-exporter exponerar GPU-mått för Prometheus. Ej tillämpligt
nvidia-device-plugin-daemonset Kubernetes daemonset Valfritt Valfritt Valfritt nvidia-device-plugin-daemonset exponerar GPU:er på varje nod i klustret Ej tillämpligt
prometheus-prom-prometheus Kubernetes statefulset Samla in och skicka jobbmått till molnet. Skicka jobbmått som cpu/gpu/minnesanvändning till molnet.

Viktigt!

  • Den Azure Relay resursen finns i samma resursgrupp som Arc-klusterresursen. Den används för att kommunicera med Kubernetes-klustret. Om du ändrar den slutar anslutna beräkningsmål att fungera.
  • Som standard distribueras distributionsresurserna slumpmässigt till en eller flera noder i klustret och daemonsetresurser distribueras till alla noder. Om du vill begränsa tilläggsdistributionen till specifika noder använder du konfigurationsinställningen nodeSelector som beskrivs i tabellen konfigurationsinställningar.

Kommentar

  • {EXTENSION-NAME}: är det tilläggsnamn som du anger med hjälp az k8s-extension create --name av CLI-kommandot.

Hantera Azure Machine Learning-tillägg

Uppdatera, lista, visa och ta bort ett Azure Machine Learning-tillägg.

Nästa steg