Efterhånden som flere og flere kunder søger at sætte maskinlæring (ML) arbejdsbelastninger i produktion, er der et stort skub i organisationer for at forkorte udviklingslivscyklussen for ML-kode. Mange organisationer foretrækker at skrive deres ML-kode i en produktionsklar stil i form af Python-metoder og klasser i modsætning til en udforskende stil (skrive kode uden at bruge metoder eller klasser), fordi dette hjælper dem med at sende produktionsklar kode hurtigere.
Med Amazon SageMaker, kan du bruge @fjerndekoratør at køre et SageMaker træningsjob blot ved at annotere din Python-kode med en @remote decorator. Det SageMaker Python SDK vil automatisk oversætte dit eksisterende arbejdsmiljø og eventuel tilhørende databehandlingskode og datasæt til et SageMaker træningsjob, der kører på SageMaker træningsplatformen.
At køre en Python-funktion lokalt kræver ofte flere afhængigheder, som muligvis ikke følger med det lokale Python-runtime-miljø. Du kan installere dem via pakke- og afhængighedsstyringsværktøjer som pip or Conda.
Organisationer, der opererer i regulerede brancher som bank, forsikring og sundhedsvæsen, opererer dog i miljøer, der har strenge databeskyttelses- og netværkskontroller på plads. Disse kontroller kræver ofte, at de ikke har adgang til internettet til nogen af deres miljøer. Grunden til en sådan begrænsning er at have fuld kontrol over udgående og indgående trafik, så de kan reducere chancerne for, at skrupelløse aktører sender eller modtager ikke-verificeret information gennem deres netværk. Det er ofte også pålagt at have en sådan netværksisolering som en del af de auditive og industrielle overholdelsesregler. Når det kommer til ML, begrænser dette dataforskere fra at downloade enhver pakke fra offentlige lagre som f.eks PyPI, Anaconda eller Conda-Forge.
For at give datavidenskabsfolk adgang til de værktøjer, de selv vælger, samtidig med at de respekterer miljøets begrænsninger, opretter organisationer ofte deres eget private pakkelager hostet i deres eget miljø. Du kan konfigurere private pakkedepoter på AWS på flere måder:
I dette indlæg fokuserer vi på den første mulighed: at bruge CodeArtifact.
Løsningsoversigt
Følgende arkitekturdiagram viser løsningsarkitekturen.
Trinene på højt niveau for at implementere løsningen er som følger
- Konfigurer en virtuel privat sky (VPC) uden internetadgang ved hjælp af en AWS CloudFormation skabelon.
- Brug en anden CloudFormation-skabelon til at opsætte CodeArtifact som et privat PyPI-lager og give forbindelse til VPC'en, og opsætte en Amazon SageMaker Studio miljø for at bruge det private PyPI-lager.
- Træn en klassifikationsmodel baseret på MNIST datasæt ved hjælp af en @remote decorator fra open source SageMaker Python SDK. Alle afhængigheder vil blive downloadet fra det private PyPI-lager.
Bemærk, at det er valgfrit at bruge SageMaker Studio i dette indlæg. Du kan vælge at arbejde i ethvert integreret udviklingsmiljø (IDE) efter eget valg. Du skal bare konfigurere din AWS kommandolinjegrænseflade (AWS CLI) legitimationsoplysninger korrekt. For mere information, se Konfigurer AWS CLI.
Forudsætninger
Du skal have en AWS-konto med en AWS identitets- og adgangsstyring (JEG ER) rolle med tilladelser til at administrere ressourcer oprettet som en del af løsningen. For detaljer henvises til Oprettelse af en AWS-konto.
Konfigurer en VPC uden internetforbindelse
Opret en ny CloudFormation-stak ved hjælp af vpc.yaml skabelon. Denne skabelon opretter følgende ressourcer:
- En VPC med to private undernet på tværs af to tilgængelighedszoner uden internetforbindelse
- Et Gateway VPC-slutpunkt til adgang til Amazon S3
- Interface VPC-endepunkter for SageMaker, CodeArtifact og et par andre tjenester for at tillade ressourcerne i VPC'et at oprette forbindelse til AWS-tjenester via AWS PrivateLink
Angiv et staknavn, som f.eks No-Internet
, og fuldfør stackoprettelsesprocessen.
Vent på, at stak-oprettelsesprocessen er fuldført.
Konfigurer et privat depot og SageMaker Studio ved hjælp af VPC
Det næste trin er at implementere en anden CloudFormation-stak ved hjælp af sagemaker_studio_codeartifact.yaml skabelon. Denne skabelon opretter følgende ressourcer:
Angiv et staknavn og behold standardværdierne eller juster parametrene for CodeArtifact domænenavn, navn på privat depot, brugerprofilnavn til SageMaker Studio, og navn for det opstrøms offentlige PyPI-lager. Du skal også sørge for VPC-staknavn oprettet i det forrige trin.
Når stackoprettelsen er færdig, bør SageMaker-domænet være synligt på SageMaker-konsollen.
For at bekræfte, at der ikke er nogen internetforbindelse tilgængelig i SageMaker Studio, lancere SageMaker Studio. Vælg File
, New
og Terminal
at starte en terminal og prøve at krølle enhver internetressource. Det skulle ikke kunne oprette forbindelse, som vist på det følgende skærmbillede.
Træn en billedklassificering ved hjælp af en @remote-dekorator med det private PyPI-lager
I dette afsnit bruger vi @remote decorator til at køre en PyTorch træningsjob, der producerer en MNIST-billedklassificeringsmodel. For at opnå dette opsætter vi en konfigurationsfil, udvikler træningsscriptet og kører træningskoden.
Opsæt en konfigurationsfil
Vi oprettede en config.yaml
fil og angiv de nødvendige konfigurationer til at gøre følgende:
- Kør a SageMaker træningsjob i den tidligere oprettede VPC uden internet
- Download de nødvendige pakker ved at oprette forbindelse til det private PyPI-lager, der blev oprettet tidligere
Filen ser ud som følgende kode:
Dependencies
feltet indeholder stien til requirements.txt
, som indeholder alle de nødvendige afhængigheder. Bemærk, at alle afhængigheder vil blive downloadet fra det private lager. Det requirements.txt
fil indeholder følgende kode:
PreExecutionCommands
sektionen indeholder kommandoen til at oprette forbindelse til det private PyPI-lager. For at få CodeArtifact VPC-slutpunkts-URL'en skal du bruge følgende kode:
Generelt får vi to VPC-endepunkter for CodeArtifact, og vi kan bruge enhver af dem i forbindelseskommandoerne. For flere detaljer, se Brug CodeArtifact fra en VPC.
Derudover kan konfigurationer som execution role
, output location
og VPC configurations
findes i konfigurationsfilen. Disse konfigurationer er nødvendige for at køre SageMaker-træningsjobbet. For at vide mere om alle de understøttede konfigurationer, se Konfigurationsfil.
Det er ikke obligatorisk at bruge config.yaml
fil for at arbejde med @remote decorator. Dette er blot en renere måde at levere alle konfigurationer til @remote-dekoratøren. Alle konfigurationer kunne også leveres direkte i dekorationsargumenterne, men det reducerer læsbarheden og vedligeholdelsen af ændringer i det lange løb. Konfigurationsfilen kan også oprettes af en administrator og deles med alle brugerne i et miljø.
Udvikle træningsscriptet
Dernæst forbereder vi træningskoden i simple Python-filer. Vi har opdelt koden i tre filer:
- load_data.py – Indeholder koden til at downloade MNIST-datasættet
- model.py – Indeholder koden til den neurale netværksarkitektur for modellen
- train.py – Indeholder koden til træning af modellen ved at bruge load_data.py og model.py
In train.py
, vi skal dekorere hovedtræningsfunktionen som følger:
Nu er vi klar til at køre træningskoden.
Kør træningskoden med en @remote decorator
Vi kan køre koden fra en terminal eller fra enhver eksekverbar prompt. I dette indlæg bruger vi en SageMaker Studio notesbog celle til at demonstrere dette:
Kørsel af den foregående kommando udløser træningsjobbet. I logfilerne kan vi se, at det downloader pakkerne fra det private PyPI-lager.
Dette afslutter implementeringen af en @remote decorator, der arbejder med et privat depot i et miljø uden internetadgang.
Ryd op
For at rydde op i ressourcerne skal du følge instruktionerne i OPRYDNING.md.
Konklusion
I dette indlæg lærte vi, hvordan man effektivt bruger @remote-dekoratørens muligheder, mens vi stadig arbejder i restriktive miljøer uden internetadgang. Vi lærte også, hvordan vi kan integrere CodeArtifact private repository-funktioner ved hjælp af konfigurationsfilunderstøttelse i SageMaker. Denne løsning gør iterativ udvikling meget enklere og hurtigere. En anden ekstra fordel er, at du stadig kan fortsætte med at skrive træningskoden på en mere naturlig, objektorienteret måde og stadig bruge SageMaker-funktioner til at køre træningsjob på en fjernklynge med minimale ændringer i din kode. Al koden vist som en del af dette indlæg er tilgængelig i GitHub repository.
Som et næste skridt opfordrer vi dig til at tjekke @remote decorator funktionalitet , Python SDK API og brug det i dit valg af miljø og IDE. Yderligere eksempler er tilgængelige i amazon-sagemaker-eksempler repository for at komme hurtigt i gang. Du kan også tjekke opslaget ud Kør din lokale maskinlæringskode som Amazon SageMaker Training-job med minimale kodeændringer for flere detaljer.
Om forfatteren
Vikesh Pandey er en Machine Learning Specialist Solutions Architect hos AWS, der hjælper kunder fra finansielle industrier med at designe og bygge løsninger på generativ AI og ML. Uden for arbejdet nyder Vikesh at prøve forskellige køkkener og dyrke udendørs sport.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk dig selv. Adgang her.
- PlatoAiStream. Web3 intelligens. Viden forstærket. Adgang her.
- PlatoESG. Automotive/elbiler, Kulstof, CleanTech, Energi, Miljø, Solenergi, Affaldshåndtering. Adgang her.
- BlockOffsets. Modernisering af miljømæssig offset-ejerskab. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/access-private-repos-using-the-remote-decorator-for-amazon-sagemaker-training-workloads/
- :er
- :ikke
- $OP
- 1
- 10
- 100
- 12
- 23
- 7
- 8
- a
- Om
- adgang
- Adgang
- Konto
- opnå
- tværs
- aktører
- tilføjet
- Yderligere
- admin
- Fordel
- AI
- Alle
- tillade
- også
- Amazon
- Amazon SageMaker
- Amazon Web Services
- an
- ,
- En anden
- enhver
- api
- arkitektur
- ER
- argumenter
- AS
- forbundet
- At
- automatisk
- tilgængelighed
- til rådighed
- AWS
- Bank
- baseret
- BE
- fordi
- bygge
- men
- by
- CAN
- kapaciteter
- odds
- Ændringer
- kontrollere
- valg
- Vælg
- klasser
- klassificering
- Cloud
- Cluster
- kode
- KOM
- Kom
- kommer
- fuldføre
- Compliance
- Konfiguration
- Tilslut
- Tilslutning
- tilslutning
- Connectivity
- Konsol
- indeholder
- fortsæt
- kontrol
- kontrol
- kunne
- oprettet
- skaber
- skabelse
- Legitimationsoplysninger
- Kunder
- data
- databeskyttelse
- databehandling
- datasæt
- Standard
- demonstrere
- Afhængighed
- indsætte
- Design
- detaljer
- udvikle
- Udvikling
- forskellige
- direkte
- Divided
- do
- domæne
- downloade
- effektivt
- tilskynde
- Endpoint
- Miljø
- miljøer
- epoker
- eksempler
- udførelse
- eksisterende
- FAIL
- falsk
- hurtigere
- få
- felt
- File (Felt)
- Filer
- finansielle
- finansielle brancher
- Fornavn
- Flyde
- Fokus
- følger
- efter
- følger
- Til
- formular
- fra
- fuld
- funktion
- gateway
- generative
- Generativ AI
- få
- gruppe
- Have
- have
- sundhedspleje
- hjælpe
- hjælpe
- hjælper
- højt niveau
- hostede
- Hvordan
- How To
- HTML
- http
- HTTPS
- ID
- Identity
- billede
- Billedklassificering
- gennemføre
- implementering
- in
- industrielle
- industrier
- oplysninger
- installere
- anvisninger
- forsikring
- integrere
- integreret
- Internet
- Internetadgang
- internetforbindelse
- ind
- isolation
- IT
- Job
- Karriere
- jpg
- lige
- Holde
- Kend
- stor
- lancere
- lærte
- læring
- livscyklus
- ligesom
- Line (linje)
- lokale
- lokalt
- Logge på
- Lang
- leder
- UDSEENDE
- maskine
- machine learning
- Main
- maerker
- administrere
- ledelse
- styringsværktøjer
- Mandat
- obligatorisk
- mange
- Kan..
- metoder
- mindste
- ML
- model
- Moduler
- mere
- meget
- flere
- navn
- indfødte
- Natural
- Behov
- behov
- netværk
- netværk
- neurale netværk
- Ny
- næste
- ingen
- notesbog
- of
- tit
- on
- open source
- betjene
- drift
- modsætning
- Option
- or
- ordrer
- organisationer
- Andet
- ud
- uden for
- i løbet af
- egen
- pakke
- pakker
- parametre
- del
- sti
- Tilladelser
- Place
- perron
- plato
- Platon Data Intelligence
- PlatoData
- spiller
- Indlæg
- foretrække
- Forbered
- tidligere
- Beskyttelse af personlige oplysninger
- private
- behandle
- forarbejdning
- producerer
- produktion
- Profil
- give
- forudsat
- offentlige
- Skub ud
- sætte
- Python
- pytorch
- hurtigt
- klar
- grund
- modtagende
- reducere
- reducerer
- reguleret
- regulerede brancher
- fjern
- Repository
- påkrævet
- Kræver
- ressource
- Ressourcer
- respektere
- begrænsning
- restriktioner
- restriktiv
- roller
- regler
- Kør
- kører
- løber
- sagemaker
- forskere
- SDK
- Anden
- Sektion
- sikkerhed
- se
- frø
- afsendelse
- Tjenester
- sæt
- flere
- delt
- SKIB
- bør
- vist
- Shows
- Simpelt
- enklere
- ganske enkelt
- So
- løsninger
- Løsninger
- specialist
- Sport
- stable
- påbegyndt
- Trin
- Steps
- Stadig
- butik
- Streng
- Studio
- stil
- subnet
- undernet
- sådan
- tilført
- forsyne
- support
- Understøttet
- skabelon
- terminal
- at
- deres
- Them
- Der.
- Disse
- de
- denne
- tre
- Gennem
- til
- værktøjer
- Torchvision
- Trafik
- Kurser
- Oversætte
- sand
- prøv
- to
- skrupelløs
- URL
- brug
- anvendte
- brugere
- ved brug af
- Værdier
- verificere
- via
- Virtual
- synlig
- Vej..
- måder
- we
- web
- webservices
- hvornår
- som
- mens
- Wikipedia
- vilje
- med
- uden
- Arbejde
- arbejder
- skriver
- skrivning
- yaml
- Du
- Din
- zephyrnet
- zoner