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 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.
- 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=value1 u dienovereenkomstig nodeSelector.key2=value2 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 True deze 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=True
enableInference=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=True
met 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 opgeveninferenceRouterServiceType
voorazureml-fe
.azureml-fe
kan op een van de volgende maniereninferenceRouterServiceType
worden 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 opnemenazureml-fe
met , van buiten het cluster, door dit aan te<NodeIP>:<NodePort>
vragen. Met het gebruikNodePort
kunt u ook uw eigen taakverdelingsoplossing en TLS/SSL-beëindiging instellen voorazureml-fe
. - Typ
ClusterIP
.azureml-fe
Wordt weergegeven op een intern IP-adres van een cluster en isazureml-fe
alleen bereikbaar vanuit het cluster. Voorazureml-fe
het verwerken van deductieaanvragen die buiten het cluster komen, moet u uw eigen taakverdelingsoplossing en TLS/SSL-beëindiging instellen voorazureml-fe
.
- Typ
- Om een hoge beschikbaarheid van de routeringsservice te garanderen, maakt de implementatie van
azureml-fe
de Azure Machine Learning-extensie standaard drie replica's vanazureml-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
ensslCertPemFile
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
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>
Zoek in het antwoord naar 'name' en 'provisioningState': 'Succeeded'. Let op: 'provisioningState': 'In behandeling' voor de eerste paar minuten.
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.