Tässä viestissä osoitamme miten Kubeflow AWS:ssä (Kubeflow:n AWS-spesifinen jakelu), jota käytetään kanssa AWS Deep Learning Containers ja Amazonin elastinen tiedostojärjestelmä (Amazon EFS) yksinkertaistaa yhteistyötä ja tarjoaa joustavuutta syvän oppimismallien koulutuksessa laajassa mittakaavassa molemmissa Amazonin elastisten kuberneettien palvelu (Amazon EKS) ja Amazon Sage Maker hyödyntäen hybridiarkkitehtuuria.
Koneoppimisen (ML) kehitys perustuu monimutkaisiin ja jatkuvasti kehittyviin avoimen lähdekoodin kehyksiin ja työkalupakkeihin sekä monimutkaisiin ja jatkuvasti kehittyviin laitteistoekosysteemeihin. Tämä on haaste, kun ML-kehitys skaalataan klusteriin. Säiliöt tarjoavat ratkaisun, koska ne voivat kapseloida koulutuskoodin lisäksi koko riippuvuuspinon laitteistokirjastoihin asti. Tämä varmistaa johdonmukaisen ja kannettavan ML-ympäristön ja helpottaa koulutusympäristön toistettavuutta koulutusklusterin jokaisessa yksittäisessä solmussa.
Kubernetes on laajalti käytetty järjestelmä näiden konttisovellusten infrastruktuurin käyttöönoton, resurssien skaalauksen ja hallinnan automatisointiin. Kubernetesia ei kuitenkaan luotu ML:ää ajatellen, joten se voi tuntua tietotutkijoille ristiriitaiselta, koska se on voimakkaasti riippuvainen YAML-määritystiedostoista. Ei ole olemassa Jupyter-kokemusta, eikä monia ML-kohtaisia ominaisuuksia, kuten työnkulun hallintaa ja putkia, ja muita ominaisuuksia, joita ML-asiantuntijat odottavat, kuten hyperparametrien viritys, mallin isännöinti ja muut. Tällaisia ominaisuuksia voidaan rakentaa, mutta Kubernetes ei ollut suunniteltu tekemään tätä ensisijaisena tavoitteenaan.
Avoimen lähdekoodin yhteisö huomasi ja kehitti Kubernetesin päälle kerroksen nimeltä Kubeflow. Kubeflow pyrkii tekemään päästä-päähän ML-työnkulkujen käyttöönotosta Kubernetesissa yksinkertaista, kannettavaa ja skaalautuvaa. Voit käyttää Kubeflowa luokkansa parhaiden avoimen lähdekoodin järjestelmien käyttöönottoon ML:ssä erilaisissa infrastruktuureissa.
Kubeflow ja Kubernetes tarjoavat joustavuutta ja hallintaa datatutkijaryhmille. Suuressa mittakaavassa toimivien koulutusklustereiden korkean käyttöasteen varmistaminen pienemmillä käyttökustannuksilla on kuitenkin edelleen haastavaa.
Tämä viesti osoittaa, kuinka asiakkaat, joilla on paikallisia rajoituksia tai olemassa olevia Kubernetes-investointeja, voivat vastata tähän haasteeseen käyttämällä Amazon EKS:ää ja Kubeflowa AWS:ssä ottamaan käyttöön ML-putkilinjan hajautettuun koulutukseen, joka perustuu itsehallittuun lähestymistapaan, ja käyttämällä täysin hallittua SageMakeria kustannusoptimoitu, täysin hallittu ja tuotantolaajuinen koulutusinfrastruktuuri. Tämä sisältää hajautetun hybridi-koulutusarkkitehtuurin vaiheittaisen toteutuksen, jonka avulla voit valita kahdesta lähestymistavasta ajon aikana, mikä tarjoaa maksimaalisen hallinnan ja joustavuuden tiukoilla käyttöönottotarpeilla. Näet, kuinka voit jatkaa avoimen lähdekoodin kirjastojen käyttöä syväoppimisskriptissäsi ja tehdä siitä silti yhteensopivan käytettäväksi sekä Kubernetesissa että SageMakerissa alustan agnostisella tavalla.
Miten Kubeflow AWS:ssä ja SageMakerissa auttaa?
Neuroverkkomallit, jotka on rakennettu syväoppimiskehyksillä, kuten TensorFlow, PyTorch, MXNet ja muut, tarjoavat paljon paremman tarkkuuden käyttämällä huomattavasti suurempia koulutustietojoukkoja, erityisesti tietokonenäön ja luonnollisen kielen käsittelyn käyttötapauksissa. Suurilla koulutustietojoukoilla syväoppimismallien kouluttaminen kestää kuitenkin kauemmin, mikä lopulta hidastaa markkinoille tuloa. Jos voisimme skaalata klusteria ja lyhentää mallin koulutusaikaa viikoista päiviin tai tunteihin, sillä voisi olla valtava vaikutus tuottavuuteen ja liiketoiminnan nopeuteen.
Amazon EKS auttaa järjestämään hallitun Kubernetes-ohjaustason. Amazon EKS:n avulla voit luoda suuria koulutusklustereita CPU- ja GPU-esiintymillä ja käyttää Kubeflow-työkalupakkia tarjotaksesi ML-ystävällisiä, avoimen lähdekoodin työkaluja ja operoitavaksesi ML-työnkulkuja, jotka ovat kannettavia ja skaalautuvia Kubeflow Pipelinesin avulla tiimisi tuottavuuden parantamiseksi ja lyhentää markkinoille tuloaikaa.
Tällä lähestymistavalla voi kuitenkin olla pari haastetta:
- Varmistetaan klusterin maksimaalinen käyttö datatieteiden ryhmien välillä. Sinun tulisi esimerkiksi tarjota GPU-esiintymiä pyynnöstä ja varmistaa niiden korkea käyttöaste vaativiin tuotantolaajuisiin tehtäviin, kuten syväoppimiskoulutukseen, ja käyttää CPU-esiintymiä vähemmän vaativiin tehtäviin, kuten tietojen esikäsittelyyn.
- Kubernetes-klusterin työntekijäsolmussa käyttöönotettujen raskaiden Kubeflow-infrastruktuurikomponenttien korkean käytettävyyden varmistaminen, mukaan lukien tietokanta, tallennustila ja todennus. Esimerkiksi Kubeflow-ohjaustaso luo artefakteja (kuten MySQL-ilmentymiä, pod-lokeja tai MinIO-tallennustilaa), jotka kasvavat ajan myötä ja tarvitsevat muutettavaa tallennustilaa jatkuvalla valvontatoiminnolla.
- Koulutustietojoukon, koodin ja laskentaympäristöjen jakaminen kehittäjien, koulutusklustereiden ja projektien välillä on haastavaa. Jos esimerkiksi työskentelet oman kirjastosi parissa ja näillä kirjastoilla on vahvat keskinäiset riippuvuudet, on todella vaikeaa jakaa ja ajaa samaa koodinpätkää saman tiimin datatieteilijöiden välillä. Lisäksi jokainen harjoitusajo edellyttää harjoitustietojoukon lataamista ja harjoituskuvan rakentamista uusilla koodimuutoksilla.
Kubeflow on AWS auttaa vastaamaan näihin haasteisiin ja tarjoaa yritystason puolihallitun Kubeflow-tuotteen. AWS:n Kubeflown avulla voit korvata jotkin Kubeflow-ohjaustason palvelut, kuten tietokanta, tallennus, valvonta ja käyttäjien hallinta AWS-hallituilla palveluilla, kuten Amazon Relational Database -palvelu (Amazon RDS), Amazonin yksinkertainen tallennuspalvelu (Amazon S3), Amazonin elastinen tiedostojärjestelmä (Amazon EFS), Amazon FSx, amazonin pilvikelloja Amazon Cognito.
Näiden Kubeflow-komponenttien vaihtaminen erottaa Kubeflow-ohjaustason kriittiset osat Kubernetesista ja tarjoaa turvallisen, skaalautuvan, joustavan ja kustannusoptimoidun suunnittelun. Tämä lähestymistapa vapauttaa myös tallennus- ja laskentaresursseja EKS-tietotasosta, joita voivat tarvita sovellukset, kuten hajautettu mallikoulutus tai käyttäjän muistikirjapalvelimet. AWS:n Kubeflow tarjoaa myös alkuperäisen Jupyter-kannettavien Deep Learning Container (DLC) -kuvien integroinnin, jotka on valmiiksi pakattu ja esikonfiguroitu AWS-optimoiduilla syväoppimiskehyksillä, kuten PyTorch ja TensorFlow, joiden avulla voit aloittaa harjoituskoodin kirjoittamisen heti ilman käsittelyä. riippuvuusratkaisuilla ja kehysoptimoinneilla. Lisäksi Amazon EFS -integraatio koulutusklusterien ja kehitysympäristön kanssa mahdollistaa koodin ja käsitellyn harjoitustietojoukon jakamisen, jolloin vältytään säiliökuvan rakentamisesta ja valtavien tietojoukkojen lataamisesta jokaisen koodinvaihdon jälkeen. Nämä integraatiot Kubeflow on AWS:n kanssa auttavat sinua nopeuttamaan mallin rakentamista ja harjoittelua ja mahdollistavat paremman yhteistyön helpomman tiedon ja koodin jakamisen ansiosta.
Kubeflow AWS:ssä auttaa rakentamaan erittäin saatavilla olevan ja vankan ML-alustan. Tämä alusta tarjoaa joustavuutta syväoppimismallien rakentamiseen ja kouluttamiseen ja tarjoaa pääsyn moniin avoimen lähdekoodin työkalupakkeihin, oivalluksia lokeihin ja interaktiivista virheenkorjausta kokeilua varten. Infrastruktuuriresurssien maksimaalisen käytön saavuttaminen samalla kun koulutetaan syvällisiä oppimismalleja sadoilla GPU:illa, vaatii silti paljon käyttökustannuksia. Tämä voidaan ratkaista käyttämällä SageMakeria, joka on täysin hallittu palvelu, joka on suunniteltu ja optimoitu käsittelemään tehokkaita ja kustannusoptimoituja koulutusklustereita, jotka tarjotaan vain pyydettäessä, skaalataan tarpeen mukaan ja suljetaan automaattisesti töiden valmistuttua, mikä tarjoaa lähes 100 % resurssien käyttöaste. Voit integroida SageMakerin Kubeflow Pipelinesiin käyttämällä hallittuja SageMaker-komponentteja. Tämän avulla voit käyttää ML-työnkulkuja osana Kubeflow-putkistoja, joissa voit käyttää Kubernetesia paikalliseen koulutukseen ja SageMakeria tuotelaajuiseen koulutukseen hybridiarkkitehtuurissa.
Ratkaisun yleiskatsaus
Seuraavassa arkkitehtuurissa kuvataan, kuinka käytämme Kubeflow-putkia kannettavien ja skaalautuvien päästä-päähän ML-työnkulkujen luomiseen ja ottamiseen käyttöön ehdollisesti hajautetun koulutuksen suorittamiseksi Kubernetesissa Kubeflow-koulutuksen tai SageMakerin avulla ajonaikaisen parametrin perusteella.
Kubeflow-koulutus on ryhmä Kubernetes-operaattoreita, jotka lisäävät Kubeflow:hon tuen ML-mallien hajautettuun koulutukseen käyttämällä erilaisia kehyksiä, kuten TensorFlow, PyTorch ja muut. pytorch-operator
on Kubernetesin Kubeflow-toteutus mukautettu resurssi (PyTorchJob) suorittaakseen hajautettuja PyTorch-koulutustöitä Kubernetesissa.
Käytämme PyTorchJob Launcher -komponenttia osana Kubeflow-putkilinjaa PyTorchin hajautetun koulutuksen suorittamiseen kokeiluvaiheen aikana, kun tarvitsemme joustavuutta ja pääsyä kaikkiin taustalla oleviin resursseihin interaktiivista virheenkorjausta ja analysointia varten.
Käytämme myös SageMaker-komponentteja Kubeflow Pipelinesille mallikoulutuksen suorittamiseen tuotantomittakaavassa. Tämän ansiosta voimme hyödyntää tehokkaita SageMaker-ominaisuuksia, kuten täysin hallittuja palveluita, hajautettuja koulutustöitä maksimaalisella GPU-käytöllä ja kustannustehokasta koulutusta Amazonin elastinen laskentapilvi (Amazon EC2).
Osana työnkulun luontiprosessia suoritat seuraavat vaiheet (edellisessä kaaviossa esitetyllä tavalla) luodaksesi tämän liukuhihnan:
- Käytä Kubeflow-luettelotiedostoa Kubeflow-hallintapaneelin luomiseen ja Jupyter-muistikirjojen käyttämiseen Kubeflow-keskuksen hallintapaneelista.
- Käytä Kubeflow-liukuhihna SDK:ta Kubeflow-putkilinjojen luomiseen ja kääntämiseen Python-koodilla. Pipeline-käännös muuntaa Python-funktion työnkulkuresurssiksi, joka on Argo-yhteensopiva YAML-muoto.
- Käytä Kubeflow Pipelines SDK -asiakasta kutsuaksesi liukuhihnapalvelun päätepisteen suorittamaan liukuhihnan.
- Liukuhihna arvioi ehdolliset ajonaikaiset muuttujat ja valitsee SageMakerin tai Kubernetesin kohdeajoympäristöksi.
- Käytä Kubeflow PyTorch Launcher -komponenttia suorittaaksesi hajautettua koulutusta alkuperäisessä Kubernetes-ympäristössä tai käytä SageMaker-komponenttia koulutuksen lähettämiseen SageMaker-hallitulla alustalla.
Seuraavassa kuvassa näkyvät arkkitehtuuriin liittyvät Kubeflow Pipelines -komponentit, jotka antavat meille joustavuuden valita hajautetun Kubernetes- tai SageMaker-ympäristön välillä.
Käytä Case-työnkulkua
Käytämme seuraavaa vaiheittaista lähestymistapaa asentaaksemme ja suorittaaksemme hajautetun koulutuksen käyttötapauksen Amazon EKS:n ja SageMakerin avulla Kubeflowa AWS:ssä.
Edellytykset
Tätä kävelyä varten sinulla tulisi olla seuraavat edellytykset:
- An AWS-tili.
- Kone, jossa on Docker ja AWS-komentoriviliitäntä (AWS CLI) asennettuna.
- 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 Cloud9-ympäristöstäsi plusmerkki ja avaa uusi pääte.
- Luo rooli nimi
sagemakerrole
. Lisää hallinnoidut käytännötAmazonSageMakerFullAccess
jaAmazonS3FullAccess
antaa SageMakerille pääsyn S3-ämpäriin. Tätä roolia käyttää osana Kubeflow Pipelines -vaihetta lähetetty SageMaker-työ. - Varmista, että tililläsi on SageMaker Training -resurssityyppirajoitus
ml.p3.2xlarge
nostettiin 2 käytettäviksi Palvelukiintiöiden konsoli
1. Asenna Amazon EKS ja Kubeflow AWS:ään
Voit käyttää useita erilaisia lähestymistapoja Kubernetes-klusterin rakentamiseen ja Kubeflow:n käyttöönottoon. Tässä viestissä keskitymme lähestymistapaan, jonka uskomme tuovan prosessiin yksinkertaisuutta. Ensin luomme EKS-klusterin, jonka jälkeen otamme käyttöön Kubeflown AWS v1.5:ssä. Jokaisessa näistä tehtävistä käytämme vastaavaa avoimen lähdekoodin projektia, joka noudattaa periaatteita Tee Framework. Sen sijaan, että asentaisimme joukon edellytyksiä kullekin tehtävälle, rakennamme Docker-säiliöitä, joissa on kaikki tarvittavat työkalut ja jotka suorittavat tehtävät säilöistä käsin.
Käytämme tässä viestissä Do Frameworkia, joka automatisoi Kubeflow-asennuksen Amazon EFS:n lisäosana. Katso viralliset Kubeflow on AWS -käyttöönottovaihtoehdot tuotantokäyttöönottoa varten käyttöönoton.
Määritä nykyinen työhakemisto ja AWS CLI
Määritämme työhakemiston, jotta voimme viitata siihen seuraavien vaiheiden lähtökohtana:
Määritämme myös AWS CLI -profiilin. 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:
1.1 Luo EKS-klusteri
Jos sinulla on jo EKS-klusteri saatavilla, voit siirtyä seuraavaan osioon. Tässä viestissä käytämme aws-do-eks -projekti luodaksemme klusterin.
- Kloonaa projekti ensin työhakemistoosi
- Rakenna ja käytä sitten
aws-do-eks
kontti:-
build.sh
script luo Docker-säilökuvan, jossa on kaikki tarvittavat työkalut ja komentosarjat EKS-klusterien hallintaan ja toimintaan. Therun.sh
komentosarja käynnistää säilön käyttämällä luotua Docker-kuvaa ja pitää sen yllä, jotta voimme käyttää sitä EKS-hallintaympäristönä. Nähdäksesi tilanaws-do-eks
kontti, voit juosta./status.sh
. Jos säilö on Exited-tilassa, voit käyttää./start.sh
komentosarja, joka tuo säilön esiin tai käynnistä säilön uudelleen, voit suorittaa./stop.sh
jälkeen./run.sh
. - Avaa kuori käynnissä
aws-do-eks
kontti: - Tarkistaaksesi KubeFlow-asennuksen EKS-klusterin kokoonpanon, suorita seuraava komento:
Oletuksena tämä kokoonpano luo klusterin nimeltä
eks-kubeflow
vuonnaus-west-2
Alue kuudella m5.xlarge solmulla. Myöskään EBS-taltioiden salaus ei ole oletusarvoisesti käytössä. Voit ottaa sen käyttöön lisäämällä"volumeEncrypted: true"
solmuryhmään ja se salaa oletusavaimella. Muokkaa muita kokoonpanoasetuksia tarvittaessa. - Luo klusteri suorittamalla seuraava komento:
Klusterin valmisteluprosessi voi kestää jopa 30 minuuttia.
- Varmista, että klusterin luominen onnistui, suorittamalla seuraava komento:
Edellisen komennon tulos onnistuneesti luodulle klusterille näyttää seuraavalta koodilta:
Luo EFS-osio SageMaker-koulutustyötä varten
Tässä käyttötapauksessa nopeutat SageMaker-harjoitustyötä kouluttamalla syväoppimismalleja Amazon EFS:ään jo tallennetuista tiedoista. Tämän valinnan etuna on se, että harjoitustyösi käynnistetään suoraan Amazon EFS:n tiedoista ilman tiedonsiirtoa, mikä nopeuttaa harjoittelun aloitusaikoja.
Luomme EFS-taltion ja otamme käyttöön EFS Container Storage Interface (CSI) -ohjaimen. Tämä suoritetaan käyttöönoton komentosarjalla, joka sijaitsee paikassa /eks/deployment/csi/efs
puitteissa aws-do-eks
astiaan.
Tämä komentosarja olettaa, että tililläsi on yksi EKS-klusteri. Aseta CLUSTER_NAME=
jos sinulla on useampi kuin yksi EKS-klusteri.
Tämä komentosarja muodostaa EFS-taltion ja luo asennuskohteita klusterin VPC:n aliverkoille. Sen jälkeen se ottaa käyttöön EFS CSI -ohjaimen ja luo efs-sc
varastointiluokka ja efs-pv
jatkuva volyymi EKS-klusterissa.
Kun komentosarja on suoritettu onnistuneesti, sinun pitäisi nähdä seuraavanlainen tuloste:
Luo Amazon S3 VPC -päätepiste
Käytät yksityistä VPC:tä, johon SageMaker-koulutustyölläsi ja EFS-tiedostojärjestelmälläsi on pääsy. Voit antaa SageMaker-koulutusklusterille pääsyn yksityisen VPC:n S3-ämpäriin luomalla VPC-päätepisteen:
Voit nyt poistua aws-do-eks
säiliön kuori ja siirry seuraavaan osaan:
1.2 Ota Kubeflow käyttöön AWS:ssä Amazon EKS:ssä
Käytämme Kubeflow:n käyttöönottoa Amazon EKS:ssä aws-do-kubeflow-projekti.
- Kloonaa arkisto seuraavilla komennoilla:
- Määritä sitten projekti:
Tämä komentosarja avaa projektin määritystiedoston tekstieditorissa. Se on tärkeää AWS_REGION asetetaan alueelle, jossa klusterisi on, sekä AWS_CLUSTER_NAME vastaamaan aiemmin luomasi klusterin nimeä. Oletuksena kokoonpanosi on jo asetettu oikein, joten jos sinun ei tarvitse tehdä muutoksia, sulje editori.
-
build.sh
komentosarja luo Docker-säilökuvan, jossa on kaikki työkalut, joita tarvitaan Kubeflown käyttöönottoon ja hallintaan olemassa olevassa Kubernetes-klusterissa. Therun.sh
script käynnistää säilön käyttämällä Docker-kuvaa ja exec.sh-skripti avaa komentotulkin säilöön, jota voimme käyttää Kubeflow-hallintaympäristönä. Voit käyttää./status.sh
skripti nähdäksesi, onkoaws-do-kubeflow
kontti on käynnissä ja./stop.sh
ja./run.sh
komentosarjat käynnistääksesi sen tarvittaessa uudelleen. - Kun olet avannut kuoren
aws-do-eks
säilössä, voit varmistaa, että määritetty klusterin konteksti on odotetusti: - Ota Kubeflow käyttöön EKS-klusterissa suorittamalla
deploy.sh
käsikirjoitus:Käyttöönotto onnistuu, kun kaikki kubeflow-nimiavaruuden podit siirtyvät Running-tilaan. Tyypillinen tuloste näyttää seuraavalta koodilta:
- Voit seurata KubeFlow-palojen tilaa erillisessä ikkunassa käyttämällä seuraavaa komentoa:
- lehdistö Ctrl + C Kun kaikki podit ovat käynnissä, paljasta Kubeflow-koontinäyttö klusterin ulkopuolelle suorittamalla seuraava komento:
Sinun pitäisi nähdä tulos, joka näyttää seuraavalta koodilta:
Tämä komentoportti välittää Istio-sisääntuloyhdyskäytäväpalvelun klusteristasi paikalliseen porttiin 8080. Voit käyttää Kubeflow-hallintapaneelia osoitteessa http://localhost:8080 ja kirjaudu sisään oletusarvoisilla käyttäjätunnuksilla (user@example.com/12341234). Jos käytät aws-do-kubeflow
kontti AWS Cloud9:ssä, voit valita preview, valitse sitten Esikatsele käynnissä olevaa sovellusta. Jos käytät Docker Desktopia, saatat joutua suorittamaan ./kubeflow-expose.sh
käsikirjoitus ulkopuolella aws-do-kubeflow
astiaan.
2. Määritä Kubeflow on AWS -ympäristö
Luomme EFS-taltion ja Jupyter-muistikirjan Kubeflow on AWS -ympäristön määrittämiseksi.
2.1 Luo EFS-taltio
Voit luoda EFS-taltion suorittamalla seuraavat vaiheet:
- Valitse Kubeflow-hallintapaneelista Volyymit navigointipaneelissa.
- valitsin Uusi volyymi.
- varten Nimi, tulla sisään
efs-sc-claim
. - varten Äänenvoimakkuuden koko, tulla sisään
10
. - varten Varastointiluokka, valitse efs-sc.
- varten Pääsytila, valitse ReadWriteOnce.
- Valita luoda.
2.2 Luo Jupyter-muistikirja
Luo uusi muistikirja suorittamalla seuraavat vaiheet:
- Valitse Kubeflow-hallintapaneelista Kannettavat navigointipaneelissa.
- Valita Uusi muistikirja.
- varten Nimi, tulla sisään
aws-hybrid-nb
. - varten Jupyter Docket -kuva, valitse kuva
c9e4w0g3/notebook-servers/jupyter-pytorch:1.11.0-cpu-py38-ubuntu20.04-e3-v1.1
(viimeisin saatavilla oleva jupyter-pytorch DLC -kuva). - varten prosessori, tulla sisään
1
. - varten Muisti, tulla sisään
5
. - varten GPU, jätä nimellä Ei eristetty.
- Älä tee mitään muutoksia Työtilan tilavuus osiossa.
- In Tietomäärät osiossa, valitse Liitä olemassa oleva taltio ja laajenna Olemassa oleva määrä -osio
- varten Nimi, valitse
efs-sc-claim
. - varten Kiinnityspolku, tulla sisään
/home/jovyan/efs-sc-claim
.
Tämä kiinnittää EFS-taltion Jupyter-muistikirjakoteloosi ja näet kansionefs-sc-claim
Jupyter Lab -käyttöliittymässä. Tallennat harjoitustietojoukon ja harjoituskoodin tähän kansioon, jotta harjoitusklusterit voivat käyttää niitä ilman, että sinun tarvitsee rakentaa säilön kuvia uudelleen testausta varten. - valita Salli pääsy Kubeflow-putkiin Konfigurointi-osiossa.
- Valita Käynnistää.
Varmista, että muistikirjasi on luotu onnistuneesti (se voi kestää muutaman minuutin). - On Kannettavat sivu, valitse kytkeä kirjautuaksesi JupyterLab-ympäristöön.
- On mennä valikosta, valitse Kloonaa arkisto.
- varten Kloonaa repo, tulla sisään
https://github.com/aws-samples/aws-do-kubeflow
.
3. Suorita hajautettu koulutus
Kun olet määrittänyt Jupyter-muistikirjan, voit suorittaa koko esittelyn seuraavien korkean tason vaiheiden avulla kansiosta aws-do-kubeflow/workshop
kloonatussa arkistossa:
- PyTorch Distributed Data Parallel (DDP) -koulutusskripti: Katso PyTorch DDP -koulutusskripti cifar10-distributed-gpu-final.py, joka sisältää mallikonvoluutiohermoverkon ja logiikan koulutuksen jakamiseksi monisolmuisessa CPU- ja GPU-klusterissa. (Katso lisätietoja kohdasta 3.1)
- Asenna kirjastot: Suorita muistikirja
0_initialize_dependencies.ipynb
alustaaksesi kaikki riippuvuudet. (Katso lisätietoja kohdasta 3.2) - Suorita hajautettu PyTorch-työkoulutus Kubernetesissa: Suorita muistikirja
1_submit_pytorchdist_k8s.ipynb
luoda ja lähettää hajautettua koulutusta yhdelle ensisijaiselle ja kahdelle työntekijäsäilölle käyttämällä Kubernetes mukautettua resurssia PyTorchJob YAML-tiedostoa käyttäen Python-koodia. (Katso lisätietoja kohdasta 3.3) - Luo hybridi Kubeflow-putki: Suorita muistikirja
2_create_pipeline_k8s_sagemaker.ipynb
luoda hybridi Kubeflow-putki, joka suorittaa hajautettua koulutusta joko SageMakerissa tai Amazon EKS:ssä ajonaikaisen muuttujan avullatraining_runtime
. (Katso lisätietoja kohdasta 3.4)
Varmista, että käytät muistikirjaa 1_submit_pytorchdist_k8s.ipynb
ennen kuin aloitat muistikirjan 2_create_pipeline_k8s_sagemaker.ipynb
.
Seuraavissa osioissa käsittelemme jokaista näistä vaiheista yksityiskohtaisesti.
3.1 PyTorch Distributed Data Parallel (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ä:
Luomme yksinkertaisen kuvien luokittelumallin käyttämällä konvoluutio-, max pooling- ja lineaaristen kerrosten yhdistelmää, joihin sovelletaan relu-aktivointifunktiota mallikoulutuksen eteenpäin siirtymisessä:
Käytämme taskulamppua DataLoader, joka yhdistää tietojoukon ja DistributedSampler
(lataa datan osajoukon hajautetusti käyttämällä torch.nn.parallel.DistributedDataParallel
) ja tarjoaa yhden tai useamman prosessin iteraattorin tiedoille:
Jos koulutusklusterissa on GPU:ita, komentosarja suorittaa harjoituksen CUDA-laitteissa ja laitemuuttuja sisältää oletusarvoisen CUDA-laitteen:
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.
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.
3.2 Asenna kirjastot
Asennat kaikki tarvittavat kirjastot PyTorchin hajautetun harjoitusesimerkin suorittamiseksi. Tämä sisältää Kubeflow Pipelines SDK:n, Training Operator Python SDK:n, Python-asiakkaan Kubernetesille ja Amazon SageMaker Python SDK:n.
3.3 Suorita hajautettu PyTorch-työkoulutus Kubernetesissa
Muistikirja 1_submit_pytorchdist_k8s.ipynb
luo mukautetun Kubernetes-resurssin PyTorchJob YAML-tiedoston Kubeflow-koulutuksen ja Kubernetes-asiakasohjelman Python SDK:n avulla. Seuraavassa on muutamia tärkeitä katkelmia tästä muistikirjasta.
Luomme PyTorchJob YAML:n ensisijaisella ja työntekijäsäiliöllä seuraavan koodin mukaisesti:
Tämä lähetetään Kubernetes-ohjaustasolle käyttämällä PyTorchJobClient
:
Tarkastele Kubernetes-harjoituslokeja
Voit tarkastella harjoituslokeja joko samasta Jupyter-muistikirjasta Python-koodilla tai Kubernetes-asiakaskuoresta.
3.4 Luo hybridi Kubeflow-putki
Muistikirja 2_create_pipeline_k8s_sagemaker.ipynb
luo hybridi Kubeflow-putkilinjan, joka perustuu ehdolliseen ajonaikamuuttujaan training_runtime
, kuten seuraavassa koodissa näkyy. Muistikirja käyttää Kubeflow Pipelines SDK ja se sisältää joukon Python-paketteja ML-työnkulkuputkien määrittämiseksi ja suorittamiseksi. Osana tätä SDK:ta käytämme seuraavia paketteja:
- Verkkotunnuskohtainen kieli (DSL) -pakettien koristelu
dsl.pipeline
, joka koristaa Python-funktiot palauttamaan liukuhihnan - -
dsl.Condition
paketti, joka edustaa ryhmää toimintoja, jotka suoritetaan vain, kun tietty ehto täyttyy, kuten tarkistetaantraining_runtime
arvo assagemaker
orkubernetes
Katso seuraava koodi:
Konfiguroimme SageMaker-hajautetun koulutuksen käyttämällä kahta ml.p3.2xlarge-instanssia.
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 Pipeline SDK -asiakasohjelmaa, joka kutsuu Pipelines-palvelun päätepisteen ja välittää asianmukaiset todennusotsikot suoraan muistikirjasta. Katso seuraava koodi:
Jos saat sagemaker import
virhe, suorita !pip install sagemaker ja käynnistä ydin uudelleen ( Ydin valikosta, valitse Käynnistä ydin uudelleen).
Valitse Ajon tiedot linkki viimeisen solun alla nähdäksesi Kubeflow-putkilinjan.
Toista putkilinjan luontivaihe training_runtime='kubernetes'
testata putkilinjaa Kubernetes-ympäristössä. The training_runtime
muuttuja voidaan välittää myös CI/CD-liukuhihnassa tuotantoskenaariossa.
Tarkastele SageMaker-komponentin Kubeflow-putkilinjan ajolokeja
Seuraavassa kuvakaappauksessa näkyy SageMaker-komponentin putkistomme tiedot.
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.
Valitse mikä tahansa ryhmä nähdäksesi lokit.
Tarkastele Kubeflow PyTorchJob Launcher -komponentin Kubeflow-putkilinjan ajolokeja
Seuraava kuvakaappaus näyttää Kubeflow-komponenttimme putkilinjan tiedot.
Suorita seuraavat komennot käyttämällä Kubectl
Kubernetes-klusteriin yhdistetyssä Kubernetes-asiakaskuoressa nähdäksesi lokit (korvaa nimiavaruutesi ja pod-nimesi):
4.1 Puhdista
Jotta voimme puhdistaa kaikki tilille luomamme resurssit, meidän on poistettava ne käänteisessä järjestyksessä.
- Poista Kubeflow-asennus suorittamalla
./kubeflow-remove.sh
vuonnaaws-do-kubeflow
kontti. Ensimmäiset komennot ovat valinnaisia ja niitä voidaan käyttää, jos sinulla ei vielä ole komentokuljettaaws-do-kubeflow
kontti auki. - Vuodesta
aws-do-eks
konttikansio, poista EFS-taltio. Ensimmäinen komentosarja on valinnainen ja sitä voidaan käyttää, jos sinulla ei vielä ole komentokuljettaaws-do-eks
kontti auki.Amazon EFS:n poistaminen on välttämätöntä klusteriimme luomaan VPC:hen liittyvän verkkoliittymän vapauttamiseksi. Huomaa, että EFS-taltion poistaminen tuhoaa kaikki siihen tallennetut tiedot.
- Vuodesta
aws-do-eks
kontti, suoritaeks-delete.sh
komentosarja klusterin ja muiden siihen liittyvien resurssien poistamiseksi, mukaan lukien VPC:
Yhteenveto
Tässä viestissä keskustelimme joistakin hajautetun mallikoulutuksen ja ML-työnkulkujen tyypillisistä haasteista. Annoimme yleiskatsauksen Kubeflowsta AWS-jakelussa ja jaoimme kaksi avoimen lähdekoodin projektia (aws-do-eks ja aws-do-kubeflow), jotka yksinkertaistavat infrastruktuurin käyttöönottoa ja Kubeflown käyttöönottoa siinä. Lopuksi kuvailimme ja esittelimme hybridiarkkitehtuurin, joka mahdollistaa työkuormien siirtymisen saumattomasti itsehallitun Kubernetes- ja täysin hallitun SageMaker-infrastruktuurin välillä. Suosittelemme käyttämään tätä hybridiarkkitehtuuria omiin käyttötarkoituksiin.
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.
Erityiset kiitokset Sree Arasanagattalle (ohjelmistokehityspäällikkö AWS ML) ja Suraj Kotalle (ohjelmistokehittäjä) tuesta tämän viestin käynnistämisessä.
Tietoja kirjoittajista
Kanwaljit Khurmi on AI/ML Specialist Solutions -arkkitehti Amazon Web Servicesissä. Hän työskentelee AWS-tuotteen, suunnittelun ja asiakkaiden kanssa tarjotakseen ohjausta ja teknistä apua, joka auttaa heitä parantamaan hybridi-ML-ratkaisujen arvoa AWS:n käytössä. Kanwaljit on erikoistunut auttamaan asiakkaita kontti- ja koneoppimissovelluksissa.
Gautam Kumar on ohjelmistosuunnittelija, jolla on AWS AI Deep Learning. Hän on kehittänyt AWS Deep Learning Containers ja AWS Deep Learning AMI. Hän on intohimoinen tekoälyn työkalujen ja järjestelmien rakentamiseen. Vapaa-ajallaan hän harrastaa pyöräilyä ja kirjojen lukemista.
Alex Iankoulski on täyspinon ohjelmisto- ja infrastruktuuriarkkitehti, joka haluaa tehdä syvällistä, käytännönläheistä työtä. Hän on tällä hetkellä AWS:n itsehallitun koneoppimisen pääratkaisuarkkitehti. Roolissaan hän keskittyy auttamaan asiakkaita ML- ja AI-työkuormien konteinnissa ja organisoinnissa konttikäyttöisissä AWS-palveluissa. Hän on myös avoimen lähdekoodin kirjoittaja Tee puitteet ja Docker-kapteeni, joka rakastaa konttitekniikoiden soveltamista innovaation vauhdittamiseksi ja samalla maailman suurimpien haasteiden ratkaisemiseksi. Viimeisten 10 vuoden aikana Alex on työskennellyt ilmastonmuutoksen torjumiseksi, tekoälyn ja ML:n demokratisoimiseksi, matkustamisen turvallisuuden parantamiseksi, terveydenhuollon parantamiseksi ja energian fiksummaksi.
- Lisäasetukset (300)
- AI
- ai taide
- ai taiteen generaattori
- ai robotti
- Amazon elastinen tiedostojärjestelmä (EFS)
- Amazonin elastisten kuberneettien palvelu
- Amazon Sage Maker
- tekoäly
- tekoälyn sertifiointi
- tekoäly pankkitoiminnassa
- tekoäly robotti
- tekoälyrobotit
- tekoälyohjelmisto
- AWS-pilvi9
- AWS-koneoppiminen
- blockchain
- blockchain-konferenssi ai
- coingenius
- keskustelullinen tekoäly
- kryptokonferenssi ai
- Asiakasratkaisut
- dall's
- syvä oppiminen
- google ai
- koneoppiminen
- Platon
- plato ai
- Platonin tietotieto
- Platon peli
- PlatonData
- platopeliä
- PyTorch AWS: llä
- mittakaava ai
- syntaksi
- zephyrnet