Ettersom flere og flere kunder ønsker å sette maskinlæring (ML) arbeidsbelastninger i produksjon, er det et stort press i organisasjoner for å forkorte utviklingslivssyklusen til ML-kode. Mange organisasjoner foretrekker å skrive ML-koden sin i en produksjonsklar stil i form av Python-metoder og klasser i motsetning til en utforskende stil (skrive kode uten å bruke metoder eller klasser) fordi dette hjelper dem å sende produksjonsklar kode raskere.
Med Amazon SageMaker, kan du bruke @fjerndekoratør å kjøre en SageMaker-treningsjobb ganske enkelt ved å kommentere Python-koden din med en @remote-dekorator. De SageMaker Python SDK vil automatisk oversette det eksisterende arbeidsmiljøet ditt og all tilhørende databehandlingskode og datasett til en SageMaker-opplæringsjobb som kjører på SageMaker-treningsplattformen.
Å kjøre en Python-funksjon lokalt krever ofte flere avhengigheter, som kanskje ikke følger med det lokale Python-kjøretidsmiljøet. Du kan installere dem via pakke- og avhengighetsadministrasjonsverktøy som pip or leilighet.
Imidlertid opererer organisasjoner i regulerte bransjer som bank, forsikring og helsevesen i miljøer som har strenge kontroller for datavern og nettverk. Disse kontrollene krever ofte at de ikke har internettilgang tilgjengelig for noen av deres miljøer. Grunnen til en slik begrensning er å ha full kontroll over utgående og inngående trafikk, slik at de kan redusere sjansene for at skruppelløse aktører sender eller mottar ikke-verifisert informasjon gjennom nettverket deres. Det er ofte også pålagt å ha slik nettverksisolasjon som en del av de auditive og industrielle samsvarsreglene. Når det gjelder ML, begrenser dette dataforskere fra å laste ned en hvilken som helst pakke fra offentlige depoter som PyPI, Anacondaeller Conda-Forge.
For å gi dataforskere tilgang til verktøyene de selv velger, samtidig som de respekterer begrensningene i miljøet, setter organisasjoner ofte opp sitt eget private pakkelager som er vert i deres eget miljø. Du kan sette opp private pakkelager på AWS på flere måter:
I dette innlegget fokuserer vi på det første alternativet: bruk av CodeArtifact.
Løsningsoversikt
Følgende arkitekturdiagram viser løsningsarkitekturen.
Trinnene på høyt nivå for å implementere løsningen er som følger
- Sett opp en virtuell privat sky (VPC) uten internettilgang ved å bruke en AWS skyformasjon mal.
- Bruk en andre CloudFormation-mal for å sette opp CodeArtifact som et privat PyPI-lager og gi tilkobling til VPC-en, og sett opp en Amazon SageMaker Studio miljø for å bruke det private PyPI-depotet.
- Trene en klassifiseringsmodell basert på MNIST datasett ved hjelp av en @remote-dekorator fra åpen kildekode SageMaker Python SDK. Alle avhengighetene vil bli lastet ned fra det private PyPI-depotet.
Merk at bruk av SageMaker Studio i dette innlegget er valgfritt. Du kan velge å jobbe i et hvilket som helst integrert utviklingsmiljø (IDE) du ønsker. Du trenger bare å sette opp din AWS kommandolinjegrensesnitt (AWS CLI) legitimasjon riktig. For mer informasjon, se Konfigurer AWS CLI.
Forutsetninger
Du trenger en AWS-konto med en AWS identitets- og tilgangsadministrasjon (JEG ER) rolle med tillatelser til å administrere ressurser opprettet som en del av løsningen. For detaljer, se Opprette en AWS-konto.
Sett opp en VPC uten internettforbindelse
Opprett en ny CloudFormation-stabel bruker vpc.yaml mal. Denne malen oppretter følgende ressurser:
- En VPC med to private undernett over to tilgjengelighetssoner uten internettforbindelse
- Et Gateway VPC-endepunkt for tilgang til Amazon S3
- Grensesnitt VPC-endepunkter for SageMaker, CodeArtifact og noen få andre tjenester for å tillate ressursene i VPC å koble til AWS-tjenester via AWS PrivateLink
Oppgi et stabelnavn, for eksempel No-Internet
, og fullfør stabelopprettingsprosessen.
Vent til stabelopprettingsprosessen er fullført.
Sett opp et privat depot og SageMaker Studio ved hjelp av VPC
Det neste trinnet er å distribuere en annen CloudFormation-stabel ved å bruke sagemaker_studio_codeartifact.yaml mal. Denne malen oppretter følgende ressurser:
Oppgi et stabelnavn og behold standardverdiene eller juster parametrene for CodeArtifact domenenavn, navn på privat depot, brukerprofilnavn for SageMaker Studio, og navn for det oppstrøms offentlige PyPI-depotet. Du må også sørge for VPC-stabelnavn opprettet i forrige trinn.
Når stabelen er fullført, skal SageMaker-domenet være synlig på SageMaker-konsollen.
For å bekrefte at det ikke er noen Internett-tilkobling tilgjengelig i SageMaker Studio, lanser SageMaker Studio. Velg File
, New
og Terminal
for å starte en terminal og prøve å curl enhver internettressurs. Den skal ikke kunne kobles til, som vist i følgende skjermbilde.
Tren en bildeklassifiserer ved å bruke en @remote-dekorator med det private PyPI-depotet
I denne delen bruker vi @remote decorator til å kjøre en PyTorch opplæringsjobb som produserer en MNIST bildeklassifiseringsmodell. For å oppnå dette setter vi opp en konfigurasjonsfil, utvikler opplæringsskriptet og kjører opplæringskoden.
Sett opp en konfigurasjonsfil
Vi satte opp en config.yaml
fil og oppgi konfigurasjonene som trengs for å gjøre følgende:
- Kjør a SageMaker treningsjobb i VPC uten internett opprettet tidligere
- Last ned de nødvendige pakkene ved å koble til det private PyPI-depotet som ble opprettet tidligere
Filen ser ut som følgende kode:
De Dependencies
feltet inneholder banen til requirements.txt
, som inneholder alle nødvendige avhengigheter. Merk at alle avhengighetene vil bli lastet ned fra det private depotet. De requirements.txt
filen inneholder følgende kode:
De PreExecutionCommands
delen inneholder kommandoen for å koble til det private PyPI-depotet. For å få CodeArtifact VPC-endepunkt-URL, bruk følgende kode:
Generelt får vi to VPC-endepunkter for CodeArtifact, og vi kan bruke hvilket som helst av dem i tilkoblingskommandoene. For flere detaljer, se Bruk CodeArtifact fra en VPC.
I tillegg kan konfigurasjoner som execution role
, output location
og VPC configurations
er gitt i konfigurasjonsfilen. Disse konfigurasjonene er nødvendige for å kjøre SageMaker-opplæringsjobben. For å vite mer om alle konfigurasjonene som støttes, se Konfigurasjonsfil.
Det er ikke obligatorisk å bruke config.yaml
fil for å jobbe med @remote decorator. Dette er bare en renere måte å levere alle konfigurasjoner til @remote-dekoratøren. Alle konfigurasjonene kan også leveres direkte i dekoratørargumentene, men det reduserer lesbarheten og vedlikeholdbarheten av endringer i det lange løp. Konfigurasjonsfilen kan også opprettes av en administrator og deles med alle brukerne i et miljø.
Utvikle treningsskriptet
Deretter forbereder vi treningskoden i enkle Python-filer. Vi har delt inn koden i tre filer:
- load_data.py – Inneholder koden for å laste ned MNIST-datasettet
- modell.py – Inneholder koden for den nevrale nettverksarkitekturen for modellen
- train.py – Inneholder koden for opplæring av modellen ved å bruke load_data.py og model.py
In train.py
, må vi dekorere hovedtreningsfunksjonen som følger:
Nå er vi klare til å kjøre treningskoden.
Kjør treningskoden med en @remote decorator
Vi kan kjøre koden fra en terminal eller fra en hvilken som helst kjørbar ledetekst. I dette innlegget bruker vi en SageMaker Studio notatbokcelle for å demonstrere dette:
Å kjøre den foregående kommandoen utløser treningsjobben. I loggene kan vi se at det laster ned pakkene fra det private PyPI-depotet.
Dette avslutter implementeringen av en @remote-dekoratør som arbeider med et privat depot i et miljø uten internettilgang.
Rydd opp
For å rydde opp i ressursene, følg instruksjonene i OPPRYDNING.md.
konklusjonen
I dette innlegget lærte vi hvordan du effektivt kan bruke @remote-dekoratørens evner mens du fortsatt jobber i restriktive miljøer uten internettilgang. Vi lærte også hvordan vi kan integrere CodeArtifact private repository-funksjoner ved hjelp av konfigurasjonsfilstøtte i SageMaker. Denne løsningen gjør iterativ utvikling mye enklere og raskere. En annen ekstra fordel er at du fortsatt kan fortsette å skrive opplæringskoden på en mer naturlig, objektorientert måte og fortsatt bruke SageMaker-funksjoner til å kjøre opplæringsjobber på en ekstern klynge med minimale endringer i koden. All koden som vises som en del av dette innlegget er tilgjengelig i GitHub repository.
Som et neste trinn oppfordrer vi deg til å sjekke ut @remote decorator funksjonalitet og Python SDK API og bruk den i ditt valg av miljø og IDE. Ytterligere eksempler er tilgjengelige i amazon-sagemaker-eksempler repository for å komme raskt i gang. Du kan også sjekke innlegget Kjør din lokale maskinlæringskode som Amazon SageMaker Training-jobber med minimale kodeendringer for mer informasjon.
Om forfatteren
Vikesh Pandey er en maskinlæringsspesialist løsningsarkitekt hos AWS, og hjelper kunder fra finansnæringer med å designe og bygge løsninger på generativ AI og ML. Utenom jobben liker Vikesh å prøve ut forskjellige retter og drive med utendørssport.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk deg selv. Tilgang her.
- PlatoAiStream. Web3 Intelligence. Kunnskap forsterket. Tilgang her.
- PlatoESG. Bil / elbiler, Karbon, CleanTech, Energi, Miljø, Solenergi, Avfallshåndtering. Tilgang her.
- BlockOffsets. Modernisering av eierskap for miljøkompensasjon. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/access-private-repos-using-the-remote-decorator-for-amazon-sagemaker-training-workloads/
- :er
- :ikke
- $OPP
- 1
- 10
- 100
- 12
- 23
- 7
- 8
- a
- Om oss
- adgang
- Tilgang
- Logg inn
- Oppnå
- tvers
- aktører
- la til
- Ytterligere
- admin
- Fordel
- AI
- Alle
- tillate
- også
- Amazon
- Amazon SageMaker
- Amazon Web Services
- an
- og
- En annen
- noen
- api
- arkitektur
- ER
- argumenter
- AS
- assosiert
- At
- automatisk
- tilgjengelighet
- tilgjengelig
- AWS
- Banking
- basert
- BE
- fordi
- bygge
- men
- by
- CAN
- evner
- sjansene
- Endringer
- sjekk
- valg
- Velg
- klasser
- klassifisering
- Cloud
- Cluster
- kode
- COM
- Kom
- kommer
- fullføre
- samsvar
- Konfigurasjon
- Koble
- Tilkobling
- tilkobling
- Tilkobling
- Konsoll
- inneholder
- fortsette
- kontroll
- kontroller
- kunne
- opprettet
- skaper
- skaperverket
- Credentials
- Kunder
- dato
- personvern
- databehandling
- datasett
- Misligholde
- demonstrere
- Avhengighet
- utplassere
- utforming
- detaljer
- utvikle
- Utvikling
- forskjellig
- direkte
- Divided
- do
- domene
- nedlasting
- effektivt
- oppmuntre
- Endpoint
- Miljø
- miljøer
- epoker
- eksempler
- gjennomføring
- eksisterende
- FAIL
- falsk
- raskere
- Noen få
- felt
- filet
- Filer
- finansiell
- finansnæringer
- Først
- Flyte
- Fokus
- følge
- etter
- følger
- Til
- skjema
- fra
- fullt
- funksjon
- gateway
- generative
- Generativ AI
- få
- Gruppe
- Ha
- å ha
- helsetjenester
- hjelpe
- hjelpe
- hjelper
- høyt nivå
- vert
- Hvordan
- Hvordan
- HTML
- http
- HTTPS
- ID
- Identitet
- bilde
- Bildeklassifisering
- iverksette
- gjennomføring
- in
- industriell
- bransjer
- informasjon
- installere
- instruksjoner
- forsikring
- integrere
- integrert
- Internet
- Internettilgang
- Internett-tilkobling
- inn
- isolasjon
- IT
- Jobb
- Jobb
- jpg
- bare
- Hold
- Vet
- stor
- lansere
- lært
- læring
- Livssyklus
- i likhet med
- linje
- lokal
- lokalt
- Logg inn
- Lang
- ser
- UTSEENDE
- maskin
- maskinlæring
- Hoved
- GJØR AT
- administrer
- ledelse
- styringsverktøy
- Mandat
- obligatorisk
- mange
- Kan..
- metoder
- minimal
- ML
- modell
- Moduler
- mer
- mye
- flere
- navn
- innfødt
- Naturlig
- Trenger
- nødvendig
- nettverk
- nettverk
- nevrale nettverket
- Ny
- neste
- Nei.
- bærbare
- of
- ofte
- on
- åpen kildekode
- betjene
- drift
- motsetning
- Alternativ
- or
- rekkefølge
- organisasjoner
- Annen
- ut
- utenfor
- enn
- egen
- pakke
- pakker
- parametere
- del
- banen
- tillatelser
- Sted
- plattform
- plato
- Platon Data Intelligence
- PlatonData
- spiller
- Post
- trekker
- Forbered
- forrige
- privatliv
- privat
- prosess
- prosessering
- produserer
- Produksjon
- Profil
- gi
- forutsatt
- offentlig
- Skyv
- sette
- Python
- pytorch
- raskt
- klar
- grunnen til
- mottak
- redusere
- reduserer
- regulert
- regulerte næringer
- fjernkontroll
- Repository
- påkrevd
- Krever
- ressurs
- Ressurser
- respektere
- begrensning
- restriksjoner
- restriktiv
- Rolle
- regler
- Kjør
- rennende
- går
- sagemaker
- forskere
- SDK
- Sekund
- Seksjon
- sikkerhet
- se
- seed
- sending
- Tjenester
- sett
- flere
- delt
- SKIP
- bør
- vist
- Viser
- Enkelt
- enklere
- ganske enkelt
- So
- løsning
- Solutions
- spesialist
- Sports
- stable
- startet
- Trinn
- Steps
- Still
- oppbevare
- Streng
- studio
- stil
- subnett
- subnett
- slik
- medfølgende
- levere
- støtte
- Støttes
- mal
- terminal
- Det
- De
- deres
- Dem
- Der.
- Disse
- de
- denne
- tre
- Gjennom
- til
- verktøy
- Torchvision
- trafikk
- Kurs
- oversette
- sant
- prøve
- to
- samvittighetsløs
- URL
- bruke
- brukt
- Brukere
- ved hjelp av
- Verdier
- verifisere
- av
- virtuelle
- synlig
- Vei..
- måter
- we
- web
- webtjenester
- når
- hvilken
- mens
- Wikipedia
- vil
- med
- uten
- Arbeid
- arbeid
- skrive
- skriving
- yaml
- Du
- Din
- zephyrnet
- soner