Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS

Danes številne stranke AWS gradijo platforme strojnega učenja (ML), pripravljene za podjetja Amazonski elastični kubernetes storitev (Amazon EKS) z uporabo Kubeflow na AWS (distribucija Kubeflow, specifična za AWS) v številnih primerih uporabe, vključno z računalniškim vidom, razumevanjem naravnega jezika, prevajanjem govora in finančnim modeliranjem.

Z najnovejša izdaja odprtokodnega Kubeflow v1.6.1, skupnost Kubeflow še naprej podpira to obsežno sprejetje Kubeflowa za primere uporabe v podjetjih. Najnovejša izdaja vključuje številne nove vznemirljive funkcije, kot je podpora za Kubernetes v1.22, kombinirani Python SDK za PyTorch, MXNet, MPI, XGBoost v porazdeljenem operaterju usposabljanja Kubeflow, novi CRD-ji ClusterServingRuntime in ServingRuntime za storitev modela in še veliko več.

Prispevki AWS za Kubeflow z nedavno uvedbo Kubeflow na AWS 1.6.1 podpirajo vse odprtokodne funkcije Kubeflow navzgor in vključujejo številne nove integracije z visoko optimiziranimi storitvami AWS, ki izvirajo iz oblaka in so pripravljene za podjetja, kar vam bo pomagalo zgraditi zelo zanesljive, varni, prenosljivi in ​​razširljivi sistemi ML.

V tej objavi razpravljamo o novih funkcijah Kubeflow on AWS v1.6.1 in poudarjamo tri pomembne integracije, ki so bile združene na eni platformi, da vam ponudimo:

  • Infrastruktura kot koda (IaaC) rešitev z enim klikom, ki avtomatizira namestitev Kubeflowa od konca do konca, vključno z ustvarjanjem gruče EKS
  • Podpora za porazdeljeno usposabljanje na Amazon SageMaker uporabo Operatorji Amazon SageMaker za Kubernetes (ACK) in Komponente SageMaker za cevovode Kubeflow in lokalno na Kubernetesu z uporabo Usposabljanje operaterjev Kubeflow. Številne stranke uporabljajo to zmožnost za gradnjo hibridnih arhitektur strojnega učenja, kjer izkoriščajo Kubernetes compute za eksperimentalno fazo in SageMaker za izvajanje delovnih obremenitev proizvodnega obsega.
  • Izboljšano spremljanje in opazovanje delovnih obremenitev ML, vključno z meritvami Amazon EKS, Kubeflow in dnevniki aplikacij z uporabo Prometheus, Grafana in amazoncloudwatch integracije

Primer uporabe v tem spletnem dnevniku se bo posebej osredotočil na integracijo SageMaker s Kubeflow na AWS, ki bi jo lahko dodali vašim obstoječim potekom dela Kubernetes in vam omogočili gradnjo hibridnih arhitektur strojnega učenja.

Kubeflow na AWS

Kubeflow na AWS 1.6.1 zagotavlja jasno pot za uporabo Kubeflow z dodatkom naslednjih storitev AWS poleg obstoječih zmogljivosti:

  • Integracija SageMaker s Kubeflow za izvajanje hibridnih delovnih tokov ML z uporabo SageMaker Operators for Kubernetes (ACK) in SageMaker Components for Kubeflow Pipelines.
  • Možnosti samodejnega uvajanja so bile izboljšane in poenostavljene z uporabo skriptov Kustomize in grafikonov Helm.
  • Dodana podpora za uvedbo Infrastructure as Code (IaC) z enim klikom za Kubeflow na AWS z uporabo Terraform za vse razpoložljive možnosti uvajanja. Ta skript avtomatizira ustvarjanje naslednjih virov AWS:
  • Podpora za AWS PrivateLink za Amazon S3, ki uporabnikom nekomercialne regije omogoča povezavo z njihovimi končnimi točkami S3.
  • Dodana integracija z Amazonova upravljana storitev za Prometheus (AMP) in Grafana, ki jo upravlja Amazon za spremljanje meritev s Kubeflow na AWS.
  • Posodobljeni vsebniki strežnika za prenosne računalnike Kubeflow z najnovejšimi slikami vsebnikov globokega učenja, ki temeljijo na TensorFlow 2.10.0 in PyTorch 1.12.1.
  • Integracija z DLC-ji AWS za distribuirano izvajanje trening in sklepanje delovne obremenitve.

Naslednji diagram arhitekture je hiter posnetek vseh integracij storitev (vključno s tistimi, ki so že omenjene), ki so na voljo za komponente nadzora in podatkovne ravnine Kubeflow v Kubeflow na AWS. Nadzorna ravnina Kubeflow je nameščena na vrhu storitve Amazon EKS, ki je upravljana vsebniška storitev, ki se uporablja za izvajanje in prilagajanje aplikacij Kubernetes v oblaku. Te integracije storitev AWS vam omogočajo, da ločite kritične dele nadzorne ravnine Kubeflow od Kubernetesa, kar zagotavlja varno, razširljivo, prožno in stroškovno optimizirano zasnovo. Za več podrobnosti o vrednosti, ki jo te integracije storitev dodajo odprtokodnemu Kubeflowu, glejte Zgradite in razmestite razširljiv sistem strojnega učenja na Kubernetes s Kubeflowom na AWS.

Pogovorimo se podrobneje o tem, kako bi lahko ključne funkcije Kubeflow na AWS 1.6.1 bile v pomoč vaši organizaciji.

Podrobnosti o funkciji Kubeflow na AWS

Z izdajo Kubeflow 1.6.1 smo poskušali zagotoviti boljša orodja za različne vrste strank, ki olajšajo začetek uporabe Kubeflowa, ne glede na to, katere možnosti izberete. Ta orodja so dobro izhodišče in jih je mogoče spremeniti, da ustrezajo vašim potrebam.

Možnosti uvajanja

Ponujamo različne možnosti uvajanja za različne primere uporabe strank. Tukaj lahko izberete, s katerimi storitvami AWS želite integrirati svojo uvedbo Kubeflow. Če se odločite pozneje spremeniti možnosti uvajanja, priporočamo, da izvedete novo namestitev za novo uvajanje. Na voljo so naslednje možnosti uvajanja:

Če želite uvesti Kubeflow z minimalnimi spremembami, razmislite o vanilija možnost namestitve. Vse razpoložljive možnosti uvajanja je mogoče namestiti z uporabo Kustomize, Helm ali Terraform.

Imamo tudi različne uvedbe dodatkov, ki jih je mogoče namestiti poleg katere koli od teh možnosti uvedbe:

Možnosti namestitve

Ko se odločite, katera možnost uvajanja najbolj ustreza vašim potrebam, lahko izberete, kako želite namestiti te uvedbe. V prizadevanju, da bi služili strokovnjakom in novincem, imamo različne ravni avtomatizacije in konfiguracije.

Možnost 1: Terraform (IaC)

To ustvari gručo EKS in vse povezane vire infrastrukture AWS, nato pa razmesti Kubeflow v enem ukazu z uporabo Terraform. Interno uporablja načrte EKS in karte Helm.

Ta možnost ima naslednje prednosti:

  • Podjetjem zagotavlja prilagodljivost za uvedbo Amazon EKS in Kubeflow z enim ukazom, ne da bi jim bilo treba skrbeti za posebne konfiguracije komponent Kubeflow. To bo izjemno pripomoglo k pospešitvi ocenjevanja tehnologije, izdelave prototipov in življenjskega cikla razvoja izdelka, kar bo zagotovilo prilagodljivost za uporabo terraform modulov in njihovo spreminjanje, da bo ustrezalo potrebam, specifičnim za projekt.
  • Mnoge današnje organizacije, ki imajo Terraform središče svoje strategije v oblaku, lahko zdaj uporabljajo Kubeflow na rešitvi AWS Terraform za doseganje svojih ciljev v oblaku.

Možnost 2: Prilagodite ali Helm Charts:

Ta možnost vam omogoča namestitev Kubeflow v dvostopenjskem postopku:

  1. Ustvarite vire AWS, kot so Amazon EKS, Amazon RDS, Amazon S3 in Amazon Cognito, bodisi prek avtomatiziranih skript, ki so vključeni v distribucijo AWS, bodisi ročno po korak po korak.
  2. Namestite uvedbe Kubeflow z uporabo grafikonov Helm ali Kustomize.

Ta možnost ima naslednje prednosti:

  • Glavni cilj te možnosti namestitve je zagotoviti konfiguracije Kubernetes, povezane s Kubeflowom. Zato se lahko odločite, da ustvarite ali vključite obstoječe gruče EKS ali katerega koli od povezanih virov AWS, kot so Amazon RDS, Amazon S3 in Amazon Cognito, ter jih konfigurirate in upravljate za delo s Kubeflow na AWS.
  • Lažje je preiti z odprtokodnega manifesta Kustomize Kubeflow na distribucijo AWS Kubeflow.

Naslednji diagram ponazarja arhitekturi obeh možnosti.

Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Integracija s SageMaker

SageMaker je popolnoma upravljana storitev, zasnovana in optimizirana posebej za upravljanje delovnih tokov ML. Odpravlja nediferencirano težko delo pri upravljanju infrastrukture in odpravlja potrebo po vlaganju v IT in DevOps za upravljanje grozdov za gradnjo modelov ML, usposabljanje in sklepanje.

Številne stranke AWS, ki imajo zahteve glede prenosljivosti ali standardne omejitve na mestu uporabe, uporabljajo Amazon EKS za nastavitev ponovljivih cevovodov ML, ki izvajajo usposabljanje in delovne obremenitve sklepanja. Vendar to od razvijalcev zahteva pisanje kode po meri za optimizacijo osnovne infrastrukture ML, zagotavljanje visoke razpoložljivosti in zanesljivosti ter skladnost z ustreznimi varnostnimi in regulativnimi zahtevami. Te stranke zato želijo uporabljati SageMaker za stroškovno optimizirano in upravljano infrastrukturo za usposabljanje modelov in uvajanja ter še naprej uporabljati Kubernetes za orkestracijo in cevovode ML, da ohranijo standardizacijo in prenosljivost.

Za rešitev te potrebe vam AWS omogoča usposabljanje, prilagajanje in uvajanje modelov v SageMaker iz Amazon EKS z uporabo naslednjih dveh možnosti:

  • Operatorji Amazon SageMaker ACK za Kubernetes, ki temeljijo na Krmilniki AWS za Kubernetes (ACK). ACK je strategija AWS, ki prinaša standardizacijo za gradnjo krmilnikov po meri Kubernetes, ki uporabnikom Kubernetes omogočajo zagotavljanje virov AWS, kot so baze podatkov ali čakalne vrste sporočil, preprosto z uporabo API-ja Kubernetes. Operaterji ACK SageMaker razvijalcem ML in podatkovnim znanstvenikom, ki uporabljajo Kubernetes kot svojo nadzorno ravnino, olajšajo usposabljanje, prilagajanje in uvajanje modelov ML v SageMaker brez vpisa v konzolo SageMaker.
  • O Komponente SageMaker za cevovode Kubeflow, ki vam omogočajo integracijo SageMakerja s prenosljivostjo in orkestracijo Kubeflow Pipelines. S komponentami SageMaker se vsako opravilo v delovnem toku cevovoda izvaja v SageMakerju namesto v lokalni gruči Kubernetes. To vam omogoča ustvarjanje in spremljanje domačih nalog usposabljanja, prilagajanja, uvajanja končne točke in paketnega preoblikovanja iz vaših cevovodov Kubeflow, kar vam omogoča, da premaknete celotno računanje, vključno z obdelavo podatkov in opravili usposabljanja, iz gruče Kubernetes v upravljano storitev SageMaker, optimizirano za strojno učenje.

Začenši s Kubeflowom na AWS v1.6.1, vse razpoložljive možnosti uvedbe Kubeflow privzeto združujejo obe možnosti integracije Amazon SageMaker na eni platformi. To pomeni, da lahko zdaj predložite opravila SageMaker z uporabo operaterjev ACK SageMaker iz samega strežnika Kubeflow Notebook, tako da predložite vir SageMaker po meri ali iz koraka cevovoda Kubeflow z uporabo komponent SageMaker.

Obstajata dve različici komponent SageMaker – Boto3 Komponente različice 1, ki temeljijo (AWS SDK za AWS SDK za Python), in komponente različice 8, ki temeljijo na SageMaker Operator za K2s (ACK). Nove komponente SageMaker različica 2 podpirajo najnovejše apise za usposabljanje SageMaker in tej različici komponente bomo še naprej dodajali več funkcij SageMaker. Vendar pa imate možnost kombiniranja komponent Sagemaker različice 2 za usposabljanje in različice 1 za druge funkcije SageMaker, kot so nastavitev hiperparametrov, opravila obdelave, gostovanje in še veliko več.

Integracija s Prometheusom in Grafano

Prometheus je odprtokodno orodje za združevanje meritev, ki ga lahko konfigurirate za izvajanje v gručah Kubernetes. Ko se izvaja v gručah Kubernetes, glavni strežnik Prometheus občasno postrga končne točke podov.

Komponente Kubeflow, kot sta Kubeflow Pipelines (KFP) in Notebook, oddajajo meritve Prometheus, ki omogočajo spremljanje virov komponent, kot je število izvajanih poskusov ali število beležnic.

Te metrike lahko združi strežnik Prometheus, ki deluje v gruči Kubernetes, in poizveduje z uporabo Prometheus Query Language (PromQL). Za več podrobnosti o funkcijah, ki jih podpira Prometheus, si oglejte Dokumentacija Prometheus.

Distribucija Kubeflow on AWS zagotavlja podporo za integracijo z naslednjimi storitvami, ki jih upravlja AWS:

  1. Amazon Managed Prometheus (AMP), ki je a Prometej-združljiva storitev spremljanja za vsebniško infrastrukturo in metriko aplikacij za vsebnike, ki strankam olajša varno spremljanje vsebniških okolij v velikem obsegu. Z uporabo AMP lahko vizualizirate, analizirate in alarmirate svoje meritve, dnevnike in sledi, zbrane iz več virov podatkov v vašem sistemu opazovanja, vključno z AWS, ISV-ji tretjih oseb in drugimi viri v vašem portfelju IT.
  2. Grafana, ki jo upravlja Amazon, popolnoma upravljana in varna storitev vizualizacije podatkov, ki temelji na odprti kodi grafana projekt, ki strankam omogoča takojšnje poizvedovanje, korelacijo in vizualizacijo operativnih meritev, dnevnikov in sledi za njihove aplikacije iz več virov podatkov. Grafana, ki jo upravlja Amazon, razbremeni operativno upravljanje Grafane s samodejnim prilagajanjem računske infrastrukture in infrastrukture baze podatkov, ko se zahteve po uporabi povečujejo, s samodejnimi posodobitvami različic in varnostnimi popravki.

Distribucija Kubeflow on AWS zagotavlja podporo za integracijo storitve Amazon Managed Service for Prometheus in Amazon Managed Grafana za olajšanje varnega vnosa in vizualizacije meritev Prometheus v velikem obsegu.

Naslednje meritve so zaužite in jih je mogoče vizualizirati:

  • Meritve, oddane iz komponent Kubeflow, kot sta Kubeflow Pipelines in strežnik Notebook
  • KubeFlow metrike nadzorne ravnine

Če želite konfigurirati storitev Amazon Managed Service za Prometheus in Amazon Managed Grafana za vašo gručo Kubeflow, glejte Uporabite Prometheus, Amazon Managed Service for Prometheus in Amazon Managed Grafana za spremljanje meritev s Kubeflowom na AWS.

Pregled rešitev

V tem primeru uporabe uporabljamo uvajanje Kubeflow vanilla z možnostjo namestitve Terraform. Ko je namestitev končana, se prijavimo na nadzorno ploščo Kubeflow. Na nadzorni plošči zavrtimo prenosni strežnik Kubeflow Jupyter, da zgradimo cevovod Kubeflow, ki uporablja SageMaker za izvajanje porazdeljenega usposabljanja za model klasifikacije slik in končno točko SageMaker za uvajanje modela.

Predpogoji

Prepričajte se, da izpolnjujete naslednje predpogoje:

  • Imate AWS račun.
  • Prepričajte se, da ste v us-west-2 Regija za izvajanje tega primera.
  • Uporabite Google Chrome za interakcijo z Konzola za upravljanje AWS in Kubeflow.
  • Prepričajte se, da ima vaš račun omejitev vrste virov SageMaker Training za ml.p3.2xlarge povečano na 2 z uporabo konzole Service Quotas.
  • Po želji lahko uporabite AWS Cloud9, integrirano razvojno okolje (IDE) v oblaku, ki omogoča dokončanje celotnega dela iz vašega spletnega brskalnika. Za navodila za nastavitev glejte Nastavite Cloud9 IDE. Izberite Ubuntu Server 18.04 kot platformo v nastavitvah AWS Cloud9.Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Nato v okolju AWS Cloud9 izberite znak plus in odprite nov terminal.

Prav tako konfigurirate Vmesnik ukazne vrstice AWS (AWS CLI) profil. Če želite to narediti, potrebujete ID ključa za dostop in skrivni ključ za dostop AWS upravljanje identitete in dostopa (JAZ SEM) uporabnik račun s skrbniškimi pravicami (priložite obstoječi upravljani pravilnik) in programskim dostopom. Oglejte si naslednjo kodo:

aws configure --profile=kubeflow

AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: us-west-2
Default output format [None]: json

# (In Cloud9, select “Cancel” and “Permanently disable” when the AWS managed temporary credentials dialog pops up)

export AWS_PROFILE=kubeflow

Preverite dovoljenja, ki jih bo cloud9 uporabljal za klicanje virov AWS.

aws sts get-caller-identity

Na spodnjem izhodu preverite, ali vidite arn skrbniškega uporabnika, ki ste ga konfigurirali v profilu AWS CLI. V tem primeru je to »kubeflow-user«

{
    "UserId": "*******",
    "Account": "********",
    "Arn": "arn:aws:iam::*******:user/kubeflow-user"
}

Namestite Amazon EKS in Kubeflow na AWS

Če želite namestiti Amazon EKS in Kubeflow na AWS, izvedite naslednje korake:

  1. Nastavite svoje okolje za uvajanje Kubeflow na AWS:
    #Clone the awslabs/kubeflow-manifests and the kubeflow/manifests repositories and check out the release branches of your choosing
    export KUBEFLOW_RELEASE_VERSION=v1.6.1
    export AWS_RELEASE_VERSION=v1.6.1-aws-b1.0.0
    git clone https://github.com/awslabs/kubeflow-manifests.git && cd kubeflow-manifests
    git checkout ${AWS_RELEASE_VERSION}
    git clone --branch ${KUBEFLOW_RELEASE_VERSION} https://github.com/kubeflow/manifests.git upstream
    
    export MANIFEST_DIR=$PWD

    #Install the necessary tools with the following command:
    make install-tools
    source ~/.bash_profile

  2. Razmestite različico Kubeflow na AWS in povezane vire AWS, kot je EKS, z uporabo Terraforma. Upoštevajte, da nosilci EBS, ki se uporabljajo v skupini vozlišč EKS, privzeto niso šifrirani:
    #Define the following environment variables
    
    #Region to create the cluster in
    export CLUSTER_REGION=us-west-2
    #Name of the cluster to create
    export CLUSTER_NAME=

    cd deployments/vanilla/terraform
    
    #Save the variables to a .tfvars file
    cat < sample.auto.tfvars
    cluster_name="${CLUSTER_NAME}"
    cluster_region="${CLUSTER_REGION}"
    EOF
    
    #Run the following one-click command to deploy terraform to install EKS infrastructure and Kubeflow
    make deploy

Nastavite dovoljenja Kubeflow

  1. Dodajte dovoljenja za sklop Notebook in komponento Pipeline za izvajanje klicev api SageMaker, S3 in IAM z uporabo kubeflow_iam_permissions.sh skripta.
    export NAMESPACE=kubeflow-user-example-com
    
    wget https://raw.githubusercontent.com/aws-samples/eks-kubeflow-cloudformation-quick-start/9e46662d97e1be7edb0be7fc31166e545655636a/utils/kubeflow_iam_permissions.sh
    chmod +x kubeflow_iam_permissions.sh
    ./kubeflow_iam_permissions.sh $NAMESPACE $CLUSTER_NAME $CLUSTER_REGION

  2. Ustvarite izvršilno vlogo SageMaker, da omogočite izobraževalnemu opravilu SageMaker dostop do nabora podatkov o usposabljanju iz storitve S3 z uporabo sagemaker_role.sh skripta.
    wget https://raw.githubusercontent.com/aws-samples/eks-kubeflow-cloudformation-quick-start/9e46662d97e1be7edb0be7fc31166e545655636a/utils/sagemaker_role.sh
    chmod +x sagemaker_role.sh
    ./sagemaker_role.sh

Dostop do nadzorne plošče Kubeflow

Za dostop do nadzorne plošče Kubeflow izvedite naslednje korake:

  1. Nadzorno ploščo Kubeflow lahko zaženete lokalno v okolju Cloud9, ne da bi svoje URL-je izpostavili javnemu internetu, tako da zaženete spodnje ukaze.
    # Configure Kubecontext
    $(terraform output -raw configure_kubectl)
    
    cd ${MANIFEST_DIR}
    make port-forward

  2. Izberite Predogled zagnane aplikacije.Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  3. Izberite ikono v kotu nadzorne plošče Kubeflow, da jo odprete kot ločen zavihek v Chromu.
  4. Vnesite privzete poverilnice (user@example.com/12341234), da se prijavite na nadzorno ploščo Kubeflow.Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Nastavite Kubeflow v okolju AWS

Ko se prijavite na nadzorno ploščo Kubeflow, zagotovite, da imate pravi imenski prostor (kubeflow-user-example-com) izbrano. Izvedite naslednje korake, da nastavite svoj Kubeflow v okolju AWS:

  1. Na nadzorni plošči Kubeflow izberite Prenosniki v podoknu za krmarjenje.
  2. Izberite Nov zvezek.
  3. za Ime, vnesite aws-nb.
  4. za Slika Jupyter Docket, izberite sliko jupyter-pytorch:1.12.0-cpu-py38-ubuntu20.04-ec2-2022-09-20 (najnovejši na voljo jupyter-pytorch DLC slika).
  5. za CPU, vnesite 1.
  6. za Spomin, vnesite 5.
  7. za Grafične kartice, pusti kot Noben.
  8. Ne delajte nobenih sprememb v Delovni prostor in Podatkovne količine oddelkov.Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  9. Izberite Dovolite dostop do cevovodov Kubeflow v Konfiguracije in izberite Zaženi.Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  10. Preverite, ali je vaš zvezek uspešno ustvarjen (lahko traja nekaj minut).Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  11. Izberite Connect da se prijavite v JupyterLab.
  12. Klonirajte repo z vnosom https://github.com/aws-samples/eks-kubeflow-cloudformation-quick-start.git v Klonirajte repo področju.
  13. Izberite Clone.Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Zaženite primer porazdeljenega usposabljanja

Ko nastavite prenosni računalnik Jupyter, lahko zaženete celotno predstavitev z uporabo naslednjih korakov na visoki ravni iz mape eks-kubeflow-cloudformation-quick-start/workshop/pytorch-distributed-training v kloniranem repozitoriju:

  1. Zaženite skript za usposabljanje PyTorch Distributed Data Parallel (DDP). – Oglejte si skript za usposabljanje PyTorch DDP cifar10-distributed-gpu-final.py, ki vključuje vzorčno konvolucijsko nevronsko mrežo in logiko za distribucijo usposabljanja na gruči CPE in GPE z več vozlišči.
  2. Ustvarite cevovod Kubeflow – Zaženite zvezek STEP1.0_create_pipeline_k8s_sagemaker.ipynb za ustvarjanje cevovoda, ki izvaja in uvaja modele na SageMaker. Prepričajte se, da namestite knjižnico SageMaker kot del prve celice prenosnika in znova zaženete jedro, preden zaženete preostale celice prenosnika.
  3. Prikličite končno točko SageMaker – Zaženite zvezek STEP1.1_invoke_sagemaker_endpoint.ipynb da prikličete in preizkusite končno točko sklepanja modela SageMaker, ustvarjeno v prejšnjem zvezku.

V naslednjih razdelkih podrobno razpravljamo o vsakem od teh korakov.

Zaženite skript za usposabljanje PyTorch DDP

V okviru porazdeljenega usposabljanja usposabljamo klasifikacijski model, ki ga ustvari preprosta konvolucijska nevronska mreža, ki deluje na podatkovnem nizu CIFAR10. Scenarij treninga cifar10-distributed-gpu-final.py vsebuje samo odprtokodne knjižnice in je združljiv za izvajanje tako v vadbenih gručah Kubernetes kot SageMaker na napravah GPE ali instancah CPE. Oglejmo si nekaj pomembnih vidikov skripta za usposabljanje, preden zaženemo naše primere zvezkov.

Mi uporabljamo torch.distributed modul, ki vsebuje podporo PyTorch in komunikacijske primitive za večprocesni paralelizem med vozlišči v gruči:

...
import torch
import torch.distributed as dist
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.utils.data
import torch.utils.data.distributed
import torchvision
from torchvision import datasets, transforms
...

Ustvarimo preprost model klasifikacije slik z uporabo kombinacije konvolucijskih, maksimalnih združevanja in linearnih plasti, na katere relu aktivacijska funkcija se uporablja pri naprednem prehodu usposabljanja modela:

# Define models
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)

def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x

Če ima vadbena gruča GPU-je, skript izvaja usposabljanje na napravah CUDA in spremenljivka naprave vsebuje privzeto napravo CUDA:

device = "cuda" if torch.cuda.is_available() else "cpu"
...

Preden zaženete porazdeljeno usposabljanje z uporabo PyTorcha DistributedDataParallel če želite zagnati porazdeljeno obdelavo na več vozliščih, morate inicializirati porazdeljeno okolje s klicem init_process_group. To se inicializira na vsakem računalniku učne gruče.

dist.init_process_group(backend=args.backend, rank=host_rank, world_size=world_size)
...

Instanciramo model klasifikatorja in kopiramo model v ciljno napravo. Če je porazdeljeno usposabljanje omogočeno za izvajanje na več vozliščih, je DistributedDataParallel razred se uporablja kot ovojni objekt okoli modela modela, ki omogoča sinhrono porazdeljeno usposabljanje na več strojih. Vhodni podatki so razdeljeni na serijsko dimenzijo in na vsak stroj in vsako napravo je nameščena replika modela. Oglejte si naslednjo kodo:

model = Net().to(device)

if is_distributed:
model = torch.nn.parallel.DistributedDataParallel(model)

...

Ustvarite cevovod Kubeflow

Beležnica uporablja SDK za cevovode Kubeflow in njegov nabor paketov Python za določanje in zagon cevovodov poteka dela ML. Kot del tega kompleta za razvoj programske opreme uporabljamo dekorator paketov za jezik, specifičen za domeno (DSL). dsl.pipeline, ki okrasi funkcije Python za vrnitev cevovoda.

Cevovod Kubeflow uporablja komponento SageMaker V2 za pošiljanje usposabljanja v SageMaker z uporabo operaterjev ACK SageMaker. Ustvarjanje in uvajanje modela SageMaker uporablja komponento SageMaker V1, ki je komponenta SageMaker, ki temelji na Boto3. V tem primeru uporabljamo kombinacijo obeh komponent, da pokažemo prilagodljivost, ki jo imate pri izbiri.

  1. Naložite komponente SageMaker z naslednjo kodo:
    # Loads SageMaker training components v2 for Kubeflow pipeline from the URL
    sagemaker_train_ack_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/d4aaa03035f221351ebe72fbd74fcfccaf25bb66/components/aws/sagemaker/TrainingJob/component.yaml')
    
    # Loads SageMaker components v1 for Kubeflow pipeline from the URL
    sagemaker_model_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/cb36f87b727df0578f4c1e3fe9c24a30bb59e5a2/components/aws/sagemaker/model/component.yaml')
    sagemaker_deploy_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/cb36f87b727df0578f4c1e3fe9c24a30bb59e5a2/components/aws/sagemaker/deploy/component.yaml')

    V naslednji kodi ustvarimo cevovod Kubeflow, kjer izvajamo porazdeljeno usposabljanje SageMaker z uporabo dveh ml.p3.2xlarge primeri:

    # Create Kubeflow Pipeline using Amazon SageMaker Service
    @dsl.pipeline(name="PyTorch Training pipeline", description="Sample training job test")
    def pytorch_cnn_pipeline(region=target_region,
    train_image=aws_dlc_sagemaker_train_image,
    serving_image=aws_dlc_sagemaker_serving_image,
    learning_rate='0.01',
    pytorch_backend='gloo',
    training_job_name=pytorch_distributed_jobname,
    instance_type='ml.p3.2xlarge',
    instance_count='2',
    network_isolation='False',
    traffic_encryption='False',
    ):
    
    # Step to run training on SageMaker using SageMaker Components V2 for Pipeline.
    training = sagemaker_train_ack_op(
    region=region,
    algorithm_specification=(f'{{ '
    f'"trainingImage": "{train_image}",'
    '"trainingInputMode": "File"'
    f'}}'),
    training_job_name=training_job_name,
    hyper_parameters=(f'{{ '
    f'"backend": "{pytorch_backend}",'
    '"batch-size": "64",'
    '"epochs": "10",'
    f'"lr": "{learning_rate}",'
    '"model-type": "custom",'
    '"sagemaker_container_log_level": "20",'
    '"sagemaker_program": "cifar10-distributed-gpu-final.py",'
    f'"sagemaker_region": "{region}",'
    f'"sagemaker_submit_directory": "{source_s3}"'
    f'}}'),
    resource_config=(f'{{ '
    f'"instanceType": "{instance_type}",'
    f'"instanceCount": {instance_count},'
    '"volumeSizeInGB": 50'
    f'}}'),
    input_data_config=training_input(datasets),
    output_data_config=training_output(bucket_name),
    enable_network_isolation=network_isolation,
    enable_inter_container_traffic_encryption=traffic_encryption,
    role_arn=role,
    stopping_condition={"maxRuntimeInSeconds": 3600}
    )
    
    model_artifact_url = get_s3_model_artifact_op(
    training.outputs["model_artifacts"]
    ).output
    
    # This step creates SageMaker Model which refers to model artifacts and inference script to deserialize the input image
    create_model = sagemaker_model_op(
    region=region,
    model_name=training_job_name,
    image=serving_image,
    model_artifact_url=model_artifact_url,
    network_isolation=network_isolation,
    environment=(f'{{ '
    '"SAGEMAKER_CONTAINER_LOG_LEVEL": "20",'
    '"SAGEMAKER_PROGRAM": "inference.py",'
    f'"SAGEMAKER_REGION": "{region}",'
    f'"SAGEMAKER_SUBMIT_DIRECTORY": "{model_artifact_url}"'
    f'}}'),
    role=role
    )
    
    # This step creates SageMaker Endpoint which will be called to run inference
    prediction = sagemaker_deploy_op(
    region=region,
    model_name_1=create_model.output,
    instance_type_1='ml.c5.xlarge'
    )
    
    #Disable pipeline cache
    training.execution_options.caching_strategy.max_cache_staleness = "P0D"

    Ko je cevovod definiran, ga lahko prevedete v specifikacijo Argo YAML z uporabo kompleta za razvoj programske opreme Kubeflow Pipelines kfp.compiler paket. Ta cevovod lahko zaženete z odjemalcem Kubeflow Pipelines SDK, ki pokliče končno točko storitve Pipelines in posreduje ustrezne glave za preverjanje pristnosti neposredno iz prenosnega računalnika. Oglejte si naslednjo kodo:

    # DSL Compiler that compiles pipeline functions into workflow yaml.
    kfp.compiler.Compiler().compile(pytorch_cnn_pipeline, "pytorch_cnn_pipeline.yaml")
    
    # Connect to Kubeflow Pipelines using the Kubeflow Pipelines SDK client
    client = kfp.Client()
    
    experiment = client.create_experiment(name="ml_workflow")
    
    # Run a specified pipeline
    my_run = client.run_pipeline(experiment.id, "pytorch_cnn_pipeline", "pytorch_cnn_pipeline.yaml")
    
    # Please click “Run details” link generated below this cell to view your pipeline. You can click every pipeline step to see logs.

  2. Izberite Podrobnosti o teku povezavo pod zadnjo celico za ogled cevovoda Kubeflow. Naslednji posnetek zaslona prikazuje podrobnosti našega cevovoda za komponento za usposabljanje in uvajanje SageMaker.Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  3. Izberite korak usposabljanja in na Dnevniki izberite povezavo CloudWatch logs za dostop do dnevnikov SageMaker.
    Naslednji posnetek zaslona prikazuje dnevnike CloudWatch za vsakega od dveh primerkov ml.p3.2xlarge.Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  4. Za ogled dnevnikov izberite katero koli od skupin.Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  5. Zajemite končno točko SageMaker tako, da izberete Sagemaker – Razmesti model korak in kopiranje endpoint_name izhodna vrednost artefakta.Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Prikličite končno točko SageMaker

Zvezek STEP1.1_invoke_sagemaker_endpoint.ipynb prikliče končno točko sklepanja SageMaker, ustvarjeno v prejšnjem koraku. Posodobite ime končne točke:

# Invoke SageMaker Endpoint. * Ensure you update the endpoint
# You can grab the SageMaker Endpoint name by either 1) going to the pipeline visualization of Kubeflow console and click the component for deployment, or 2) Go to SageMaker console and go to the list of endpoints, and then substitute the name to the EndpointName='...' in this cell.

endpointName=''

response = client.invoke_endpoint(EndpointName=endpointName,
ContentType='application/x-image',
Body=payload)

pred = json.loads(response['Body'].read().decode())

output_vector_list=pred['score']

# Get outout vector of 10 classes
output_vector = output_vector_list[0]

# Find the class with highest probability
max=output_vector[0]
index = 0
for i in range(1,len(output_vector)):
if output_vector[i] > max:
max = output_vector[i]
index = i

print(f'Index of the maximum value is : {index}')

labels = ['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']

print(labels[index])

Čiščenje

Za čiščenje virov izvedite naslednje korake:

  1. Zaženite naslednje ukaze v AWS Cloud9, da izbrišete vire AWS:
    cd ${MANIFEST_DIR}/deployments/vanilla/terraform
    make delete

  2. Izbriši vlogo IAM “sagemakerrole” z uporabo naslednjega ukaza AWS CLI:
    aws iam detach-role-policy --role-name sagemakerrole --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
    aws iam detach-role-policy --role-name sagemakerrole --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
    aws iam delete-role --role-name sagemakerrole

  3. Izbrišite končno točko SageMaker z naslednjim ukazom AWS CLI:
    aws sagemaker delete-endpoint --endpoint-name  --region us-west-2

Povzetek

V tej objavi smo poudarili vrednost, ki jo ponuja Kubeflow na AWS 1.6.1 prek integracij izvornih storitev, ki jih upravlja AWS, za reševanje potreb AI in ML na ravni podjetja. Izbirate lahko med več možnostmi uvajanja za namestitev Kubeflow na AWS z različnimi integracijami storitev z uporabo Terraform, Kustomize ali Helm. Primer uporabe v tej objavi je pokazal integracijo Kubeflow s SageMakerjem, ki uporablja upravljano vadbeno gručo SageMaker za izvajanje porazdeljenega usposabljanja za model klasifikacije slik in končno točko SageMaker za uvajanje modela.

Na voljo smo dali tudi a primer vzorčnega cevovoda ki uporablja najnovejše komponente SageMaker; to lahko zaženete neposredno z nadzorne plošče Kubeflow. Ta plinovod zahteva Podatki Amazon S3 in Vloga izvajanja SageMaker IAM kot zahtevane vnose.

Če želite začeti uporabljati Kubeflow v AWS, si oglejte razpoložljive možnosti uvedbe, integrirane v AWS, v Kubeflow na AWS. Lahko sledite Repozitorij AWS Labs za sledenje vsem prispevkom AWS v Kubeflow. Najdete nas tudi na Kubeflow #AWS Slack Channel; vaše povratne informacije nam bodo pomagale določiti prednost naslednjim funkcijam za prispevanje k projektu Kubeflow.


O avtorjih

Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Kanwaljit Khurmi je višji arhitekt rešitev pri Amazon Web Services. Sodeluje s strankami AWS pri zagotavljanju smernic in tehnične pomoči, ki jim pomaga izboljšati vrednost njihovih rešitev pri uporabi AWS. Kanwaljit je specializiran za pomoč strankam z aplikacijami za vsebnike in strojnim učenjem.

Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Kartik Kalamadi je inženir za razvoj programske opreme pri Amazon AI. Trenutno se osredotoča na odprtokodne projekte Kubernetes strojnega učenja, kot sta Kubeflow in AWS SageMaker Controller za k8s. V prostem času rad igram računalniške igre in se poigravam z VR z uporabo motorja Unity.

Omogočanje hibridnih delovnih tokov ML na Amazon EKS in Amazon SageMaker z enim klikom Kubeflow pri uvedbi AWS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Rahul Kharse je inženir za razvoj programske opreme pri Amazon Web Services. Njegovo delo se osredotoča na integracijo storitev AWS z odprtokodnimi kontejnerskimi platformami ML Ops za izboljšanje njihove razširljivosti, zanesljivosti in varnosti. Poleg tega, da se osredotoča na zahteve strank po funkcijah, Rahul uživa tudi v eksperimentiranju z najnovejšim tehnološkim razvojem na tem področju.

Časovni žig:

Več od Strojno učenje AWS