Azure Machine Learning-extensie implementeren in AKS (Arc Kubernetes-cluster)

Als u uw AKS- of Arc Kubernetes-cluster wilt inschakelen om trainingstaken of deductieworkloads uit te voeren, moet u eerst de Azure Machine Learning-extensie implementeren op een AKS- of Arc Kubernetes-cluster. De Azure Machine Learning-extensie is gebouwd op de clusterextensie voor AKS en clusterextensie of Arc Kubernetes, en de levenscyclus ervan kan eenvoudig worden beheerd met de Azure CLI k8s-extensie.

In dit artikel leert u het volgende:

  • 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
  • Azure Machine Learning-extensieonderdelen controleren
  • 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 Arc Kubernetes-cluster is actief. Volg de instructies in het verbinden van een bestaand Kubernetes-cluster met Azure Arc.
    • Als het cluster een ARO-cluster (Azure RedHat OpenShift Service) 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.
  • Het cluster dat achter een uitgaande proxyserver of firewall wordt uitgevoerd, heeft extra netwerkconfiguraties nodig.
  • Azure CLI installeren of upgraden naar versie 2.24.0 of hoger.
  • Installeer of upgrade de Azure CLI-extensie k8s-extension naar versie 1.2.3 of hoger.

Beperkingen

  • Het gebruik van een service-principal met AKS wordt niet ondersteund door Azure Machine Learning. 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 de gebruikte service-principal van uw AKS-cluster wordt geconverteerd naar beheerde identiteit, moeten voordat u de extensie installeert, alle knooppuntgroepen worden verwijderd en opnieuw gemaakt, in plaats van rechtstreeks te worden bijgewerkt.
  • Het uitschakelen van lokale accounts voor AKS wordt niet ondersteund door Azure Machine Learning. Wanneer het AKS-cluster wordt geïmplementeerd, zijn lokale accounts standaard ingeschakeld.
  • Als voor uw AKS-cluster een geautoriseerd IP-bereik is ingeschakeld voor toegang tot de API-server, schakelt u de IP-bereiken van het Azure Machine Learning-besturingsvlak in voor het AKS-cluster. 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-podidentiteit wordt bijvoorbeeld niet ondersteund.
  • Als u de stappen van het Azure Machine Learning AKS v1-document hebt gevolgd om uw AKS als deductiecluster te maken of bij te voegen, gebruikt u de volgende koppeling om de verouderde azureml-fe-gerelateerde resources op te schonen voordat u verdergaat met de volgende stap.

Configuratie-instellingen van Azure Machine Learning-extensie controleren

U kunt de Azure Machine Learning CLI-opdracht k8s-extension create gebruiken om de Azure Machine Learning-extensie te implementeren. Met CLI k8s-extension create kunt u een set configuratie-instellingen opgeven in key=value indeling met behulp van --config of --config-protected parameter. Hieronder volgt de lijst met beschikbare configuratie-instellingen die moeten worden opgegeven tijdens de implementatie van de Azure Machine Learning-extensie.

Sleutelnaam van configuratie-instelling Beschrijving Training Deductie Training en deductie
enableTraining True of False, standaard False. Moet zijn ingesteld op True implementatie van Azure Machine Learning-extensies met machine learning-modeltraining en ondersteuning voor batchscores. 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 om HTTP-eindpunten voor deductie te True 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). Ingesteld om de deductierouter toe te azure staan met behulp van een interne load balancer. N.v.t. Optioneel Optioneel
sslSecret De naam van het Kubernetes-geheim in de azureml naamruimte. Deze configuratie wordt gebruikt voor het opslaan cert.pem (PEM-gecodeerde TLS/SSL-certificaat) en key.pem (PEM-gecodeerde TLS/SSL-sleutel), die vereist zijn voor deductie https-eindpuntondersteuning wanneer allowInsecureConnections deze is ingesteld op False. Zie SslSecret configureren voor een voorbeeld van een YAML-definitie vansslSecret. 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 van deductie. Vereist als 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-/deductieworkloads wilt beperken tot specifieke knooppunten met label key1=value1 en , gebruikt nodeSelector.key1=value1u dienovereenkomstig nodeSelector.key2=value2key2=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 Truedeze te installeren, maar zorg ervoor dat deze voldoet aan de vereisten. Optioneel Optioneel Optioneel
installPromOp True of False, standaard True. De Azure Machine Learning-extensie heeft prometheus-operator nodig om prometheus te beheren. Ingesteld om False de bestaande prometheus-operator opnieuw te gebruiken. 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. Ingesteld om bestaande vulkanenplanner opnieuw te False gebruiken. Zie vulkanplanner hergebruiken voor meer informatie over het hergebruiken van de bestaande vulkaanplanner 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. Ingesteld installDcgmExporter op True installatie van dcgm-exporteur. Maar als u uw eigen dcgm-exporteur wilt gebruiken, raadpleegt u DCGM-exporteur Optioneel Optioneel Optioneel
Sleutelnaam van met configuratie beveiligde instelling Beschrijving Training Deductie Training en deductie
sslCertPemFile, sslKeyPemFile Pad naar TLS/SSL-certificaat en sleutelbestand (PEM-gecodeerd), vereist voor de implementatie van de Azure Machine Learning-extensie met ondersteuning voor deductie HTTPS-eindpunten, wanneer allowInsecureConnections deze is ingesteld op False. Pem-bestand met wachtwoordzin beveiligd 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 trainingstaak en batchdeductieworkload op enableTraining=True
  • Geef alleen voor deductieworkload op enableInference=True
  • Geef voor alle soorten ML-werkbelasting zowel als enableTraining=TrueenableInference=True

Als u van plan bent om de Azure Machine Learning-extensie te implementeren voor realtime deductieworkload en deze wilt opgeven, moet u rekening houden enableInference=Truemet de volgende configuratie-instellingen met betrekking tot de workload voor realtime deductie:

  • azureml-fe routerservice is vereist voor realtime deductieondersteuning en u moet de configuratie-instelling opgeven inferenceRouterServiceType voor azureml-fe. azureml-fe kan op een van de volgende manieren inferenceRouterServiceTypeworden geïmplementeerd:
    • Typ LoadBalancer. azureml-fe Maakt extern beschikbaar met behulp van 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. azureml-fe Wordt weergegeven op het IP-adres van elk knooppunt op een statische poort. U kunt contact opnemen azureml-femet , van buiten het cluster, door dit aan te <NodeIP>:<NodePort>vragen. Met het gebruik NodePort kunt u ook uw eigen taakverdelingsoplossing en TLS/SSL-beëindiging instellen voor azureml-fe.
    • Typ ClusterIP. azureml-fe Wordt weergegeven op een intern IP-adres van een cluster en is azureml-fe alleen bereikbaar vanuit het cluster. Voor azureml-fe het verwerken van deductieaanvragen die buiten het cluster komen, moet u uw eigen taakverdelingsoplossing en TLS/SSL-beëindiging instellen voor azureml-fe.
  • 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 configuratie-instelling of combinatie van sslKeyPemFile en sslCertPemFile met configuratie beveiligde instellingen opgevensslSecret.
  • 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 CLI, gebruikt az k8s-extension create u de opdracht die waarden doorgeeft voor de verplichte parameters.

We vermelden vier typische implementatiescenario's voor extensies ter referentie. Lees de volledige lijst met configuratie-instellingen om de extensie voor uw productiegebruik te implementeren.

  • AKS-cluster in Azure gebruiken voor een snel proof-of-concept om allerlei soorten ML-workload uit te voeren, d.w.w.v. om trainingstaken uit te voeren of modellen te implementeren als online-/batch-eindpunten

    Zorg ervoor dat u voor de implementatie van Azure Machine Learning-extensies in een AKS-cluster de waarde voor --cluster-type de parameter opgeeftmanagedClusters. 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
    
  • Arc Kubernetes-cluster buiten Azure gebruiken voor een snel proof-of-concept om alleen trainingstaken uit te voeren

    Voor de implementatie van Azure Machine Learning-extensies in een Arc Kubernetes-cluster moet u de waarde voor --cluster-type de parameter opgevenconnectedClusters. 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 productietrainings- en deductieworkload Voor implementatie van Azure Machine Learning-extensies in AKS moet u de waarde voor --cluster-type de parameter opgevenmanagedClusters. 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 Arc Kubernetes-cluster overal inschakelen voor productietraining en deductieworkload met behulp van NVIDIA GPU's

    Zorg ervoor dat u voor de implementatie van Azure Machine Learning-extensies in een Arc Kubernetes-cluster de waarde voor --cluster-type de parameter opgeeftconnectedClusters. 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 volgende CLI-opdracht uit om de details van de Azure Machine Learning-extensie te controleren:

    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'. Let op: 'provisioningState': 'In behandeling' voor de eerste paar minuten.

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

     kubectl get pods -n azureml
    

Azure Machine Learning-extensieonderdeel controleren

Wanneer de implementatie van de Azure Machine Learning-extensie is voltooid, kunt u een kubectl get deployments -n azureml lijst weergeven met resources die in het cluster zijn gemaakt. Het bestaat meestal uit een subset van de volgende resources per opgegeven configuratie-instellingen.

Resourcenaam Brontype Training Deductie Training en deductie Beschrijving Communicatie met cloud
relayserver Kubernetes-implementatie Relay-server wordt alleen gemaakt voor een Arc Kubernetes-cluster en niet in een AKS-cluster. 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.
gateway 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-operator 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 verificatie en autorisatie van Azure Container Registry en Azure Blob die wordt gebruikt door deductie/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 verificatie en autorisatie van Azure Container Registry en Azure Blob die wordt gebruikt door deductie/modelimplementatie.
azureml-fe-v2 Kubernetes-implementatie N.v.t. Het front-endonderdeel waarmee binnenkomende deductieaanvragen worden gerouteerd naar geïmplementeerde services. Servicelogboeken verzenden naar Azure Blob.
deductie-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.
volcano-scheduler Kubernetes-implementatie Optioneel N.v.t. Optioneel Wordt gebruikt voor het plannen van in-clustertaken. 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 verzend metrische gegevens van taken naar de cloud. Verzend metrische gegevens van taken, zoals cpu/gpu/geheugengebruik naar de cloud.

Belangrijk

  • De Azure Relay-resource bevindt zich onder dezelfde resourcegroep als de Arc-clusterresource. Het wordt gebruikt om te communiceren met het Kubernetes-cluster en deze te wijzigen, worden gekoppelde rekendoelen verbroken.
  • De kubernetes-implementatieresources worden standaard willekeurig geïmplementeerd op 1 of meer knooppunten van het cluster en daemonset-resources worden geïmplementeerd op ALLE knooppunten. Als u de implementatie van de extensie wilt beperken tot specifieke knooppunten, gebruikt nodeSelector u de configuratie-instelling die wordt beschreven in de tabel met configuratie-instellingen.

Notitie

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

Azure Machine Learning CLI-extensie beheren

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

  • Voor een AKS-cluster zonder verbinding met Azure Arc raadpleegt u Clusterextensies implementeren en beheren.
  • Voor Kubernetes met Azure Arc raadpleegt u Kubernetes-clusterextensies met Azure Arc implementeren en beheren.

Volgende stappen