Distribuera Azure Machine Learning-tillägg i Kubernetes-kluster

För att ditt AKS- eller Arc Kubernetes-kluster ska kunna köra träningsjobb eller slutsatsdragningsarbetsbelastningar måste du först distribuera Azure Machine Learning-tillägget i ett AKS- eller Arc Kubernetes-kluster. Azure Machine Learning-tillägget bygger på klustertillägget för AKS och klustertillägget eller Arc Kubernetes, och dess livscykel kan enkelt hanteras med Azure CLI k8s-extension.

I den här artikeln kan du lära dig:

  • 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

Du kan använda Azure Machine Learning CLI-kommandot k8s-extension create för att distribuera Azure Machine Learning-tillägget. MED CLI k8s-extension create kan du ange en uppsättning konfigurationsinställningar i key=value format med hjälp av --config eller --config-protected parameter. Följande är listan över tillgängliga konfigurationsinställningar som ska anges under distributionen av Azure Machine Learning-tillägget.

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 Machine Learning-slutsatsdragning. Ej tillämpligt
allowInsecureConnections True eller False, standard False. Kan ställas in på för att True använda slutsatsdragning av HTTP-slutpunkter för utveckling eller testning. 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 till azure för att tillåta inferensroutern med hjälp av intern lastbalanserare. Ej tillämpligt Valfritt Valfritt
sslSecret Namnet på Kubernetes-hemligheten azureml i namnområdet. 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 En TLS/SSL CNAME används av slutsatsdragningens HTTPS-slutpunkt. 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-/slutsatsdragningsarbetsbelastningar till specifika noder med etiketten key1=value1 och key2=value2, använder du nodeSelector.key1=value1motsvarande 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. Ange till för att False å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å för att False återanvända befintlig vulkanschemaläggare. 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-portalen. Ange installDcgmExporter till för att True installera dcgm-exporter. Men om du vill använda din egen dcgm-exporter kan du läsa DCGM-exportören 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-kodad), som krävs för distribution av Azure Machine Learning-tillägg med slutsatsdragning https-slutpunktsstöd, 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 batchinferensarbetsbelastning anger du enableTraining=True
  • Ange endast för slutsatsdragningsarbetsbelastning 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 kommer att kunna 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.
    • Skriv ClusterIP. Exponeras azureml-fe på en klusterintern IP-adress och kan azureml-fe endast 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.
  • 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 . I utvecklings- eller testsyfte tillhandahålls HTTP-stöd enkelt 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 CLI använder du az k8s-extension create kommando som skickar in värden för de obligatoriska parametrarna.

Vi listar fyra typiska distributionsscenarier för tillägg som referens. 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 konceptbevis för att köra alla typer av ML-arbetsbelastningar, dvs. för att köra träningsjobb eller distribuera modeller som online-/batchslutpunkter

    För distribution av Azure Machine Learning-tillägg i AKS-kluster måste du ange managedClusters värdet för --cluster-type parametern. 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 Arc Kubernetes-kluster utanför Azure för ett snabbt konceptbevis för att endast köra träningsjobb

    För distribution av Azure Machine Learning-tillägg i Arc Kubernetes-klustret måste du ange connectedClusters värdet för --cluster-type parametern. 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
    
  • Aktivera ett AKS-kluster i Azure för produktionsträning och slutsatsdragningsarbetsbelastning För distribution av Azure Machine Learning-tillägg i AKS måste du ange managedClusters värdet för --cluster-type parametern. 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 Arc Kubernetes-kluster var som helst för produktionsträning och slutsatsdragningsarbetsbelastning med NVIDIA GPU:er

    För distribution av Azure Machine Learning-tillägget i Arc Kubernetes-klustret måste du ange connectedClusters värdet för --cluster-type parametern. 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 följande CLI-kommando för att kontrollera information om Azure Machine Learning-tillägget:

    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". Observera att det kan visa "provisioningState": "Väntar" under de första minuterna.

  3. Om provisioningState visar Lyckades kör du följande kommando på datorn med kubeconfig-filen riktad mot klustret för att kontrollera att alla poddar under "azureml"-namnområdet är i tillståndet "Körs":

     kubectl get pods -n azureml
    

Granska Azure Machine Learning-tilläggskomponenten

När distributionen av Azure Machine Learning-tillägget har slutförts kan du använda kubectl get deployments -n azureml för att se en lista över resurser som skapats i klustret. Den består vanligtvis av en delmängd av följande resurser per angivna konfigurationsinställningar.

Resursnamn Resurstyp Utbildning Slutsatsdragning Utbildning och slutsatsdragning beskrivning Kommunikation med molnet
relayserver Kubernetes-distribution Relay-servern skapas endast för Arc 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.
gateway Kubernetes-distribution Gatewayen används för att kommunicera och skicka data fram och tillbaka. Skicka noder och klusterresursinformation till molntjänster.
aml-operator Kubernetes-distribution Ej tillämpligt Hantera livscykeln för träningsjobb. Tokenutbyte med molntokentjänsten för autentisering och auktorisering av Azure Container Registry.
metrics-controller-manager Kubernetes-distribution Hantera konfigurationen för Prometheus Ej tillämpligt
{EXTENSION-NAME}-kube-state-metrics Kubernetes-distribution 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-distribution 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-distribution 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-distribution Ej tillämpligt Klientdelskomponenten som dirigerar inkommande slutsatsdragningsbegäranden till distribuerade tjänster. Skicka tjänstloggar till Azure Blob.
inference-operator-controller-manager Kubernetes-distribution Ej tillämpligt Hantera livscykeln för slutpunkter för slutsatsdragning. Ej tillämpligt
vulkan-antagning Kubernetes-distribution Valfritt Ej tillämpligt Valfritt Vulkanantagning webhook. Ej tillämpligt
vulkankontrollanter Kubernetes-distribution Valfritt Ej tillämpligt Valfritt Hantera livscykeln för Azure Machine Learning-träningsjobbpoddar. Ej tillämpligt
volcano-scheduler Kubernetes-distribution 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 systemlogg. 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!

  • Azure Relay-resursen finns under samma resursgrupp som Arc-klusterresursen. Det används för att kommunicera med Kubernetes-klustret och om du ändrar dem bryts anslutna beräkningsmål.
  • Som standard distribueras kubernetes-distributionsresurserna slumpmässigt till 1 eller fler noder i klustret och daemonsetresurser distribueras till ALLA noder. Om du vill begränsa tilläggsdistributionen till specifika noder använder nodeSelector du konfigurationsinställningen som beskrivs i tabellen konfigurationsinställningar.

Kommentar

  • {EXTENSION-NAME}: är det tilläggsnamn som angetts med az k8s-extension create --name CLI-kommandot.

Hantera Azure Machine Learning-tillägg

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

Nästa steg