Nasazení rozšíření Azure Machine Learning na cluster Kubernetes s podporou Azure Kubernetes Service (AKS) nebo Azure Arc

Pokud chcete cluster Kubernetes s podporou Azure Kubernetes Service (AKS) nebo Azure Arc povolit spouštění trénovacích úloh nebo úloh odvozování, nejprve nasaďte rozšíření Azure Machine Learning. Rozšíření Azure Machine Learning je standardní rozšíření clusteru pro AKS a rozšíření clusteru pro Kubernetes s podporou Azure Arc. Životní cyklus můžete spravovat pomocí Azure CLI k8s-extension.

V tomto článku se dozvíte o:

  • Požadavky
  • Omezení
  • Kontrola nastavení konfigurace rozšíření Azure Machine Learningu
  • Scénáře nasazení rozšíření Azure Machine Learning
  • Ověření nasazení rozšíření Azure Machine Learning
  • Kontrola komponent rozšíření Azure Machine Learning
  • Správa rozšíření Azure Machine Learning

Požadavky

Omezení

Kontrola nastavení konfigurace rozšíření Azure Machine Learningu

K nasazení rozšíření Azure Machine Learning použijte příkaz Azure CLI az k8s-extension create. Příkaz az k8s-extension create přijímá nastavení konfigurace ve formě mezerami oddělených dvojic key=value prostřednictvím parametru --config nebo --config-protected. Následující tabulka uvádí dostupná nastavení konfigurace, která můžete zadat během nasazení.

Název klíče nastavení konfigurace Popis Školení Odvozování Školení a odvozování
enableTraining True nebo False, výchozí False. Musí být nastaveno na True pro nasazení rozšíření Azure Machine Learning s podporou trénování modelů Machine Learning a dávkového skórování. N/A
enableInference True nebo False, výchozí False. Musí být nastaveno na True pro nasazení rozšíření Azure Machine Learning s podporou inferencí Machine Learning. N/A
allowInsecureConnections True nebo False, výchozí False. Pro účely vývoje nebo testování je možné nastavit použití True koncových bodů HTTP pro odvozování. N/A Volitelné Volitelné
inferenceRouterServiceType loadBalancer, nodePortnebo clusterIP. Vyžaduje se , pokud enableInference=True. N/A
internalLoadBalancerProvider Tato konfigurace se dá použít jenom pro cluster Azure Kubernetes Service (AKS). Nastavte na azure, aby směrovač inferencí mohl používat interní nástroj pro vyrovnávání zátěže. N/A Volitelné Volitelné
sslSecret Název tajného kódu Kubernetes v azureml oboru názvů. Tato konfigurace se používá k ukládání cert.pem (certifikát TLS/SSL s kódováním PEM) a key.pem (klíč TLS/SSL s kódováním PEM), které jsou vyžadovány pro podporu odvozování koncového bodu HTTPS, pokud allowInsecureConnections je nastavená hodnota False. Ukázkovou definici sslSecretYAML naleznete v tématu Konfigurace sslSecret. Použijte tuto konfiguraci nebo kombinaci nastavení chráněné konfigurace sslCertPemFile a sslKeyPemFile. N/A Volitelné Volitelné
sslCname Koncový bod HTTPS pro inferenci používá TLS/SSL CNAME. Požadováno v případě, že allowInsecureConnections=False N/A Volitelné Volitelné
inferenceRouterHA True nebo False, výchozí True. Ve výchozím nastavení nasadí rozšíření Azure Machine Learning tři repliky odvozovacího směrovače pro zajištění vysoké dostupnosti, které vyžadují alespoň tři pracovní uzly v clusteru. Nastavte na False, pokud má váš cluster méně než tři pracovní uzly; v takovém případě je nasazena pouze jedna služba směrovače inferencí. N/A Volitelné Volitelné
nodeSelector Ve výchozím nastavení se nasazené prostředky Kubernetes a úlohy strojového učení náhodně nasazují do jednoho nebo více uzlů clusteru a prostředky daemonSet se nasazují do všech uzlů. Pokud chcete omezit nasazení rozšíření a úlohy trénování/odvozování na konkrétní uzly se štítkem key1=value1 a key2=value2, použijte odpovídajícím způsobem nodeSelector.key1=value1 a nodeSelector.key2=value2. Volitelné Volitelné Volitelné
installNvidiaDevicePlugin True nebo False, výchozí False. NVIDIA Device Plugin je vyžadován pro úlohy strojového učení na grafickém hardwaru NVIDIA GPU. Ve výchozím nastavení nasazení rozšíření Azure Machine Learning nenainstaluje modul plug-in NVIDIA Device Plugin bez ohledu na to, zda cluster Kubernetes obsahuje hardware GPU. Uživatel může toto nastavení nastavit na True, aby jej nainstaloval, ale ujistěte se, že jsou splněny Předpoklady. Volitelné Volitelné Volitelné
installPromOp True nebo False, výchozí True. Rozšíření Azure Machine Learning potřebuje operátora prometheus pro správu prometheus. Nastavte na False, aby se znovu použil existující Prometheus Operator. Další informace o opětovném nasazení existujícího operátoru prometheus najdete v tématu opětovného nasazení operátoru prometheus. Volitelné Volitelné Volitelné
installVolcano True nebo False, výchozí True. Rozšíření Azure Machine Learning potřebuje plánovač sopek k naplánování úlohy. Nastavte na False, aby se znovu použil stávající plánovač Volcano Scheduler. Další informace o opětovném nasazení existujícího plánovače sopek naleznete v tématu opětovného nasazení plánovače sopek. Volitelné N/A Volitelné
installDcgmExporter True nebo False, výchozí False. Exportér Dcgm může zveřejnit metriky GPU pro úlohy Azure Machine Learning, které je možné monitorovat na webu Azure Portal. Nastavte installDcgmExporter na True pro instalaci nástroje dcgm-exporter. Pokud ale chcete využít vlastního vývozce dcgm, podívejte se na vývozce DCGM. Volitelné Volitelné Volitelné
Název klíče chráněného nastavením konfigurace Popis Školení Odvozování Školení a odvozování
sslCertPemFile, sslKeyPemFile Cesta k certifikátu TLS/SSL a souboru klíče (zakódovaný pomocí PEM) vyžadovaného pro nasazení rozšíření Azure Machine Learning s podporou odvozování koncového bodu HTTPS, pokud allowInsecureConnections je nastavená na False. Poznámka: Soubor PEM s chráněným heslem není podporovaný. N/A Volitelné Volitelné

Jak vidíte v tabulce nastavení konfigurace, kombinace různých nastavení konfigurace umožňují nasadit rozšíření Azure Machine Learning pro různé scénáře úloh ML:

  • Pro trénovací úlohu a dávkové odvozování úlohy zadejte enableTraining=True
  • Pouze pro odvozování úlohy zadejte enableInference=True
  • Pro všechny druhy úloh ML zadejte obojí enableTraining=True a enableInference=True

Pokud plánujete nasadit rozšíření Azure Machine Learning pro úlohu odvozování v reálném čase a chcete určit enableInference=True, věnujte pozornost následujícím nastavením konfigurace souvisejícím s úlohou odvozování v reálném čase:

  • azureml-fe Služba routeru je vyžadována pro podporu inference v reálném čase a je nutné zadat konfigurační nastavení inferenceRouterServiceType pro azureml-fe. azureml-fe lze nasadit jedním z následujících inferenceRouterServiceTypezpůsobů:
    • Zadejte loadBalancer. azureml-fe Zveřejňuje externě pomocí nástroje pro vyrovnávání zatížení poskytovatele cloudu. Pokud chcete tuto hodnotu zadat, ujistěte se, že váš cluster podporuje zřizování nástroje pro vyrovnávání zatížení. Všimněte si, že většina místních clusterů Kubernetes nemusí podporovat externí nástroj pro vyrovnávání zatížení.
    • Zadejte nodePort. azureml-fe Zveřejňuje IP adresu každého uzlu na statickém portu. azureml-fe můžete kontaktovat zvenčí clusteru vyžádáním <NodeIP>:<NodePort>. Použití nodePort také umožňuje nastavit vlastní řešení vyrovnávání zatížení a ukončení protokolu TLS/SSL pro azureml-fe. Další informace o tom, jak nastavit vlastní příchozí přenos dat, najdete v tématu Integrovat další kontroler příchozího přenosu dat s rozšířením Azure Machine Learning přes protokol HTTP nebo HTTPS.
    • Zadejte clusterIP. azureml-fe Zveřejňuje interní IP adresu clusteru a umožňuje azureml-fe přístup pouze z clusteru. Aby azureml-fe bylo možné poskytovat žádosti o odvozování přicházející mimo cluster, musíte nastavit vlastní řešení vyrovnávání zatížení a ukončení protokolu TLS/SSL pro azureml-fe. Další informace o tom, jak nastavit vlastní příchozí přenos dat, najdete v tématu Integrovat další kontroler příchozího přenosu dat s rozšířením Azure Machine Learning přes protokol HTTP nebo HTTPS.
  • Aby byla zajištěna vysoká dostupnost směrovací služby azureml-fe, nasazení rozšíření Azure Machine Learning ve výchozím nastavení vytvoří tři repliky azureml-fe u clusterů se třemi nebo více uzly. Pokud má váš cluster méně než 3 uzly, nastavte inferenceRouterHA=False.
  • Chcete také zvážit použití protokolu HTTPS k omezení přístupu ke koncovým bodům modelu a zabezpečení dat, která klienti odesílali. Pro tento účel je třeba zadat buď konfigurační nastavení sslSecret, nebo kombinaci nastavení chráněných konfigurací sslKeyPemFile a sslCertPemFile.
  • Ve výchozím nastavení nasazení rozšíření Azure Machine Learning očekává nastavení konfigurace pro podporu protokolu HTTPS . Pro účely vývoje nebo testování je podpora PROTOKOLU HTTP pohodlně poskytována prostřednictvím nastavení allowInsecureConnections=Truekonfigurace .

Nasazení rozšíření Azure Machine Learningu – Příklady rozhraní příkazového řádku a Azure Portal

K nasazení rozšíření Azure Machine Learning pomocí rozhraní příkazového řádku použijte příkaz az k8s-extension create a zadejte hodnoty pro povinné parametry.

Následující seznam popisuje čtyři typické scénáře nasazení rozšíření. Pokud chcete nasadit rozšíření pro produkční využití, pečlivě si přečtěte úplný seznam nastavení konfigurace.

  • Použít cluster AKS ve Azure pro rychlé testování konceptu, aby bylo možné spouštět nejrůznější úlohy ML, například spouštět trénovací úlohy nebo nasazovat modely jako online nebo dávkové koncové body

    Pro nasazení rozšíření Azure Machine Learning v clusteru AKS zadejte hodnotu managedClusters pro parametr --cluster-type. Spuštěním následujícího příkazu Azure CLI nasaďte rozšíření Azure Machine Learning:

    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
    
  • Použití clusteru Kubernetes s podporou Azure Arc mimo Azure k rychlému testování konceptu ke spouštění trénovacích úloh

    Pro nasazení rozšíření Azure Machine Learning v clusteru Kubernetes s podporou Azure Arc zadejte hodnotu connectedClusters parametru --cluster-type. Spuštěním následujícího příkazu Azure CLI nasaďte rozšíření Azure Machine Learning:

    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
    
  • Enable cluster AKS v Azure pro úlohy trénování a odvozování v produkčním prostředí Pro nasazení rozšíření Azure Machine Learning v AKS zadejte hodnotu managedClusters pro parametr --cluster-type. Za předpokladu, že má váš cluster více než tři uzly, a pro podporu úloh odvozování použijete veřejný nástroj pro vyrovnávání zatížení Azure a PROTOKOL HTTPS. Spuštěním následujícího příkazu Azure CLI nasaďte rozšíření Azure Machine Learning:

    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
    
  • Povolení clusteru Kubernetes s podporou Azure Arc kdekoli pro úlohy trénování a odvozování v produkčním prostředí pomocí grafických procesorů NVIDIA

    Pro nasazení rozšíření Azure Machine Learning v clusteru Kubernetes s podporou Azure Arc zadejte hodnotu connectedClusters parametru --cluster-type. Za předpokladu, že váš cluster má více než tři uzly, použijete pro podporu úloh odvození typ služby NodePort a HTTPS, spuštěním následujícího příkazu Azure CLI nasaďte rozšíření Azure Machine Learning:

    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
    

Ověření nasazení rozšíření Azure Machine Learning

  1. Spuštěním příslušného příkazu rozhraní příkazového řádku zkontrolujte podrobnosti o rozšíření služby Azure Machine Learning:

    AKS

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

    Kubernetes s podporou Azure Arc

    az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
    
  2. V odpovědi vyhledejte "name" a "provisioningState": "Succeeded". Může se během prvních několika minut zobrazovat "provisioningState": "Pending".

  3. Pokud `provisioningState` zobrazuje hodnotu Succeeded, spusťte na svém počítači následující příkaz se souborem kubeconfig ukazujícím na váš cluster a zkontrolujte, že všechny pody v oboru názvů azureml jsou ve stavu Running:

     kubectl get pods -n azureml
    

Kontrola komponent rozšíření Azure Machine Learning.

Po dokončení nasazení rozšíření Azure Machine Learning pomocí příkazu kubectl get deployments -n azureml zobrazte seznam prostředků vytvořených v clusteru. Seznam se obvykle skládá z podmnožina následujících prostředků v závislosti na zadaných nastaveních konfigurace.

Název prostředku Typ prostředku Školení Odvozování Školení a odvozování Popis Komunikace s cloudem
relayserver Nasazení Kubernetes Nasazení vytvoří server relay pouze pro clustery Kubernetes s podporou Azure Arc, a ne pro clustery AKS. Relay server spolupracuje se službou Azure Relay ke komunikaci s cloudovými službami. Přijmout žádost o vytvoření úlohy, nasazení modelu z cloudové služby; synchronizujte stav úlohy s cloudovou službou.
brána Nasazení Kubernetes Brána se používá ke komunikaci a k obousměrnému přenosu dat. Odesílání informací o uzlech a prostředcích clusteru do cloudových služeb
aml-operator Nasazení Kubernetes N/A Správa životního cyklu trénovacích úloh Výměna tokenů se službou cloudových tokenů pro ověřování a autorizaci služby Azure Container Registry
metrics-controller-manager Nasazení Kubernetes Správa konfigurace pro Prometheus N/A
{EXTENSION-NAME}-kube-state-metrics Nasazení Kubernetes Exportujte metriky související s clusterem do prometheus. N/A
{EXTENSION-NAME}-prometheus-operator Nasazení Kubernetes Volitelné Volitelné Volitelné Poskytuje nativní nasazení a správu Promethea a souvisejících monitorovacích komponent v Kubernetes. N/A
amlarc-identity-controller Nasazení Kubernetes N/A Vyžádání a obnovení tokenu Azure Blob nebo Azure Container Registry prostřednictvím spravované identity Výměna tokenů se službou cloudových tokenů pro ověřování a autorizaci služby Azure Container Registry a objektu blob Azure používaného při odvozování nebo nasazení modelu
amlarc-identity-proxy Nasazení Kubernetes N/A Vyžádání a obnovení tokenu Azure Blob nebo Azure Container Registry prostřednictvím spravované identity Výměna tokenů se službou cloudových tokenů pro ověřování a autorizaci služby Azure Container Registry a objektu blob Azure používaného při odvozování nebo nasazení modelu
azureml-fe-v2 Nasazení Kubernetes N/A Front-endová komponenta, která směruje příchozí požadavky na inferenci k nasazeným službám. Odešle protokoly služby do azure Blob.
inference-operator-controller-manager Nasazení Kubernetes N/A Správa životního cyklu koncových bodů odvozování N/A
vstup na sopku Nasazení Kubernetes Volitelné N/A Volitelné Webhook pro vstup do sopek. N/A
řadiče Volcano Nasazení Kubernetes Volitelné N/A Volitelné Spravujte životní cyklus podů trénovacích úloh služby Azure Machine Learning. N/A
Plánovač Volcano Nasazení Kubernetes Volitelné N/A Volitelné Slouží k plánování úloh v clusteru. N/A
fluent-bit Kubernetes DaemonSet Shromážděte systémový protokol komponent. Nahrajte systémový protokol komponent do cloudu.
{EXTENSION-NAME}-dcgm-exporter Kubernetes DaemonSet Volitelné Volitelné Volitelné Dcgm-exportér zveřejňuje metriky GPU pro Prometheus. N/A
nvidia-device-plugin-daemonset Kubernetes DaemonSet Volitelné Volitelné Volitelné nvidia-device-plugin-daemonset zveřejňuje gpu na každém uzlu clusteru. N/A
prometheus-prom-prometheus Stavová sada Kubernetes Shromážděte a odesílejte metriky úloh do cloudu. Odesílání metrik úloh, jako je využití procesoru, gpu nebo paměti do cloudu

Důležité

  • Prostředek Azure Relay je ve stejné skupině prostředků jako prostředek clusteru Arc. Používá se ke komunikaci s clusterem Kubernetes. Jeho změna naruší připojené výpočetní cíle.
  • Ve výchozím nastavení jsou prostředky typu Deployment náhodně rozmístěny na jeden nebo více uzlů clusteru a prostředky typu DaemonSet jsou nasazeny na všechny uzly. Pokud chcete omezit nasazení rozšíření na konkrétní uzly, použijte nodeSelector nastavení konfigurace popsané v tabulce nastavení konfigurace.

Poznámka:

  • {EXTENSION-NAME}: je název rozšíření, který zadáte pomocí příkazu rozhraní příkazového řádku az k8s-extension create --name.

Správa rozšíření Azure Machine Learning

Aktualizace, výpis, zobrazení a odstranění rozšíření Azure Machine Learning

Další kroky