De Azure Machine Learning-extensie implementeren op Azure Kubernetes Service (AKS) of een voor Azure Arc ingeschakeld Kubernetes-cluster

Als u uw Azure Kubernetes Service-cluster (AKS) of met Azure Arc ingeschakelde Kubernetes-cluster wilt gebruiken voor het uitvoeren van trainingstaken of inferentieworkloads, implementeert u eerst de Azure Machine Learning-extensie. De Azure Machine Learning-extensie is een Standard-clusterextensie voor AKS en clusterextensie voor kubernetes met Azure Arc. U kunt de levenscyclus beheren met behulp van Azure CLI k8s-extension.

In dit artikel krijgt u meer informatie over:

  • Vereisten
  • Beperkingen
  • Configuratie-instellingen van Azure Machine Learning-extensie controleren
  • Implementatiescenario's voor Azure Machine Learning-extensie
  • Implementatie van Azure Machine Learning-extensie verifiëren
  • Onderdelen van de Azure Machine Learning-extensie bekijken
  • Azure Machine Learning CLI-extensie beheren

Vereisten

  • Een AKS-cluster dat wordt uitgevoerd in Azure. Als u nog geen clusterextensies hebt gebruikt, moet u de KubernetesConfiguration-serviceprovider registreren.
  • Of een Kubernetes-cluster met Azure Arc ingeschakeld dat actief is. Volg de instructies in het verbinden van een bestaand Kubernetes-cluster met Azure Arc.
    • Als het cluster een Azure RedHat OpenShift-servicecluster (ARO) of OCP-cluster (OpenShift Container Platform) is, moet u voldoen aan andere vereiste stappen, zoals beschreven in het artikel Naslaginformatie voor het configureren van Kubernetes-cluster .
  • Voor productiedoeleinden moet het Kubernetes-cluster minimaal 4 vCPU-kernen en 14 GB geheugen hebben. Zie Aanbevolen resourceplanning voor meer informatie over resourcedetails en aanbevelingen voor clustergrootte.
  • Een cluster dat achter een uitgaande proxyserver of firewall wordt uitgevoerd, heeft extra netwerkconfiguraties nodig.
  • Azure CLI installeren of upgraden naar versie 2.51.0 of hoger.
  • Installeer of upgrade de Azure CLI-extensie k8s-extension naar versie 1.2.3 of hoger.

Beperkingen

  • Azure Machine Learning ondersteunt het gebruik van een service-principal met AKS niet. Het AKS-cluster moet in plaats daarvan een beheerde identiteit gebruiken. Zowel door het systeem toegewezen beheerde identiteit als door de gebruiker toegewezen beheerde identiteit worden ondersteund. Zie Een beheerde identiteit gebruiken in Azure Kubernetes Service voor meer informatie.
    • Wanneer u uw AKS-cluster converteert van het gebruik van een service-principal naar een beheerde identiteit, moet u alle knooppuntgroepen verwijderen en opnieuw maken voordat u de extensie installeert. U kunt de knooppuntgroepen niet rechtstreeks bijwerken.
  • Azure Machine Learning biedt geen ondersteuning voorhet uitschakelen van lokale accounts voor AKS. Wanneer u het AKS-cluster implementeert, worden lokale accounts standaard ingeschakeld.
  • Als voor uw AKS-cluster een Authorized IP-bereik is ingeschakeld voor toegang tot de API-server moet u de IP-bereiken van het Azure Machine Learning besturingsvlak voor het AKS-cluster inschakelen. Het Azure Machine Learning-besturingsvlak wordt geïmplementeerd in gekoppelde regio's. Zonder toegang tot de API-server kunnen de ML-pods niet worden geïmplementeerd. Gebruik de IP-bereiken voor beide gekoppelde regio's bij het inschakelen van de IP-bereiken in een AKS-cluster.
  • Azure Machine Learning biedt geen ondersteuning voor het koppelen van een AKS-cluster voor meerdere abonnementen. Als u een AKS-cluster in een ander abonnement hebt, moet u het eerst verbinden met Azure Arc en opgeven in hetzelfde abonnement als uw Azure Machine Learning-werkruimte.
  • Azure Machine Learning biedt geen garantie voor alle preview-fasefuncties in AKS. Microsoft Entra pod-managed identity (verouderd) wordt bijvoorbeeld niet ondersteund. Gebruik in plaats daarvan Microsoft Entra Workload-id.
  • Als u de stappen in het document Azure Machine Learning AKS v1 hebt gevolgd om uw AKS als een deductiecluster te maken of te koppelen, gebruikt u de volgende koppeling om de verouderde azureml-fe-gerelateerde resources op te schonen voordat u doorgaat met de volgende stap.

Configuratie-instellingen van Azure Machine Learning-extensie controleren

Gebruik de opdracht Azure CLI az k8s-extension create om de Azure Machine Learning-extensie te implementeren. De az k8s-extension create opdracht accepteert configuratie-instellingen als door spaties gescheiden key=value paren via de --config of --config-protected parameter. De volgende tabel bevat de beschikbare configuratie-instellingen die u tijdens de implementatie kunt opgeven.

Sleutelnaam van configuratie-instelling Beschrijving Opleiding Inferentie Training en inferentie
enableTraining True of False, standaard False. Moet zijn ingesteld op True voor de implementatie van de Azure Machine Learning-extensie met ondersteuning voor training van machine learning-modellen en batchscoreondersteuning. N.v.t.
enableInference True of False, standaard False. Moet zijn ingesteld op True implementatie van Azure Machine Learning-extensies met ondersteuning voor Machine Learning-deductie. N.v.t.
allowInsecureConnections True of False, standaard False. Kan worden ingesteld op True om HTTP-eindpunten voor inferentie te gebruiken voor ontwikkelings- of testdoeleinden. N.v.t. Optioneel Optioneel
inferenceRouterServiceType loadBalancer, nodePort, of clusterIP. Vereist indien enableInference=True. N.v.t.
internalLoadBalancerProvider Deze configuratie is nu alleen van toepassing op het AKS-cluster (Azure Kubernetes Service). Stel in op azure om de inferentierouter toe te staan een interne load balancer te gebruiken. N.v.t. Optioneel Optioneel
sslSecret De naam van het Kubernetes-geheim in de azureml naamruimte. Deze configuratie wordt gebruikt voor het opslaan van cert.pem (PEM-gecodeerd TLS/SSL-certificaat) en key.pem (PEM-gecodeerde TLS/SSL-sleutel), die nodig zijn voor ondersteuning van HTTPS-eindpunten voor inferentie wanneer allowInsecureConnections is ingesteld op False. Zie sslSecret configureren voor een voorbeeld van een YAML-definitie van sslSecret. Gebruik deze configuratie of een combinatie van sslCertPemFile en sslKeyPemFile beveiligde configuratie-instellingen. N.v.t. Optioneel Optioneel
sslCname Een TLS/SSL-CNAME wordt gebruikt door het HTTPS-eindpunt voor inferentie. Vereist indien allowInsecureConnections=False N.v.t. Optioneel Optioneel
inferenceRouterHA True of False, standaard True. De Azure Machine Learning-extensie implementeert standaard drie deductierouterreplica's voor hoge beschikbaarheid. Hiervoor zijn ten minste drie werkknooppunten in een cluster vereist. Ingesteld op False als uw cluster minder dan drie werkknooppunten heeft, in dit geval wordt er slechts één deductierouterservice geïmplementeerd. N.v.t. Optioneel Optioneel
nodeSelector Standaard worden de geïmplementeerde Kubernetes-resources en uw machine learning-workloads willekeurig geïmplementeerd op een of meer knooppunten van het cluster en worden DaemonSet-resources geïmplementeerd op ALLE knooppunten. Als u de implementatie van de extensie en uw trainings-/inferentieworkloads wilt beperken tot specifieke knooppunten met label key1=value1 en key2=value2, gebruik dan respectievelijk nodeSelector.key1=value1 en nodeSelector.key2=value2. Optioneel Optioneel Optioneel
installNvidiaDevicePlugin True of False, standaard False. NVIDIA-apparaatinvoegtoepassing is vereist voor ML-workloads op NVIDIA GPU-hardware. De implementatie van de Azure Machine Learning-extensie installeert standaard geen NVIDIA-apparaatinvoegtoepassing, ongeacht of het Kubernetes-cluster GPU-hardware heeft of niet. De gebruiker kan deze instelling opgeven om Truedit te installeren, maar zorg ervoor dat aan de Vereisten wordt voldaan. Optioneel Optioneel Optioneel
installPromOp True of False, standaard True. De Azure Machine Learning-extensie heeft prometheus-operator nodig om prometheus te beheren. Stel in op False om de bestaande Prometheus-operator te hergebruiken. Zie de Prometheus-operator hergebruiken voor meer informatie over het hergebruiken van de bestaande Prometheus-operator. Optioneel Optioneel Optioneel
installVolcano True of False, standaard True. De Azure Machine Learning-extensie heeft vulkanplanner nodig om de taak te plannen. Instellen op False om de bestaande Volcano-scheduler te hergebruiken. Zie het hergebruiken van Volcano Scheduler voor meer informatie over het hergebruiken van de bestaande Volcano Scheduler. Optioneel N.v.t. Optioneel
installDcgmExporter True of False, standaard False. Dcgm-exporteur kan GPU-metrische gegevens beschikbaar maken voor Azure Machine Learning-workloads, die kunnen worden bewaakt in Azure Portal. Stel installDcgmExporter in op True om dcgm-exporter te installeren. Maar als u uw eigen dcgm-exporteur wilt gebruiken, raadpleegt u DCGM-exporteur Optioneel Optioneel Optioneel
Sleutelnaam van door configuratie beveiligde instelling Beschrijving Opleiding Inferentie Training en inferentie
sslCertPemFile, sslKeyPemFile Pad naar TLS/SSL-certificaat en sleutelbestand (PEM-gecodeerd), vereist voor de implementatie van de Azure Machine Learning-extensie met ondersteuning voor HTTPS-eindpunten voor inferentie, wanneer allowInsecureConnections is ingesteld op False. Opmerking: een met een wachtwoordzin beveiligd PEM-bestand wordt niet ondersteund N.v.t. Optioneel Optioneel

Zoals u in de tabel met configuratie-instellingen kunt zien, kunt u met de combinaties van verschillende configuratie-instellingen de Azure Machine Learning-extensie implementeren voor verschillende ML-workloadscenario's:

  • Geef voor de trainingstaak en de batch-inferentieworkload enableTraining=True op
  • Geef enableInference=True alleen op voor inferentieworkloads.
  • Geef voor alle soorten ML-workloads zowel enableTraining=True als enableInference=True op

Als u van plan bent de Azure Machine Learning-extensie te implementeren voor een realtime-inferentieworkload en enableInference=True wilt opgeven, let dan op de volgende configuratie-instellingen met betrekking tot de workload voor realtime-inferentie:

  • azureml-fe routerservice is vereist voor ondersteuning van realtime-inferentie en u moet de configuratie-instelling inferenceRouterServiceType voor azureml-fe opgeven. azureml-fe kan op een van de volgende manieren inferenceRouterServiceTypeworden geïmplementeerd:
    • Typ loadBalancer. Stelt azureml-fe extern beschikbaar via de load balancer van een cloudprovider. Als u deze waarde wilt opgeven, moet u ervoor zorgen dat uw cluster ondersteuning biedt voor het inrichten van load balancers. Let op: de meeste on-premises Kubernetes-clusters bieden mogelijk geen ondersteuning voor externe load balancer.
    • Typ nodePort. Stelt azureml-fe beschikbaar op het IP-adres van elke node via een statische poort. U kunt van buiten het cluster contact opnemen met azureml-fe door <NodeIP>:<NodePort> aan te vragen. Met het gebruik nodePort kunt u ook uw eigen taakverdelingsoplossing en TLS/SSL-beëindiging instellen voor azureml-fe. Raadpleeg Integrate other ingress controller with Azure Machine Learning extension over HTTP or HTTPS voor meer informatie over het configureren van uw eigen ingress.
    • Typ clusterIP. Stelt azureml-fe beschikbaar via een intern IP-adres van het cluster en maakt azureml-fe alleen bereikbaar binnen het cluster. Om azureml-fe inferentieverzoeken van buiten het cluster te laten verwerken, moet u uw eigen load-balanceroplossing en TLS/SSL-terminatie voor azureml-fe instellen. Zie Andere ingress-controller integreren met de Azure Machine Learning-extensie via HTTP of HTTPS voor meer informatie over het configureren van uw eigen ingress.
  • Om een hoge beschikbaarheid van de routeringsservice te garanderen, maakt de implementatie van azureml-fe de Azure Machine Learning-extensie standaard drie replica's van azureml-fe clusters met drie knooppunten of meer. Als uw cluster minder dan 3 knooppunten heeft, stelt u deze ininferenceRouterHA=False.
  • U wilt ook overwegen om HTTPS te gebruiken om de toegang tot modeleindpunten te beperken en de gegevens te beveiligen die clients verzenden. Hiervoor moet u ofwel de configuratie-instelling sslSecret opgeven, of een combinatie van de door de configuratie beveiligde instellingen sslKeyPemFile en sslCertPemFile.
  • De implementatie van de Azure Machine Learning-extensie verwacht standaard configuratie-instellingen voor HTTPS-ondersteuning . Voor ontwikkelings- of testdoeleinden wordt HTTP-ondersteuning handig geboden via de configuratie-instelling allowInsecureConnections=True.

Implementatie van Azure Machine Learning-extensie: CLI-voorbeelden en Azure Portal

Als u de Azure Machine Learning-extensie wilt implementeren met behulp van CLI, gebruikt u de opdracht az k8s-extension create en geeft u waarden op voor de verplichte parameters.

In de volgende lijst worden vier typische implementatiescenario's voor extensies beschreven. Lees de volledige lijst met configuratie-instellingen om de extensie voor uw productiegebruik te implementeren.

  • Gebruik een AKS-cluster in Azure voor een snel proof-of-concept voor het uitvoeren van allerlei SOORTEN ML-werkbelastingen, bijvoorbeeld om trainingstaken uit te voeren of modellen als online/batch-eindpunten te implementeren

    Geef managedClusters waarde op voor --cluster-type parameter voor Azure Machine Learning extensie-implementatie op AKS-cluster. Voer de volgende Azure CLI-opdracht uit om de Azure Machine Learning-extensie te implementeren:

    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
    
  • Gebruik een Kubernetes-cluster met Azure Arc buiten Azure voor een snel proof-of-concept om alleen trainingstaken uit te voeren

    Geef voor Azure Machine Learning-extensie-implementatie op een kubernetes-cluster met Azure Arc de waarde connectedClusters op voor --cluster-type parameter. Voer de volgende Azure CLI-opdracht uit om de Azure Machine Learning-extensie te implementeren:

    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
    
  • Schakel een AKS-cluster in Azure in voor productieworkloads voor training en inferentie Voor implementatie van de Azure Machine Learning-extensie op AKS geeft u de waarde managedClusters op voor de parameter --cluster-type. Ervan uitgaande dat uw cluster meer dan drie knooppunten heeft en u een openbare Load Balancer van Azure en HTTPS gebruikt voor de ondersteuning van deductieworkloads. Voer de volgende Azure CLI-opdracht uit om de Azure Machine Learning-extensie te implementeren:

    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
    
  • Een Kubernetes-cluster met Azure Arc overal inschakelen voor productietraining en deductieworkload met behulp van NVIDIA GPU's

    Geef voor Azure Machine Learning-extensie-implementatie op een kubernetes-cluster met Azure Arc de waarde connectedClusters op voor --cluster-type parameter. Ervan uitgaande dat uw cluster meer dan drie knooppunten heeft, gebruikt u een NodePort-servicetype en HTTPS voor deductieworkloadondersteuning. Voer de volgende Azure CLI-opdracht uit om de Azure Machine Learning-extensie te implementeren:

    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
    

Implementatie van Azure Machine Learning-extensie verifiëren

  1. Voer de toepasselijke CLI-opdracht uit om de details van de Azure Machine Learning-extensie te controleren:

    AKS

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

    Door Azure Arc ingeschakelde Kubernetes

    az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
    
  2. Zoek in het antwoord naar "name" en "provisioningState": "Succeeded". Mogelijk wordt "provisioningState": "Pending" de eerste paar minuten weergegeven.

  3. Als in provisioningState de status Geslaagd wordt weergegeven, voert u de volgende opdracht uit op uw computer met het kubeconfig-bestand dat naar uw cluster verwijst om te controleren of alle pods in de naamruimte azureml de status Running hebben:

     kubectl get pods -n azureml
    

Azure Machine Learning-extensieonderdeel controleren

Wanneer de implementatie van de Azure Machine Learning-extensie is voltooid, gebruikt u kubectl get deployments -n azureml om de lijst met resources weer te geven die in het cluster zijn gemaakt. De lijst bestaat meestal uit een subset van de volgende resources, afhankelijk van de configuratie-instellingen die u opgeeft.

Resourcenaam Brontype Opleiding Inferentie Training en inferentie Beschrijving Communicatie met cloud
relayserver Kubernetes-implementatie De implementatie maakt de relay-server alleen aan voor Azure Arc-ingeschakelde Kubernetes-clusters, en niet in AKS-clusters. Relay-server werkt met Azure Relay om te communiceren met de cloudservices. Ontvang de aanvraag voor het maken van een taak, modelimplementatie van de cloudservice; synchroniseer de taakstatus met de cloudservice.
toegangspoort Kubernetes-implementatie De gateway wordt gebruikt om gegevens heen en weer te communiceren en te verzenden. Knooppunten en clusterresourcegegevens verzenden naar cloudservices.
aml-operator Kubernetes-implementatie N.v.t. De levenscyclus van trainingstaken beheren. Tokenuitwisseling met de cloudtokenservice voor verificatie en autorisatie van Azure Container Registry.
metrics-controller-manager Kubernetes-implementatie De configuratie voor Prometheus beheren N.v.t.
{EXTENSION-NAME}-kube-state-metrics Kubernetes-implementatie Exporteer de clustergerelateerde metrische gegevens naar Prometheus. N.v.t.
{EXTENSION-NAME}-prometheus-beheerder Kubernetes-implementatie Optioneel Optioneel Optioneel Bied systeemeigen Kubernetes-implementatie en -beheer van Prometheus en gerelateerde bewakingsonderdelen. N.v.t.
amlarc-identity-controller Kubernetes-implementatie N.v.t. Azure Blob/Azure Container Registry-token aanvragen en vernieuwen via beheerde identiteit. Tokenuitwisseling met de cloudtokenservice voor authenticatie en autorisatie van Azure Container Registry en Azure Blob die worden gebruikt voor inferentie/modelimplementatie.
amlarc-identity-proxy Kubernetes-implementatie N.v.t. Azure Blob/Azure Container Registry-token aanvragen en vernieuwen via beheerde identiteit. Tokenuitwisseling met de cloudtokenservice voor authenticatie en autorisatie van Azure Container Registry en Azure Blob, gebruikt voor inferentie/modelimplementatie.
azureml-fe-v2 Kubernetes-implementatie N.v.t. De front-endcomponent die binnenkomende inferentieaanvragen naar gedeployede services routeert. Servicelogboeken verzenden naar Azure Blob.
inferentie-operator-controller-manager Kubernetes-implementatie N.v.t. De levenscyclus van deductie-eindpunten beheren. N.v.t.
vulkaan-toegang Kubernetes-implementatie Optioneel N.v.t. Optioneel Vulkanen toegang webhook. N.v.t.
vulkanen-controllers Kubernetes-implementatie Optioneel N.v.t. Optioneel De levenscyclus van Azure Machine Learning-trainingstaakpods beheren. N.v.t.
vulkaan-scheduler Kubernetes-implementatie Optioneel N.v.t. Optioneel Wordt gebruikt voor taakplanning binnen het cluster. N.v.t.
fluent-bit Kubernetes daemonset Verzamel het systeemlogboek van de onderdelen. Upload het systeemlogboek van de onderdelen naar de cloud.
{EXTENSION-NAME}-dcgm-exporter Kubernetes daemonset Optioneel Optioneel Optioneel dcgm-exporteur toont GPU-metrische gegevens voor Prometheus. N.v.t.
nvidia-device-plugin-daemonset Kubernetes daemonset Optioneel Optioneel Optioneel nvidia-device-plugin-daemonset maakt GPU's beschikbaar op elk knooppunt van uw cluster N.v.t.
prometheus-prom-prometheus Kubernetes StatefulSet Verzamel en verstuur taakstatistieken naar de cloud. Verzend metrische gegevens van taken, zoals cpu/gpu/geheugengebruik naar de cloud.

Belangrijk

  • De Azure Relay resource bevindt zich in dezelfde resourcegroep als de Arc-clusterresource. Het wordt gebruikt om te communiceren met het Kubernetes-cluster. Wijzigen ervan maakt gekoppelde compute-doelen ongeldig.
  • Standaard worden de implementatieresources willekeurig geïmplementeerd op een of meer knooppunten van het cluster en worden daemonset-resources geïmplementeerd op alle knooppunten. Als u de implementatie van de extensie wilt beperken tot specifieke knooppunten, gebruikt u de nodeSelector configuratie-instelling die wordt beschreven in de tabel met configuratie-instellingen.

Notitie

  • {EXTENSION-NAME}: is de extensienaam die u opgeeft met behulp van de az k8s-extension create --name CLI-opdracht.

Azure Machine Learning CLI-extensie beheren

Een Azure Machine Learning-extensie bijwerken, weergeven, tonen en verwijderen.

Volgende stappen