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
- Ett AKS-kluster som körs i Azure. Om du inte tidigare har använt klustertillägg måste du registrera KubernetesConfiguration-tjänstprovidern.
- Eller så är ett Arc Kubernetes-kluster igång. Följ anvisningarna i ansluta befintliga Kubernetes-kluster till Azure Arc.
- Om klustret är ett Azure RedHat OpenShift-tjänstkluster (ARO) eller Ett OCP-kluster (OpenShift Container Platform) måste du uppfylla andra nödvändiga steg som beskrivs i artikeln Referens för att konfigurera Kubernetes-kluster .
- I produktionssyfte måste Kubernetes-klustret ha minst 4 vCPU-kärnor och 14 GB minne. Mer information om resursinformation och rekommendationer för klusterstorlek finns i Rekommenderad resursplanering.
- Kluster som körs bakom en utgående proxyserver eller brandvägg behöver extra nätverkskonfigurationer.
- Installera eller uppgradera Azure CLI till version 2.24.0 eller senare.
- Installera eller uppgradera Azure CLI-tillägget
k8s-extension
till version 1.2.3 eller senare.
Begränsningar
- Användning av tjänstens huvudnamn med AKS stöds inte av Azure Machine Learning. AKS-klustret måste använda en hanterad identitet i stället. Både systemtilldelad hanterad identitet och användartilldelad hanterad identitet stöds. Mer information finns i Använda en hanterad identitet i Azure Kubernetes Service.
- När ditt AKS-kluster som används tjänstens huvudnamn konverteras för att använda hanterad identitet måste alla nodpooler tas bort och återskapas innan tillägget installeras, i stället för att uppdateras direkt.
- Att inaktivera lokala konton för AKS stöds inte av Azure Machine Learning. När AKS-klustret distribueras aktiveras lokala konton som standard.
- Om AKS-klustret har ett auktoriserat IP-intervall aktiverat för åtkomst till API-servern aktiverar du IP-intervallen för Azure Machine Learning-kontrollplanet för AKS-klustret. Azure Machine Learning-kontrollplanet distribueras över parade regioner. Utan åtkomst till API-servern kan maskininlärningspodarna inte distribueras. Använd IP-intervallen för båda kopplade regionerna när du aktiverar IP-intervallen i ett AKS-kluster.
- Azure Machine Learning stöder inte anslutning av ett AKS-kluster mellan prenumerationer. Om du har ett AKS-kluster i en annan prenumeration måste du först ansluta det till Azure-Arc och ange det i samma prenumeration som din Azure Machine Learning-arbetsyta.
- Azure Machine Learning garanterar inte stöd för alla förhandsversionsstegsfunktioner i AKS. Microsoft Entra-poddidentitet stöds till exempel inte.
- Om du har följt stegen från Azure Machine Learning AKS v1-dokumentet för att skapa eller bifoga AKS som slutsatsdragningskluster använder du följande länk för att rensa de äldre azureml-fe-relaterade resurserna innan du fortsätter nästa steg.
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 sslSecret finns 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=value1 motsvarande 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 Portal. 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
ochenableInference=True
Om du planerar att distribuera Azure Machine Learning-tillägget för inferensarbetsbelastning i realtid och vill ange enableInference=True
bö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 angeinferenceRouterServiceType
konfigurationsinställningen förazureml-fe
.azureml-fe
kan distribueras med något av följandeinferenceRouterServiceType
:- Skriv
LoadBalancer
. Exponerarazureml-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
. Exponerarazureml-fe
på varje nods IP-adress på en statisk port. Du kommer att kunna kontaktaazureml-fe
, utanför klustret, genom att begära<NodeIP>:<NodePort>
. Med hjälp avNodePort
kan du också konfigurera en egen belastningsutjämningslösning och TLS/SSL-avslutning förazureml-fe
. - Skriv
ClusterIP
. Exponerasazureml-fe
på en klusterintern IP-adress och kanazureml-fe
endast nås inifrån klustret. Förazureml-fe
att kunna hantera slutsatsdragningsbegäranden som kommer utanför klustret måste du konfigurera en egen lastbalanseringslösning och TLS/SSL-avslutning förazureml-fe
.
- Skriv
- 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 avazureml-fe
för kluster med tre noder eller mer. Om klustret har färre än 3 noder anger duinferenceRouterHA=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 avsslKeyPemFile
ochsslCertPemFile
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
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>
I svaret letar du efter "name" och "provisioningState": "Succeeded". Observera att det kan visa "provisioningState": "Väntar" under de första minuterna.
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.
- Information om AKS-kluster utan Azure Arc-anslutning finns i Distribuera och hantera klustertillägg.
- Azure Arc-aktiverade Kubernetes finns i Distribuera och hantera Azure Arc-aktiverade Kubernetes-klustertillägg.