Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow AWS-asennuksessa

Nykyään monet AWS-asiakkaat rakentavat yritysvalmiita koneoppimisalustoja (ML). Amazonin elastisten kuberneettien palvelu (Amazon EKS) käyttäen Kubeflow AWS:ssä (AWS-spesifinen Kubeflow-jakelu) monissa käyttötapauksissa, mukaan lukien tietokonenäkö, luonnollisen kielen ymmärtäminen, puheen kääntäminen ja taloudellinen mallinnus.

Kanssa avoimen lähdekoodin Kubeflow v1.6.1 uusin julkaisu, Kubeflow-yhteisö tukee edelleen tätä laajamittaista Kubeflown käyttöönottoa yrityskäyttötapauksissa. Uusin julkaisu sisältää monia uusia jännittäviä ominaisuuksia, kuten tuki Kubernetes v1.22:lle, yhdistetty Python SDK PyTorchille, MXNet, MPI, XGBoost Kubeflown hajautettuun koulutusoperaattoriin, uudet ClusterServingRuntime- ja ServingRuntime CRD:t mallipalveluun ja paljon muuta.

Kubeflow:n AWS-panos äskettäin julkaistun Kubeflown AWS 1.6.1:ssä tukee kaikkia ylävirran avoimen lähdekoodin Kubeflow-ominaisuuksia ja sisältää monia uusia integraatioita erittäin optimoituihin, pilvipohjaisiin, yrityskäyttöön sopiviin AWS-palveluihin, jotka auttavat sinua rakentamaan erittäin luotettavia, turvalliset, kannettavat ja skaalautuvat ML-järjestelmät.

Tässä viestissä käsittelemme uusia Kubeflow AWS v1.6.1 -ominaisuuksia ja korostamme kolmea tärkeää integraatiota, jotka on yhdistetty yhdelle alustalle tarjoamaan sinulle:

  • Infrastructure as Code (IaaC) yhden napsautuksen ratkaisu, joka automatisoi Kubeflown päästä päähän -asennuksen, mukaan lukien EKS-klusterin luomisen
  • Tuki hajautettuun koulutukseen Amazon Sage Maker käyttämällä Amazon SageMaker -operaattorit Kubernetesille (ACK) ja SageMaker-komponentit Kubeflow-putkilinjoille ja paikallisesti Kubernetesin avulla Kubeflow-koulutusoperaattorit. Monet asiakkaat käyttävät tätä kykyä hybridikoneoppimisarkkitehtuurien rakentamiseen, joissa he hyödyntävät sekä Kubernetes-laskentaa kokeiluvaiheessa että SageMaker-sovellusta tuotantolaajuisten työkuormien suorittamiseen.
  • Parannettu seuranta ja havainnointi ML-työkuormille mukaan lukien Amazon EKS, Kubeflow-mittarit ja sovelluslokit käyttämällä Prometheusta, Grafanaa ja amazonin pilvikello integraatiot

Tämän blogin käyttötapaus keskittyy erityisesti SageMaker-integraatioon Kubeflowin kanssa AWS:ssä, joka voidaan lisätä olemassa oleviin Kubernetes-työnkulkuihisi, jotta voit rakentaa hybridikoneoppimisarkkitehtuureja.

Kubeflow AWS:ssä

Kubeflow AWS 1.6.1:ssä tarjoaa selkeän polun Kubeflow:n käyttöön, ja siihen on lisätty seuraavat AWS-palvelut olemassa olevien ominaisuuksien lisäksi:

  • SageMaker-integraatio Kubeflow:n kanssa hybridi-ML-työnkulkujen suorittamiseksi SageMaker Operators for Kubernetes (ACK) - ja SageMaker Components for Kubeflow -putkistojen avulla.
  • Automaattisia käyttöönottovaihtoehtoja on parannettu ja yksinkertaistettu Kustomize-skriptien ja Helm-kaavioiden avulla.
  • Lisätty tuki Infrastructure as Code (IaC) yhden napsautuksen käyttöönotolle Kubeflowlle AWS:ssä käyttäen Terraformia kaikille saatavilla oleville käyttöönottovaihtoehdot. Tämä komentosarja automatisoi seuraavien AWS-resurssien luomisen:
  • Tuki AWS PrivateLink Amazon S3:lle, jonka avulla ei-kaupalliset alueen käyttäjät voivat muodostaa yhteyden vastaaviin S3-päätepisteisiinsä.
  • Lisätty integraatio kanssa Amazonin hallinnoima palvelu Prometheukselle (AMP) ja Amazonin hallinnoima Grafana seurata mittareita Kubeflown avulla AWS:ssä.
  • Päivitetty Kubeflow-muistikirjan palvelinkontit uusimmilla syväoppimissäiliökuvilla, jotka perustuvat TensorFlow 2.10.0:aan ja PyTorch 1.12.1:een.
  • Integrointi AWS DLC:ien kanssa hajautettua käyttöä varten koulutus ja päättely työmäärät.

Seuraava arkkitehtuurikaavio on nopea tilannekuva kaikista palveluintegraatioista (mukaan lukien jo mainitut), jotka ovat saatavilla Kubeflow-ohjaus- ja tietotason komponenteille AWS:n Kubeflowssa. Kubeflow-ohjaustaso on asennettu Amazon EKS:n päälle, joka on hallittu konttipalvelu, jota käytetään Kubernetes-sovellusten ajamiseen ja skaalaamiseen pilvessä. Näiden AWS-palveluintegraatioiden avulla voit irrottaa Kubeflow-ohjaustason kriittiset osat Kubernetesista, mikä tarjoaa turvallisen, skaalautuvan, joustavan ja kustannusoptimoidun suunnittelun. Lisätietoja arvosta, jota nämä palveluintegraatiot lisäävät avoimen lähdekoodin Kubeflowin verrattuna, on kohdassa Rakenna ja ota käyttöön skaalautuva koneoppimisjärjestelmä Kubernetesissa Kubeflown avulla AWS:ssä.

Keskustellaan tarkemmin siitä, kuinka Kubeflow on AWS 1.6.1 -avainominaisuudet voivat olla hyödyllisiä organisaatiollesi.

Kubeflow on AWS:n ominaisuustiedot

Kubeflow 1.6.1 -julkaisun myötä yritimme tarjota parempia työkaluja erilaisille asiakkaille, jotka helpottavat Kubeflown käytön aloittamista riippumatta siitä, mitkä vaihtoehdot valitset. Nämä työkalut tarjoavat hyvän lähtökohdan, ja niitä voidaan muokata vastaamaan täsmällisiä tarpeitasi.

Käyttöönottovaihtoehdot

Tarjoamme erilaisia ​​käyttöönottovaihtoehtoja erilaisiin asiakaskäyttötapauksiin. Täällä voit valita, mihin AWS-palveluihin haluat integroida Kubeflow-asennuksesi. Jos päätät muuttaa käyttöönottoasetuksia myöhemmin, suosittelemme, että teet uuden asennuksen uutta käyttöönottoa varten. Seuraavat käyttöönottovaihtoehdot ovat käytettävissä:

Jos haluat ottaa Kubeflown käyttöön pienin muutoksin, harkitse vanilja käyttöönottovaihtoehto. Kaikki käytettävissä olevat käyttöönottovaihtoehdot voidaan asentaa Kustomizen, Helmin tai Terraformin avulla.

Meillä on myös erilaisia ​​lisäosien käyttöönottoja, jotka voidaan asentaa minkä tahansa seuraavista käyttöönottovaihtoehdoista:

Asennusvaihtoehdot

Kun olet päättänyt, mikä käyttöönottovaihtoehto sopii parhaiten tarpeisiisi, voit valita, kuinka haluat asentaa nämä käyttöönotot. Pyrimme palvelemaan niin asiantuntijoita kuin uusia tulokkaitakin, sillä meillä on erilaisia ​​automaatio- ja konfigurointitasoja.

Vaihtoehto 1: Terraform (IaC)

Tämä luo EKS-klusterin ja kaikki siihen liittyvät AWS-infrastruktuuriresurssit ja ottaa sitten Kubeflown käyttöön yhdessä komennossa Terraformin avulla. Sisäisesti tämä käyttää EKS-piirustuksia ja Helm-kaavioita.

Tällä vaihtoehdolla on seuraavat edut:

  • Se tarjoaa yrityksille joustavuutta ottaa käyttöön Amazon EKS ja Kubeflow yhdellä komennolla ilman, että sinun tarvitsee huolehtia tietyistä Kubeflow-komponenttikokoonpanoista. Tämä nopeuttaa valtavasti teknologian arviointia, prototyyppien valmistusta ja tuotekehityksen elinkaarta tarjoten joustavuutta terraform-moduuleiden käyttöön ja muokkaamiseen projektikohtaisten tarpeiden mukaan.
  • Monet organisaatiot, joilla on nykyään Terraform pilvistrategiansa keskipisteenä, voivat nyt käyttää Kubeflow on AWS Terraform -ratkaisua saavuttaakseen pilvitavoitteensa.

Vaihtoehto 2: Kustomize tai Helm Charts:

Tämän vaihtoehdon avulla voit ottaa Kubeflown käyttöön kaksivaiheisessa prosessissa:

  1. Luo AWS-resursseja, kuten Amazon EKS, Amazon RDS, Amazon S3 ja Amazon Cognito, joko AWS-jakeluun sisältyvien automaattisten komentosarjojen avulla tai manuaalisesti seuraamalla askel-askeleelta opas.
  2. Asenna Kubeflow-asennukset joko Helm-kaavioiden tai Kustomizen avulla.

Tällä vaihtoehdolla on seuraavat edut:

  • Tämän asennusvaihtoehdon päätavoite on tarjota Kubeflow-liittyviä Kubernetes-kokoonpanoja. Siksi voit luoda tai tuoda olemassa olevia EKS-klustereita tai mitä tahansa niihin liittyviä AWS-resursseja, kuten Amazon RDS, Amazon S3 ja Amazon Cognito, ja määrittää ja hallita sitä toimimaan Kubeflown kanssa AWS:ssä.
  • On helpompi siirtyä avoimen lähdekoodin Kustomize Kubeflow -luettelosta AWS Kubeflow -jakeluun.

Seuraava kaavio havainnollistaa molempien vaihtoehtojen arkkitehtuurit.

Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Integrointi SageMakerin kanssa

SageMaker on täysin hallittu palvelu, joka on suunniteltu ja optimoitu erityisesti ML-työnkulkujen hallintaan. Se poistaa infrastruktuurin hallinnan eriyttämättömän raskaan nostamisen ja poistaa tarpeen investoida IT- ja DevOpsiin klustereiden hallintaan ML-mallin rakentamista, koulutusta ja päätelmiä varten.

Monet AWS-asiakkaat, joilla on siirrettävyysvaatimuksia tai paikallisia vakiorajoituksia, käyttävät Amazon EKS:ää toistettavien ML-putkien määrittämiseen koulutus- ja päätelmätyökuormien suorittamiseen. Tämä edellyttää kuitenkin, että kehittäjät kirjoittavat mukautetun koodin taustalla olevan ML-infrastruktuurin optimoimiseksi, korkean käytettävyyden ja luotettavuuden takaamiseksi sekä asianmukaisten turvallisuus- ja säädösvaatimusten noudattamiseksi. Nämä asiakkaat haluavat siksi käyttää SageMakeria kustannusoptimoituun ja hallinnoituun infrastruktuuriin mallien koulutukseen ja käyttöönottoon ja jatkaa Kubernetesin käyttöä orkestraatioon ja ML-putkistojen käyttöä standardoinnin ja siirrettävyyden säilyttämiseksi.

Vastatakseen tähän tarpeeseen AWS antaa sinun kouluttaa, virittää ja ottaa käyttöön malleja SageMakerissa Amazon EKS:stä käyttämällä seuraavia kahta vaihtoehtoa:

  • Amazon SageMaker ACK -operaattorit Kubernetesille, jotka perustuvat AWS-ohjaimet Kubernetesille (ACK) puitteet. ACK on AWS-strategia, joka tuo standardisoinnin mukautettujen Kubernetes-ohjainten rakentamiseen, jotta Kubernetes-käyttäjät voivat tarjota AWS-resursseja, kuten tietokantoja tai viestijonoja, yksinkertaisesti käyttämällä Kubernetes-sovellusliittymää. SageMaker ACK -operaattorit helpottavat ML-kehittäjien ja datatieteilijöiden, jotka käyttävät Kubernetesia ohjaustasonaan, kouluttaa, virittää ja ottaa käyttöön ML-malleja SageMakerissa kirjautumatta SageMaker-konsoliin.
  • - SageMaker-komponentit Kubeflow-putkilinjoille, joiden avulla voit integroida SageMakerin Kubeflow Pipelinesin siirrettävyyteen ja orkestrointiin. SageMaker-komponenttien avulla jokainen liukuhihnatyönkulun työ suoritetaan SageMakerissa paikallisen Kubernetes-klusterin sijaan. Tämän avulla voit luoda ja seurata alkuperäisiä SageMaker-koulutus-, viritys-, päätepisteiden käyttöönotto- ja erämuunnostöitä Kubeflow-putkista, jolloin voit siirtää täydelliset laskennat mukaan lukien tietojenkäsittely- ja koulutustyöt Kubernetes-klusterista SageMakerin koneoppimisoptimoituun hallintapalveluun.

Alkaen AWS v1.6.1:n Kubeflowsta, kaikki saatavilla olevat Kubeflow-käyttöönottovaihtoehdot yhdistävät molemmat Amazon SageMaker -integraatiovaihtoehdot oletusarvoisesti yhdelle alustalle. Tämä tarkoittaa, että voit nyt lähettää SageMaker-töitä käyttämällä SageMaker ACK -operaattoreita itse Kubeflow Notebook -palvelimelta lähettämällä mukautetun SageMaker-resurssin tai Kubeflow-prosessivaiheesta käyttämällä SageMaker-komponentteja.

SageMaker Componentsista on kaksi versiota - Boto3 (AWS SDK for AWS SDK for Python) -pohjaiset versio 1 -komponentit ja SageMaker Operator for K8s (ACK) -pohjaiset versio 2 komponentit. Uudet SageMaker-komponentit versio 2 tukevat viimeisintä SageMaker-harjoitussovellusta, ja jatkamme SageMaker-ominaisuuksien lisäämistä tähän komponentin versioon. Sinulla on kuitenkin joustavuus yhdistää Sagemaker-komponenttien versio 2 koulutusta varten ja versio 1 muihin SageMaker-ominaisuuksiin, kuten hyperparametrien virittäminen, käsittelytyöt, hosting ja monet muut.

Integrointi Prometheuksen ja Grafanan kanssa

Prometheus on avoimen lähdekoodin mittareiden yhdistämistyökalu, jonka voit määrittää toimimaan Kubernetes-klustereissa. Kun ajetaan Kubernetes-klustereissa, Prometheus-pääpalvelin kaapii ajoittain pod-päätepisteitä.

Kubeflow-komponentit, kuten Kubeflow Pipelines (KFP) ja Notebook, lähettävät Prometheus-mittareita, joiden avulla voidaan seurata komponenttiresursseja, kuten käynnissä olevien kokeiden tai muistikirjan määrää.

Kubernetes-klusterissa toimiva Prometheus-palvelin voi koota nämä tiedot ja tehdä kyselyjä Prometheus-kyselykielellä (PromQL). Lisätietoja Prometheuksen tukemista ominaisuuksista on osoitteessa Prometheus-dokumentaatio.

Kubeflow on AWS-jakelu tukee integraatiota seuraavien AWS-hallittujen palvelujen kanssa:

  1. Amazon Managed Prometheus (AMP), joka on a Prometheus- yhteensopiva konttiinfrastruktuurin valvontapalvelu ja konttien sovellusmittarit, joiden avulla asiakkaiden on helppo valvoa konttiympäristöjä turvallisesti mittakaavassa. AMP:n avulla voit visualisoida, analysoida ja hälyttää mittareistasi, lokeistasi ja jäljistä, jotka on kerätty havainnointijärjestelmäsi useista tietolähteistä, mukaan lukien AWS, kolmannen osapuolen ISV:t ja muut IT-portfoliosi resurssit.
  2. Amazon Managed Grafana, täysin hallittu ja turvallinen tiedon visualisointipalvelu, joka perustuu avoimeen lähdekoodiin grafana -projekti, jonka avulla asiakkaat voivat välittömästi tehdä kyselyitä, korreloida ja visualisoida sovellusten käyttömittareita, lokeja ja jälkiä useista tietolähteistä. Amazon Managed Grafana kuormittaa Grafanan toiminnanhallinnan skaalaamalla automaattisesti laskenta- ja tietokantainfrastruktuuria käyttötarpeiden kasvaessa automaattisilla versiopäivityksillä ja tietoturvakorjauksilla.

Kubeflow on AWS-jakelu tukee Amazon Managed Servicen integrointia Prometheus- ja Amazon Managed Grafana -palveluille, mikä helpottaa Prometheus-mittareiden käsittelyä ja visualisointia turvallisesti ja laajassa mittakaavassa.

Seuraavat tiedot on otettu käyttöön ja ne voidaan visualisoida:

  • Kubeflow-komponenttien, kuten Kubeflow Pipelinesin ja Notebook-palvelimen, lähettämät tiedot
  • KubeFlow ohjaustason metriikka

Jos haluat määrittää Amazonin hallinnoiman palvelun Prometheukselle ja Amazon Managed Grafanalle Kubeflow-klusterillesi, katso Käytä Prometheusta, Amazon Managed Service for Prometheus -palvelua ja Amazon Managed Grafanaa seurataksesi mittareita Kubeflown avulla AWS:ssä.

Ratkaisun yleiskatsaus

Tässä käyttötapauksessa käytämme Kubeflow vanilla -käyttöönottoa käyttämällä Terraform-asennusvaihtoehtoa. Kun asennus on valmis, kirjaudumme sisään Kubeflow-hallintapaneeliin. Kojelaudan avulla kehitämme Kubeflow Jupyter -muistikirjapalvelimen rakentaaksemme Kubeflow-putkilinjan, joka käyttää SageMakeria kuvien luokittelumallin hajautetun koulutuksen suorittamiseen ja SageMaker-päätepisteen mallin käyttöönottoa varten.

Edellytykset

Varmista, että täytät seuraavat edellytykset:

  • Sinulla on AWS-tili.
  • Varmista, että olet us-west-2 Alue suorittaa tämän esimerkin.
  • Käytä Google Chromea vuorovaikutukseen AWS-hallintakonsoli ja Kubeflow.
  • Varmista, että tililläsi on SageMaker Training -resurssityyppirajoitus ml.p3.2xlargelle nostettu kahteen käyttämällä Service Quota -konsolia.
  • Vaihtoehtoisesti voit käyttää AWS-pilvi9, pilvipohjainen integroitu kehitysympäristö (IDE), joka mahdollistaa kaiken työn suorittamisen verkkoselaimella. Katso asennusohjeet kohdasta Asenna Cloud9 IDE. Valitse Ubuntu Server 18.04 alustaksi AWS Cloud9 -asetuksista.Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Valitse sitten AWS Cloud9 -ympäristöstäsi plusmerkki ja avaa uusi pääte.

Voit myös määrittää an AWS-komentoriviliitäntä (AWS CLI) -profiili. Tätä varten tarvitset pääsyavaimen tunnuksen ja salaisen pääsyavaimen AWS-henkilöllisyyden ja käyttöoikeuksien hallinta (MINÄ OLEN) lähettämä tili, jolla on järjestelmänvalvojan oikeudet (liitä olemassa oleva hallinnoitu käytäntö) ja ohjelmallinen käyttöoikeus. Katso seuraava 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

Tarkista käyttöoikeudet, joita cloud9 käyttää AWS-resurssien kutsumiseen.

aws sts get-caller-identity

Tarkista alla olevasta lähdöstä, että näet AWS CLI -profiilissa määrittämäsi järjestelmänvalvojan käyttäjän arn. Tässä esimerkissä se on "kubeflow-user"

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

Asenna Amazon EKS ja Kubeflow AWS:ään

Asenna Amazon EKS ja Kubeflow AWS:ään suorittamalla seuraavat vaiheet:

  1. Määritä ympäristösi Kubeflown käyttöönottoa varten AWS:ssä:
    #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. Ota Kubeflown vanillaversio käyttöön AWS:ssä ja siihen liittyvissä AWS-resursseissa, kuten EKS, Terraformin avulla. Huomaa, että EKS-solmuryhmässä käytetyt EBS-taltiot eivät ole oletusarvoisesti salattuja:
    #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

Määritä Kubeflow-oikeudet

  1. Lisää käyttöoikeudet Notebook podiin ja Pipeline-komponenttikoteloon, jotta voit soittaa SageMaker-, S3- ja IAM-sovellusliittymäkutsuja käyttämällä kubeflow_iam_permissions.sh skriptejä.
    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. Luo SageMaker-suoritusrooli, jotta SageMaker-harjoitustyö voi käyttää harjoitustietojoukkoa S3-palvelusta käyttämällä sagemaker_role.sh skriptejä.
    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

Käytä Kubeflow-hallintapaneelia

Pääset Kubeflow-hallintapaneeliin suorittamalla seuraavat vaiheet:

  1. Voit käyttää Kubeflow-hallintapaneelia paikallisesti Cloud9-ympäristössä paljastamatta URL-osoitteitasi julkiseen Internetiin suorittamalla alla olevia komentoja.
    # Configure Kubecontext
    $(terraform output -raw configure_kubectl)
    
    cd ${MANIFEST_DIR}
    make port-forward

  2. Valita Esikatsele käynnissä olevaa sovellusta.Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.
  3. Valitse Kubeflow-hallintapaneelin kulmassa oleva kuvake avataksesi sen erillisenä välilehtenä Chromessa.
  4. Anna oletustunnistetiedot (user@example.com/12341234) kirjautuaksesi Kubeflow-hallintapaneeliin.Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Määritä Kubeflow on AWS-ympäristö

Kun olet kirjautunut Kubeflow-hallintapaneeliin, varmista, että sinulla on oikea nimiavaruus (kubeflow-user-example-com) valittu. Suorita seuraavat vaiheet määrittääksesi Kubeflow on AWS-ympäristö:

  1. Valitse Kubeflow-hallintapaneelista Kannettavat navigointipaneelissa.
  2. Valita Uusi muistikirja.
  3. varten Nimi, tulla sisään aws-nb.
  4. varten Jupyter Docket -kuva, valitse kuva jupyter-pytorch:1.12.0-cpu-py38-ubuntu20.04-ec2-2022-09-20 (viimeisin saatavilla jupyter-pytorch DLC-kuva).
  5. varten prosessori, tulla sisään 1.
  6. varten Muisti, tulla sisään 5.
  7. varten GPU, jätä nimellä Ei eristetty.
  8. Älä tee mitään muutoksia Työtila ja Tietomäärät osissa.Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.
  9. valita Salli pääsy Kubeflow-putkiin vuonna Kokoonpanot -osio ja valitse Käynnistä.Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.
  10. Varmista, että muistikirjasi on luotu onnistuneesti (se voi kestää muutaman minuutin).Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.
  11. Valita kytkeä kirjautuaksesi JupyterLabiin.
  12. Kloonaa repo syöttämällä https://github.com/aws-samples/eks-kubeflow-cloudformation-quick-start.git vuonna Kloonaa repo ala.
  13. Valita klooni.Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Suorita hajautettu koulutusesimerkki

Kun olet määrittänyt Jupyter-muistikirjan, voit suorittaa koko esittelyn seuraavien korkean tason vaiheiden avulla kansiosta eks-kubeflow-cloudformation-quick-start/workshop/pytorch-distributed-training kloonatussa arkistossa:

  1. Suorita PyTorch Distributed Data Parallel (DDP) -harjoituskomentosarja – Katso PyTorch DDP -harjoitusskripti cifar10-distributed-gpu-final.py, joka sisältää mallikonvoluutiohermoverkon ja logiikan koulutuksen jakamiseksi monisolmuisessa CPU- ja GPU-klusterissa.
  2. Luo Kubeflow-putki – Käytä muistikirjaa STEP1.0_create_pipeline_k8s_sagemaker.ipynb luodaksesi putkiston, joka ajaa ja ottaa käyttöön malleja SageMakerissa. Varmista, että asennat SageMaker-kirjaston osana ensimmäistä muistikirjan solua ja käynnistä ydin uudelleen ennen kuin suoritat muut muistikirjan solut.
  3. Kutsu SageMaker-päätepiste – Käytä muistikirjaa STEP1.1_invoke_sagemaker_endpoint.ipynb kutsua ja testata edellisessä muistikirjassa luotua SageMaker-mallin päättelypäätepistettä.

Seuraavissa osioissa käsittelemme jokaista näistä vaiheista yksityiskohtaisesti.

Suorita PyTorch DDP -harjoitusskripti

Osana hajautettua koulutusta koulutamme luokittelumallin, jonka luo yksinkertainen konvoluutiohermoverkko, joka toimii CIFAR10-aineistolla. Harjoittelun käsikirjoitus cifar10-distributed-gpu-final.py sisältää vain avoimen lähdekoodin kirjastot ja on yhteensopiva sekä Kubernetes- että SageMaker-koulutusklustereissa joko GPU-laitteissa tai CPU-esiintymissä. Katsotaanpa muutamia tärkeitä koulutusohjelman näkökohtia ennen kuin suoritamme muistikirjaesimerkkejä.

Käytämme torch.distributed moduuli, joka sisältää PyTorch-tuen ja tietoliikenneprimitiivit usean prosessin rinnakkaisuudelle klusterin solmujen välillä:

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

Luomme yksinkertaisen kuvan luokittelumallin käyttämällä konvoluutio-, maksimipoolaus- ja lineaarisia kerroksia, joihin relu aktivointitoimintoa käytetään malliharjoittelun eteenpäin siirtymisessä:

# 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

Jos koulutusklusterissa on GPU:ita, komentosarja suorittaa harjoituksen CUDA-laitteissa ja laitemuuttuja sisältää oletusarvoisen CUDA-laitteen:

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

Ennen kuin suoritat hajautetun harjoittelun PyTorchin avulla DistributedDataParallel Jos haluat suorittaa hajautetun käsittelyn useissa solmuissa, sinun on alustettava hajautettu ympäristö kutsumalla init_process_group. Tämä alustetaan jokaisessa koulutusklusterin koneessa.

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

Instantoimme luokitinmallin ja kopioimme mallin kohdelaitteeseen. Jos hajautettu koulutus on otettu käyttöön useissa solmuissa, DistributedDataParallel luokkaa käytetään wrapper-objektina malliobjektin ympärillä, mikä mahdollistaa synkronisen hajautetun koulutuksen useille koneille. Syöttötiedot jaetaan erämitan mukaan ja mallin kopio asetetaan jokaiseen koneeseen ja jokaiseen laitteeseen. Katso seuraava koodi:

model = Net().to(device)

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

...

Luo Kubeflow-putki

Muistikirja käyttää Kubeflow Pipelines SDK ja sen mukana toimitetut Python-paketit ML-työnkulkuputkien määrittämiseen ja suorittamiseen. Osana tätä SDK:ta käytämme verkkotunnuskohtaisen kielen (DSL) pakettien koristelua dsl.pipeline, joka koristaa Python-funktiot palauttamaan liukuhihnan.

Kubeflow-liukuhihna käyttää SageMaker-komponenttia V2 koulutuksen lähettämiseen SageMakerille käyttämällä SageMaker ACK -operaattoreita. SageMaker-mallin luomisessa ja käyttöönotossa käytetään SageMaker-komponenttia V1, jotka ovat Boto3-pohjaisia ​​SageMaker-komponentteja. Käytämme tässä esimerkissä molempien komponenttien yhdistelmää osoittaaksemme valinnan joustavuuden.

  1. Lataa SageMaker-komponentit käyttämällä seuraavaa koodia:
    # 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')

    Seuraavassa koodissa luomme Kubeflow-putkilinjan, jossa suoritamme SageMaker-hajautetun koulutuksen kahdella ml.p3.2xlarge tapauksia:

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

    Kun liukuhihna on määritetty, voit kääntää putkilinjan Argo YAML -määritykseen käyttämällä Kubeflow Pipelines SDK:ta kfp.compiler paketti. Voit suorittaa tämän liukuhihnan käyttämällä Kubeflow Pipelines SDK -asiakasohjelmaa, joka kutsuu Pipelines-palvelun päätepisteen ja välittää asianmukaiset todennusotsikot suoraan muistikirjasta. Katso seuraava 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. Valitse Ajon tiedot linkki viimeisen solun alla nähdäksesi Kubeflow-putkilinjan. Seuraava kuvakaappaus näyttää SageMaker-koulutus- ja käyttöönottokomponenttimme tiedot.Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.
  3. Valitse koulutustyön vaihe ja Lokit -välilehti, valitse CloudWatch-lokit -linkki päästäksesi SageMaker-lokeihin.
    Seuraava kuvakaappaus näyttää CloudWatch-lokit kummallekin ml.p3.2xlarge-esiintymälle.Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.
  4. Valitse mikä tahansa ryhmä nähdäksesi lokit.Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.
  5. Kaappaa SageMaker-päätepiste valitsemalla Sagemaker – Ota malli käyttöön vaihe ja kopiointi endpoint_name ulostulon artefaktin arvo.Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Kutsu SageMaker-päätepiste

Muistikirja STEP1.1_invoke_sagemaker_endpoint.ipynb kutsuu edellisessä vaiheessa luodun SageMaker-päätelmäpäätepisteen. Varmista, että päivität päätepisteen nimen:

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

Puhdistaa

Voit puhdistaa resurssit suorittamalla seuraavat vaiheet:

  1. Suorita seuraavat komennot AWS Cloud9:ssä poistaaksesi AWS-resurssit:
    cd ${MANIFEST_DIR}/deployments/vanilla/terraform
    make delete

  2. Poista IAM-rooli"sagemakerrole" käyttämällä seuraavaa AWS CLI -komentoa:
    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. Poista SageMaker-päätepiste käyttämällä seuraavaa AWS CLI -komentoa:
    aws sagemaker delete-endpoint --endpoint-name  --region us-west-2

Yhteenveto

Tässä viestissä korostimme arvoa, jonka Kubeflow AWS 1.6.1:ssä tarjoaa alkuperäisten AWS-hallittujen palveluintegraatioiden kautta yritystason AI- ja ML-käyttötapausten tarpeisiin. Voit valita useista käyttöönottovaihtoehdoista Kubeflow:n asentamiseksi AWS:ään erilaisilla palveluintegroinneilla käyttämällä Terraformia, Kustomizea tai Helmiä. Tämän viestin käyttötapaus osoitti Kubeflow-integraation SageMakerin kanssa, joka käyttää SageMaker-hallittua koulutusklusteria suorittamaan hajautettua koulutusta kuvien luokittelumallille ja SageMaker-päätepisteelle mallin käyttöönottoa varten.

Olemme myös asettaneet saataville a esimerkki putkilinjasta joka käyttää uusimpia SageMaker-komponentteja; voit suorittaa tämän suoraan Kubeflow-hallintapaneelista. Tämä putki vaatii Amazon S3 tiedot ja SageMaker-suoritus IAM-rooli tarvittavina tuloina.

Aloita Kubeflow AWS:ssä tutustumalla käytettävissä oleviin AWS-integroituihin käyttöönottovaihtoehtoihin Kubeflow AWS:ssä. Voit seurata AWS Labs -arkisto seurataksesi kaikkia AWS-panoksia Kubeflowiin. Löydät meidät myös osoitteesta Kubeflow #AWS Slack Channel; antamasi palautteesi auttaa meitä priorisoimaan seuraavat Kubeflow-projektin ominaisuudet.


Tietoja kirjoittajista

Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Kanwaljit Khurmi on vanhempi ratkaisuarkkitehti Amazon Web Servicesissä. Hän työskentelee AWS-asiakkaiden kanssa tarjotakseen ohjausta ja teknistä apua, joka auttaa heitä parantamaan ratkaisujensa arvoa AWS:n käytössä. Kanwaljit on erikoistunut auttamaan asiakkaita kontti- ja koneoppimissovelluksissa.

Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Kartik Kalamadi on ohjelmistokehitysinsinööri Amazon AI:ssa. Tällä hetkellä keskittynyt koneoppimiseen Kubernetesin avoimen lähdekoodin projekteihin, kuten Kubeflow ja AWS SageMaker Controller for k8s. Vapaa-ajallani pelaan PC-pelejä ja näpertelen VR:ää Unity-moottorilla.

Hybridi-ML-työnkulkujen käyttöönotto Amazon EKS:ssä ja Amazon SageMakerissa yhdellä napsautuksella Kubeflow:lla AWS:n käyttöönotossa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Rahul Kharse on ohjelmistokehitysinsinööri Amazon Web Services -palvelussa. Hänen työnsä keskittyy AWS-palvelujen integroimiseen avoimen lähdekoodin ML Ops -alustoille niiden skaalautuvuuden, luotettavuuden ja turvallisuuden parantamiseksi. Sen lisäksi, että Rahul keskittyy asiakkaiden ominaisuuksiin liittyviin pyyntöihin, hän nauttii myös alan uusimman teknologian kehityksen kokeilemisesta.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen