Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow AWS-i juurutamisel

Tänapäeval ehitavad paljud AWS-i kliendid ettevõtte jaoks valmis masinõppe (ML) platvorme Amazoni elastse Kubernetese teenus (Amazon EKS) kasutades Kubeflow AWS-is (Kubeflow AWS-spetsiifiline jaotus) paljudel kasutusjuhtudel, sealhulgas arvutinägemine, loomuliku keele mõistmine, kõne tõlkimine ja finantsmodelleerimine.

Koos avatud lähtekoodiga Kubeflow v1.6.1 uusim väljalase, toetab Kubeflow kogukond jätkuvalt Kubeflow laiaulatuslikku kasutuselevõttu ettevõtete jaoks. Viimane väljalase sisaldab palju uusi põnevaid funktsioone, nagu Kubernetes v1.22 tugi, PyTorchi ühendatud Python SDK, MXNet, MPI, XGBoost Kubeflow hajutatud koolitusoperaatoris, uued ClusterServingRuntime ja ServingRuntime CRD-d mudeliteenuse jaoks ja palju muud.

AWS-i panused Kubeflow'sse koos Kubeflow hiljutise käivitamisega AWS 1.6.1-s toetavad kõiki ülesvoolu avatud lähtekoodiga Kubeflow funktsioone ja sisaldavad palju uusi integratsioone kõrgelt optimeeritud, pilvepõhiste, ettevõtte jaoks valmis AWS-teenustega, mis aitavad teil luua väga töökindlaid, turvalised, kaasaskantavad ja skaleeritavad ML-süsteemid.

Selles postituses käsitleme AWS v1.6.1 uusi Kubeflow funktsioone ja tõstame esile kolm olulist integratsiooni, mis on koondatud ühele platvormile, et teile pakkuda:

Selle ajaveebi kasutusjuhtum keskendub konkreetselt SageMakeri integreerimisele Kubeflowiga AWS-is, mida saab lisada teie olemasolevatele Kubernetese töövoogudele, mis võimaldab teil luua hübriidseid masinõppearhitektuure.

Kubeflow AWS-is

Kubeflow versioonis AWS 1.6.1 pakub selget teed Kubeflow kasutamiseks, lisades olemasolevatele võimalustele järgmised AWS-teenused:

  • SageMakeri integreerimine Kubeflowga hübriidse ML-i töövoogude käitamiseks, kasutades SageMakeri operaatoreid Kubernetese jaoks (ACK) ja SageMakeri komponente Kubeflow torujuhtmete jaoks.
  • Automatiseeritud juurutamise valikuid on Kustomize skriptide ja Helmi diagrammide abil täiustatud ja lihtsustatud.
  • Lisatud on tugi infrastruktuuri koodina (IaC) ühe klõpsuga juurutamiseks Kubeflow jaoks AWS-is, kasutades kõigi saadaolevate jaoks Terraformi juurutamise võimalused. See skript automatiseerib järgmiste AWS-i ressursside loomise:
  • Toetus AWS PrivateLink Amazon S3 jaoks, mis võimaldab mitteärilistel piirkonna kasutajatel luua ühenduse vastavate S3 lõpp-punktidega.
  • Lisatud integratsioon Amazoni hallatav teenus Prometheuse jaoks (AMP) ja Amazoni hallatav Grafana mõõdikute jälgimiseks Kubeflow abil AWS-is.
  • Värskendatud Kubeflow märkmikuserveri konteinerid uusimate süvaõppe konteineri piltidega, mis põhinevad versioonidel TensorFlow 2.10.0 ja PyTorch 1.12.1.
  • Integratsioon AWS-i DLC-dega, et käitada hajutatud koolitus ja järeldamine töökoormused.

Järgmine arhitektuuriskeem on kiire ülevaade kõigist teenuseintegratsioonidest (sealhulgas juba mainitud), mis on Kubeflow juhtimis- ja andmetasandi komponentide jaoks saadaval AWS-is Kubeflow'is. Kubeflow juhttasand on installitud Amazon EKS-i peale, mis on hallatav konteinerteenus, mida kasutatakse Kubernetese rakenduste pilves käitamiseks ja skaleerimiseks. Need AWS-i teenuste integratsioonid võimaldavad teil Kubeflow juhttasandi kriitilised osad Kubernetesist lahti siduda, pakkudes turvalist, skaleeritavat, vastupidavat ja kulutõhusat disaini. Lisateavet selle väärtuse kohta, mida need teenuste integratsioonid avatud lähtekoodiga Kubeflowle lisavad, leiate artiklist Ehitage ja juurutage Kubernetesis skaleeritav masinõppesüsteem Kubeflow abil AWS-is.

Arutleme üksikasjalikumalt, kuidas Kubeflow on AWS 1.6.1 põhifunktsioonid teie organisatsioonile kasulikud olla.

Kubeflow AWS-i funktsiooni üksikasjad

Kubeflow 1.6.1 versiooniga püüdsime pakkuda erinevat tüüpi klientidele paremaid tööriistu, mis muudavad Kubeflow kasutamise alustamise lihtsaks, olenemata sellest, milliseid valikuid valite. Need tööriistad on hea lähtepunkt ja neid saab muuta vastavalt teie vajadustele.

Juurutamisvõimalused

Pakume erinevaid juurutusvõimalusi klientide erinevateks kasutusjuhtudeks. Siin saate valida, milliste AWS-teenustega soovite oma Kubeflow juurutuse integreerida. Kui otsustate juurutussuvandeid hiljem muuta, soovitame teil teha uue juurutuse jaoks värske installi. Saadaval on järgmised juurutamisvalikud:

Kui soovite Kubeflow juurutada minimaalsete muudatustega, kaaluge vanill kasutuselevõtu võimalus. Kõiki saadaolevaid juurutusvalikuid saab installida Kustomize'i, Helmi või Terraformi abil.

Meil on ka erinevaid lisandmoodulite juurutusi, mida saab installida mis tahes järgmiste juurutusvalikute peale.

Installimisvõimalused

Kui olete otsustanud, milline juurutussuvand teie vajadustele kõige paremini sobib, saate valida, kuidas soovite neid juurutusi installida. Püüdes teenindada nii eksperte kui ka uusi tulijaid, on meil erinevad automatiseerimise ja konfiguratsiooni tasemed.

1. valik: Terraform (IaC)

See loob EKS-i klastri ja kõik sellega seotud AWS-i infrastruktuuri ressursid ning seejärel juurutab Kubeflow kõik ühes käsus, kasutades Terraformi. Sisemiselt kasutab see EKS-i jooniseid ja Helmi diagramme.

Sellel valikul on järgmised eelised:

  • See pakub ettevõtetele paindlikkust Amazon EKS-i ja Kubeflow juurutamiseks ühe käsuga, ilma et peaks muretsema konkreetsete Kubeflow komponentide konfiguratsioonide pärast. See aitab tohutult kiirendada tehnoloogia hindamist, prototüüpide koostamist ja tootearenduse elutsüklit, pakkudes paindlikkust terraformmoodulite kasutamiseks ja nende muutmiseks, et see vastaks projekti spetsiifilistele vajadustele.
  • Paljud organisatsioonid, kelle pilvestrateegia keskmeks on Terraform, saavad nüüd kasutada Kubeflow AWS Terraformi lahenduses, et oma pilveesmärke täita.

2. valik: Kustomize või Helm Charts:

See suvand võimaldab teil Kubeflow juurutada kaheastmelise protsessina:

  1. Looge AWS-i ressursse, nagu Amazon EKS, Amazon RDS, Amazon S3 ja Amazon Cognito, kas AWS-i distributsioonis sisalduvate automatiseeritud skriptide kaudu või käsitsi, järgides samm-sammult juhend.
  2. Installige Kubeflow juurutused kas Helmi diagrammide või Kustomize'i abil.

Sellel valikul on järgmised eelised:

  • Selle installivaliku põhieesmärk on pakkuda Kubeflowga seotud Kubernetese konfiguratsioone. Seetõttu saate luua või tuua olemasolevaid EKS-klastreid või mis tahes seotud AWS-i ressursse, nagu Amazon RDS, Amazon S3 ja Amazon Cognito, ning konfigureerida ja hallata seda, et see töötaks koos Kubeflow'ga AWS-is.
  • Lihtsam on liikuda avatud lähtekoodiga Kustomize Kubeflow manifestilt AWS Kubeflow distributsioonile.

Järgmine diagramm illustreerib mõlema valiku arhitektuuri.

Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Integratsioon SageMakeriga

SageMaker on täielikult hallatav teenus, mis on loodud ja optimeeritud spetsiaalselt ML-i töövoogude haldamiseks. See eemaldab infrastruktuuri haldamise diferentseerimata raske raskuse ja kaotab vajaduse investeerida IT-sse ja DevOpsi, et hallata klastreid ML-mudelite loomise, koolituse ja järelduste tegemiseks.

Paljud AWS-i kliendid, kellel on teisaldatavuse nõuded või kohapealsed standardpiirangud, kasutavad Amazon EKS-i korratavate ML-konveierite seadistamiseks, mis käitavad koolitust ja töökoormust. See nõuab aga, et arendajad kirjutaksid kohandatud koodi, et optimeerida aluseks olevat ML-i infrastruktuuri, tagada kõrge kättesaadavus ja töökindlus ning järgida asjakohaseid turva- ja regulatiivseid nõudeid. Seetõttu soovivad need kliendid kasutada SageMakerit kulude optimeerimise ja hallatava infrastruktuuri jaoks mudelite väljaõppeks ja juurutamiseks ning jätkata Kubernetese kasutamist orkestreerimiseks ja ML torujuhtmete jaoks, et säilitada standardimine ja teisaldatavus.

Selle vajaduse lahendamiseks võimaldab AWS teil treenida, häälestada ja juurutada Amazon EKS-i SageMakeris mudeleid, kasutades kahte järgmist võimalust.

  • Amazon SageMaker ACK operaatorid Kubernetese jaoks, mis põhinevad AWS-kontrollerid Kubernetese jaoks (ACK) raamistik. ACK on AWS-i strateegia, mis toob kaasa Kubernetese kohandatud kontrollerite ehitamise standardimise, mis võimaldab Kubernetese kasutajatel pakkuda AWS-i ressursse, nagu andmebaasid või sõnumijärjekorrad, lihtsalt Kubernetese API-liidese abil. SageMaker ACK-operaatorid muudavad ML-i arendajatel ja andmeteadlastel, kes kasutavad Kubernetest oma juhtimistasandina, ML-mudelite treenimise, häälestamise ja juurutamise SageMakeris lihtsamaks ilma SageMakeri konsooli sisse logimata.
  • . SageMakeri komponendid Kubeflow torujuhtmete jaoks, mis võimaldavad teil integreerida SageMakeri Kubeflow Pipelines'i teisaldatavuse ja orkestreerimisega. SageMakeri komponentide puhul töötab iga konveieri töövoo töö kohaliku Kubernetese klastri asemel SageMakeris. See võimaldab teil Kubeflow torujuhtmetest luua ja jälgida SageMakeri natiivset koolitust, häälestamist, lõpp-punkti juurutamist ja paketttransformatsiooni töid, võimaldades teil teisaldada täielikud arvutused, sealhulgas andmetöötlus- ja koolitustööd Kubernetese klastrist SageMakeri masinõppele optimeeritud hallatavasse teenusesse.

Alates Kubeflow versioonist AWS v1.6.1 koondavad kõik saadaolevad Kubeflow juurutusvalikud vaikimisi ühele platvormile mõlemad Amazon SageMakeri integreerimisvalikud. See tähendab, et saate nüüd esitada SageMakeri töid kasutades SageMaker ACK-i operaatoreid Kubeflow sülearvuti serverist, esitades kohandatud SageMakeri ressursi või Kubeflow torujuhtme sammust, kasutades SageMakeri komponente.

SageMakeri komponentidest on kaks versiooni – Boto3 (AWS SDK for AWS SDK for Python) põhinevad 1. versiooni komponendid ja SageMaker Operator for K8s (ACK) põhinevad versiooni 2 komponendid. Uued SageMakeri komponentide versioon 2 toetavad uusimaid SageMakeri koolitusrakendusi ja jätkame SageMakeri funktsioonide lisamist sellele komponendi versioonile. Teil on aga paindlikkus kombineerida Sagemakeri komponentide versiooni 2 koolituseks ja versiooni 1 muude SageMakeri funktsioonide jaoks, nagu hüperparameetrite häälestamine, töötlemistööd, hostimine ja palju muud.

Integratsioon Prometheuse ja Grafanaga

Prometheus on avatud lähtekoodiga mõõdikute koondamise tööriist, mille saate konfigureerida Kubernetese klastrites töötama. Kubernetese klastritel töötamisel kraabib Prometheuse põhiserver perioodiliselt kaustade lõpp-punkte.

Kubeflow komponendid, nagu Kubeflow Pipelines (KFP) ja Notebook, väljastavad Prometheuse mõõdikuid, mis võimaldavad jälgida komponentide ressursse, näiteks jooksvate katsete arvu või sülearvutite arvu.

Neid mõõdikuid saab koondada Kubernetese klastris töötav Prometheuse server ja teha päringuid Prometheuse päringukeele (PromQL) abil. Lisateavet Prometheuse toetatavate funktsioonide kohta leiate veebisaidilt Prometheuse dokumentatsioon.

Kubeflow AWS-i levitamisel pakub tuge integreerimiseks järgmiste AWS-i hallatavate teenustega:

  1. Amazoni hallatav Prometheus (AMP), mis on a Prometheus- ühilduv konteinerite infrastruktuuri jälgimisteenus ja konteinerite rakendusmõõdikud, mis hõlbustavad klientidel konteinerikeskkondade turvalist jälgimist ulatuslikult. AMP abil saate visualiseerida, analüüsida ja alarmeerida oma mõõdikuid, logisid ja jälgi, mis on kogutud teie jälgitavussüsteemi mitmest andmeallikast, sealhulgas AWS-ist, kolmanda osapoole ISV-dest ja muudest teie IT-portfelli ressurssidest.
  2. Amazon Managed Grafana, avatud lähtekoodil põhinev täielikult hallatav ja turvaline andmete visualiseerimisteenus grafana projekt, mis võimaldab klientidel teha koheselt päringuid, seostada ja visualiseerida oma rakenduste töömõõdikuid, logisid ja jälgi mitmest andmeallikast. Amazon Managed Grafana koormab Grafana operatiivjuhtimise maha, skaleerides automaatselt arvutus- ja andmebaasitaristut vastavalt kasutusvajadustele, kasutades automaatseid versioonivärskendusi ja turvapaigaldusi.

AWS-i levitamise Kubeflow pakub tuge Amazoni hallatava teenuse Prometheuse ja Amazon Managed Grafana integreerimiseks, et hõlbustada Prometheuse mõõdikute turvalist mastaabis allaneelamist ja visualiseerimist.

Järgmised mõõdikud on sisse võetud ja neid saab visualiseerida.

  • Kubeflow komponentidest (nt Kubeflow Pipelines ja sülearvuti server) väljastatud mõõdikud
  • KubeFlow juhttasandi mõõdikud

Amazoni hallatava teenuse Prometheuse ja Amazon Managed Grafana jaoks oma Kubeflow klastri jaoks konfigureerimiseks vaadake jaotist Kasutage Prometheust, Prometheuse Amazoni hallatavat teenust ja Amazon Managed Grafanat, et jälgida mõõdikuid Kubeflow abil AWS-is.

Lahenduse ülevaade

Sel juhul kasutame Kubeflow vanilli juurutamist, kasutades Terraformi installivalikut. Kui installimine on lõppenud, logime sisse Kubeflow armatuurlauale. Armatuurlaual käivitame Kubeflow Jupyteri sülearvutiserveri, et luua Kubeflow torujuhe, mis kasutab SageMakerit piltide klassifitseerimise mudeli jaotatud koolituse läbiviimiseks ja SageMakeri lõpp-punkti mudeli juurutamiseks.

Eeldused

Veenduge, et vastaksite järgmistele eeltingimustele:

  • Teil on AWS-i konto.
  • Veenduge, et olete us-west-2 Piirkond selle näite käitamiseks.
  • Kasutage Google Chrome'i, et suhelda AWS-i juhtimiskonsool ja Kubeflow.
  • Veenduge, et teie kontol oleks teenusekvootide konsooli abil SageMaker Trainingi ressursitüübi limiit ml.p3.2xlarge jaoks suurendatud 2-ni.
  • Valikuliselt saate kasutada AWSi pilv, pilvepõhine integreeritud arenduskeskkond (IDE), mis võimaldab teha kogu töö teie veebibrauserist. Seadistusjuhiste saamiseks vaadake Seadistage Cloud9 IDE. Valige AWS Cloud18.04 seadetes platvormiks Ubuntu Server 9.Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Seejärel valige oma AWS Cloud9 keskkonnast plussmärk ja avage uus terminal.

Samuti saate konfigureerida an AWS-i käsurea liides (AWS CLI) profiil. Selleks vajate pääsuvõtme ID-d ja salajast juurdepääsuvõtit AWS-i identiteedi- ja juurdepääsuhaldus (AMI) kasutaja konto administraatoriõigustega (lisage olemasolev hallatud poliitika) ja programmiline juurdepääs. Vaadake järgmist koodi:

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

Kontrollige õigusi, mida cloud9 kasutab AWS-i ressursside kutsumiseks.

aws sts get-caller-identity

Kontrollige allolevast väljundist, et näete AWS CLI profiilis seadistatud administraatori kasutaja arn. Selles näites on see "kubeflow-kasutaja"

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

Installige AWS-i Amazon EKS ja Kubeflow

Amazon EKS-i ja Kubeflow'i installimiseks AWS-i toimige järgmiselt.

  1. Seadistage oma keskkond Kubeflow juurutamiseks AWS-is:
    #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. Rakendage Kubeflow vaniljeversioon AWS-is ja sellega seotud AWS-i ressurssides, nagu EKS, kasutades Terraformi. Pange tähele, et EKS-i sõlmerühmas kasutatavad EBS-i köited ei ole vaikimisi krüptitud:
    #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

Seadistage Kubeflow õigused

  1. Lisage SageMakeri, S3 ja IAM-i api kõnede tegemiseks Notebooki ja Pipeline'i komponentide poodi load kubeflow_iam_permissions.sh skript.
    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. Looge SageMakeri täitmisroll, et võimaldada SageMakeri koolitustööl juurdepääsuks S3 teenuse treeningandmetele sagemaker_role.sh skript.
    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

Juurdepääs Kubeflow armatuurlauale

Kubeflow armatuurlauale juurdepääsemiseks toimige järgmiselt.

  1. Saate Kubeflow armatuurlauda käitada kohapeal Cloud9 keskkonnas, ilma et avaldaksite oma URL-e avalikule Internetile, käivitades allolevad käsud.
    # Configure Kubecontext
    $(terraform output -raw configure_kubectl)
    
    cd ${MANIFEST_DIR}
    make port-forward

  2. Vali Töötava rakenduse eelvaade.Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.
  3. Valige Kubeflow armatuurlaua nurgas ikoon, et avada see Chrome'is eraldi vahekaardina.
  4. Sisestage vaikemandaadid (user@example.com/12341234) Kubeflow armatuurlauale sisselogimiseks.Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Seadistage Kubeflow AWS-i keskkonnas

Kui olete Kubeflow armatuurlauale sisse loginud, veenduge, et teil on õige nimeruum (kubeflow-user-example-com) valitud. Kubeflow AWS-i keskkonnas seadistamiseks tehke järgmised toimingud.

  1. Valige Kubeflow armatuurlaual Sülearvutid navigeerimispaanil.
  2. Vali Uus sülearvuti.
  3. eest Nimi, sisenema aws-nb.
  4. eest Jupyter Docketi pilt, valige pilt jupyter-pytorch:1.12.0-cpu-py38-ubuntu20.04-ec2-2022-09-20 (viimane saadaval jupyter-pytorch DLC-pilt).
  5. eest Protsessor, sisenema 1.
  6. eest Mälu, sisenema 5.
  7. eest GPU, jäta nagu mitte ükski.
  8. Ärge tehke muudatusi Tööruum ja Andmemahud lõigud.Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.
  9. valima Lubage juurdepääs Kubeflow torujuhtmetele aasta Konfiguratsioonid jaotist ja valige Käivita.Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.
  10. Veenduge, et teie märkmik on edukalt loodud (see võib võtta paar minutit).Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.
  11. Vali Võta meiega ühendust JupyterLabi sisse logimiseks.
  12. Kloonige repo sisestades https://github.com/aws-samples/eks-kubeflow-cloudformation-quick-start.git aasta Kloonige repo valdkonnas.
  13. Vali Kloonide.Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Käivitage hajutatud koolitusnäide

Pärast Jupyteri sülearvuti seadistamist saate käivitada kogu demo, kasutades kaustast järgmisi kõrgetasemelisi samme eks-kubeflow-cloudformation-quick-start/workshop/pytorch-distributed-training kloonitud hoidlas:

  1. Käivitage PyTorch Distributed Data Parallel (DDP) treeningskript – Vaadake PyTorchi DDP treeningskripti cifar10-distributed-gpu-final.py, mis sisaldab näidiskonvolutsioonilist närvivõrku ja loogikat koolituse levitamiseks mitme sõlmega CPU ja GPU klastris.
  2. Looge Kubeflow torujuhe – Käivitage märkmik STEP1.0_create_pipeline_k8s_sagemaker.ipynb et luua konveier, mis käitab ja juurutab mudeleid SageMakeris. Veenduge, et installite SageMakeri teegi esimese märkmiku lahtri osana ja taaskäivitage kernel enne ülejäänud märkmiku lahtrite käivitamist.
  3. Kutsuge SageMakeri lõpp-punkt – Käivitage märkmik STEP1.1_invoke_sagemaker_endpoint.ipynb eelmises märkmikus loodud SageMakeri mudeli järelduse lõpp-punkti kutsumiseks ja testimiseks.

Järgmistes osades käsitleme kõiki neid samme üksikasjalikult.

Käivitage PyTorch DDP treeningskript

Jaotatud koolituse raames koolitame klassifikatsioonimudelit, mis on loodud lihtsa konvolutsioonilise närvivõrgu abil, mis töötab CIFAR10 andmestikul. Treeningu skript cifar10-distributed-gpu-final.py sisaldab ainult avatud lähtekoodiga teeke ja ühildub nii Kubernetese kui ka SageMakeri koolitusklastrites töötamiseks kas GPU seadmetes või CPU eksemplarides. Enne märkmiku näidete käivitamist vaatame koolitusskripti mõnda olulist aspekti.

Me kasutame torch.distributed moodul, mis sisaldab PyTorchi tuge ja sideprimitiive mitme protsessi paralleelsuse tagamiseks klastri sõlmede vahel:

...
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
...

Loome lihtsa kujutise klassifitseerimismudeli, kasutades konvolutsiooni-, maksimaalse koondamise ja lineaarsete kihtide kombinatsiooni, millele relu Aktiveerimisfunktsiooni rakendatakse mudelitreeningu edasipääsul:

# 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

Kui treeningklastril on GPU-d, käivitab skript koolituse CUDA-seadmetes ja seadme muutuja sisaldab CUDA vaikeseadet:

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

Enne PyTorchi abil hajutatud koolituse läbiviimist DistributedDataParallel hajutatud töötlemise käivitamiseks mitmes sõlmes peate hajutatud keskkonna lähtestama helistamise teel init_process_group. See lähtestatakse igas koolitusklastri masinas.

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

Me loome klassifikaatori mudeli ja kopeerime mudeli sihtseadmesse. Kui hajutatud treening on lubatud mitmel sõlmel, siis DistributedDataParallel klassi kasutatakse ümbrisobjektina mudelobjekti ümber, mis võimaldab sünkroonset hajutatud koolitust mitme masina vahel. Sisendandmed jagatakse partii mõõtmete järgi ja mudeli koopia paigutatakse igasse masinasse ja igasse seadmesse. Vaadake järgmist koodi:

model = Net().to(device)

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

...

Looge Kubeflow torujuhe

Märkmik kasutab Kubeflow Pipelines SDK ja selle pakutud Pythoni pakettide komplekti ML-i töövoo torujuhtmete täpsustamiseks ja käitamiseks. Selle SDK osana kasutame domeenipõhise keele (DSL) paketi dekoraatorit dsl.pipeline, mis kaunistab Pythoni funktsioone torujuhtme tagastamiseks.

Kubeflow torujuhe kasutab SageMakeri komponenti V2 SageMakerile koolituse esitamiseks SageMakeri ACK-operaatorite abil. SageMakeri mudeli loomine ja juurutamine kasutab SageMakeri komponenti V1, mis on Boto3-põhised SageMakeri komponendid. Kasutame selles näites mõlema komponendi kombinatsiooni, et demonstreerida teie valiku paindlikkust.

  1. Laadige SageMakeri komponendid, kasutades järgmist koodi:
    # 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')

    Järgmises koodis loome Kubeflow torujuhtme, kus juhime SageMakeri hajutatud koolitust, kasutades kahte ml.p3.2xlarge juhtumid:

    # 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"

    Pärast torujuhtme defineerimist saate selle Kubeflow Pipelines SDK abil kompileerida Argo YAML-i spetsifikatsioonile kfp.compiler pakett. Saate seda konveieri käitada, kasutades Kubeflow Pipelines SDK klienti, mis kutsub Pipelinesi teenuse lõpp-punkti ja edastab asjakohased autentimispäised otse sülearvutist. Vaadake järgmist koodi:

    # 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. Vali Käivitamise üksikasjad link viimase lahtri all, et vaadata Kubeflow torujuhet. Järgmine ekraanipilt näitab meie SageMakeri koolituse ja juurutamise komponendi torujuhtme üksikasju.Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.
  3. Valige koolitustöö samm ja Logid SageMakeri logidele juurdepääsuks valige link CloudWatchi logid.
    Järgmisel ekraanipildil on CloudWatchi logid mõlema ml.p3.2xlarge eksemplari kohta.Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.
  4. Logide vaatamiseks valige mõni rühm.Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.
  5. Jäädvustage SageMakeri lõpp-punkt, valides Sagemaker – juurutage mudel samm ja kopeerimine endpoint_name väljundartefakti väärtus.Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Kutsuge SageMakeri lõpp-punkt

Märkmik STEP1.1_invoke_sagemaker_endpoint.ipynb kutsub esile eelmises etapis loodud SageMakeri järelduse lõpp-punkti. Veenduge, et värskendate lõpp-punkti nime:

# 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])

Koristage

Ressursside puhastamiseks toimige järgmiselt.

  1. AWS-i ressursside kustutamiseks käivitage AWS Cloud9-s järgmised käsud.
    cd ${MANIFEST_DIR}/deployments/vanilla/terraform
    make delete

  2. Kustuta IAM-i roll "sagemakerrole" kasutades järgmist AWS CLI käsku:
    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. Kustutage SageMakeri lõpp-punkt, kasutades järgmist AWS CLI käsku:
    aws sagemaker delete-endpoint --endpoint-name  --region us-west-2

kokkuvõte

Selles postituses tõime esile väärtuse, mida Kubeflow AWS 1.6.1-s pakub AWS-i hallatavate teenuste integreerimise kaudu, et rahuldada ettevõtte tasemel AI ja ML kasutusjuhtumeid. Kubeflow'i installimiseks AWS-i koos erinevate teenuseintegratsioonidega, kasutades Terraformi, Kustomize'i või Helmi, saate valida mitme juurutusvaliku hulgast. Selle postituse kasutusjuhtum demonstreeris Kubeflow integreerimist SageMakeriga, mis kasutab SageMakeri hallatavat koolitusklastrit, et käitada hajutatud koolitust kujutiste klassifitseerimismudeli jaoks ja SageMakeri lõpp-punkti mudeli juurutamiseks.

Samuti oleme teinud kättesaadavaks a torujuhtme näidisnäide mis kasutab uusimaid SageMakeri komponente; saate seda käivitada otse Kubeflow armatuurlaualt. See torujuhe nõuab Amazon S3 andmed ja SageMakeri täitmise IAM-i roll vajalike sisenditena.

AWS-is Kubeflow kasutamise alustamiseks vaadake saadaolevaid AWS-iga integreeritud juurutusvalikuid Kubeflow AWS-is. Saate jälgida AWS Labsi hoidla et jälgida kõiki Kubeflow'i AWS-i kaastöid. Samuti leiate meid aadressilt Kubeflow #AWS Slack Channel; teie tagasiside aitab meil seada prioriteediks järgmised funktsioonid, mis aitavad Kubeflow projekti kaasa aidata.


Autoritest

Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Kanwaljit Khurmi on Amazon Web Services'i lahenduste vanemarhitekt. Ta teeb koostööd AWS-i klientidega, et pakkuda juhiseid ja tehnilist abi, mis aitab neil AWS-i kasutamisel oma lahenduste väärtust tõsta. Kanwaljit on spetsialiseerunud klientide abistamisele konteiner- ja masinõpperakendustega.

Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Kartik Kalamadi on Amazon AI tarkvaraarenduse insener. Praegu keskendub masinõppe Kubernetese avatud lähtekoodiga projektidele, nagu Kubeflow ja AWS SageMaker Controller for k8s. Vabal ajal meeldib mulle arvutimänge mängida ja Unity mootori abil VR-iga askeldada.

Hübriidse ML-i töövoogude lubamine Amazon EKS-is ja Amazon SageMakeris ühe klõpsuga Kubeflow'ga AWS-i juurutamisel PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Rahul Kharse on Amazon Web Services tarkvaraarenduse insener. Tema töö keskendub AWS-i teenuste integreerimisele avatud lähtekoodiga konteinerite ML Ops platvormidega, et parandada nende mastaapsust, töökindlust ja turvalisust. Lisaks klientide funktsioonide soovidele keskendumisele meeldib Rahulile katsetada ka valdkonna uusimate tehnoloogiliste arengutega.

Ajatempel:

Veel alates AWS-i masinõpe