Zeci de mii de clienți AWS folosesc serviciile de învățare automată (ML) AWS pentru a-și accelera dezvoltarea ML cu infrastructură și instrumente complet gestionate. Pentru clienții care au dezvoltat modele ML la nivel local, cum ar fi desktop-ul lor local, doresc să-și migreze modelele ML vechi pe AWS Cloud pentru a profita pe deplin de cel mai cuprinzător set de servicii ML, infrastructură și resurse de implementare disponibile pe AWS. .
Termenul cod moștenit se referă la cod care a fost dezvoltat pentru a fi rulat manual pe un desktop local și nu este construit cu SDK-uri pregătite pentru cloud, cum ar fi SDK AWS pentru Python (Boto3) or Amazon SageMaker Python SDK. Cu alte cuvinte, aceste coduri vechi nu sunt optimizate pentru implementarea în cloud. Cea mai bună practică pentru migrare este de a refactoriza aceste coduri vechi folosind Amazon SageMaker API sau SDK-ul SageMaker Python. Cu toate acestea, în unele cazuri, este posibil ca organizațiile cu un număr mare de modele vechi să nu aibă timpul sau resursele pentru a rescrie toate acele modele.
În această postare, împărtășim o abordare scalabilă și ușor de implementat pentru a migra codul ML moștenit la AWS Cloud pentru inferență folosind Amazon SageMaker și Funcții pas AWS, cu o cantitate minimă de refactorizare a codului necesară. Puteți extinde cu ușurință această soluție pentru a adăuga mai multe funcționalități. Demonstrăm modul în care două persoane diferite, un cercetător de date și un inginer MLOps, pot colabora pentru a ridica și a schimba sute de modele vechi.
Prezentare generală a soluțiilor
În acest cadru, rulăm codul moștenit într-un container ca a Procesare SageMaker loc de munca. SageMaker rulează scriptul moștenit într-un container de procesare. Imaginea containerului de procesare poate fi fie o imagine încorporată SageMaker, fie o imagine personalizată. Infrastructura de bază pentru o lucrare de procesare este gestionată integral de SageMaker. Nu este necesară nicio modificare a codului vechi. Familiarizarea cu crearea de joburi SageMaker Processing este tot ceea ce este necesar.
Presupunem implicarea a două persoane: un cercetător de date și un inginer MLOps. Specialistul de date este responsabil pentru mutarea codului în SageMaker, fie manual, fie prin clonarea acestuia dintr-un depozit de coduri, cum ar fi AWS CodeCommit. Amazon SageMaker Studio oferă un mediu de dezvoltare integrat (IDE) pentru implementarea diferiților pași din ciclul de viață ML, iar cercetătorul de date îl utilizează pentru a construi manual un container personalizat care conține artefactele de cod necesare pentru implementare. Containerul va fi înregistrat într-un registru de containere, cum ar fi Registrul Amazon de containere elastice (Amazon ECR) în scopuri de implementare.
Inginerul MLOps preia construirea unui flux de lucru Step Functions pe care îl putem reutiliza pentru a implementa containerul personalizat dezvoltat de cercetătorul de date cu parametrii corespunzători. Fluxul de lucru Step Functions poate fi modular pe cât este necesar pentru a se potrivi cu cazul de utilizare sau poate consta dintr-un singur pas pentru a iniția un singur proces. Pentru a minimiza efortul necesar pentru migrarea codului, am identificat trei componente modulare pentru a construi un proces de implementare complet funcțional:
- preprocesare
- deducție
- Post procesare
Următoarea diagramă ilustrează arhitectura soluției noastre și fluxul de lucru.
Următorii pași sunt implicați în această soluție:
- Personajul de știință a datelor folosește Studio pentru a importa cod moștenit prin clonare dintr-un depozit de cod și apoi modularizează codul în componente separate care urmează pașii ciclului de viață ML (preprocesare, inferență și postprocesare).
- Omul de știință de date folosește Studio și în special Studio Image Build CLI instrument oferit de SageMaker, pentru a construi o imagine Docker. Acest instrument CLI permite cercetătorului de date să construiască imaginea direct în Studio și să înregistreze automat imaginea în Amazon ECR.
- Inginerul MLOps folosește imaginea containerului înregistrată și creează o implementare pentru un anumit caz de utilizare utilizând funcțiile pas. Step Functions este un serviciu de flux de lucru fără server care poate controla direct API-urile SageMaker prin utilizarea Amazon States Language.
SageMaker Procesare
Să înțelegem cum a SageMaker Procesare aleargă. Următoarea diagramă arată modul în care SageMaker derulează o lucrare de procesare.
SageMaker vă preia scriptul, vă copiază datele din Serviciul Amazon de stocare simplă (Amazon S3) și apoi trage un container de procesare. Imaginea containerului de procesare poate fi fie o imagine încorporată SageMaker, fie o imagine personalizată pe care o furnizați. Infrastructura de bază pentru o lucrare de procesare este gestionată integral de SageMaker. Resursele clusterului sunt furnizate pe durata lucrării dvs. și curățate atunci când o lucrare este finalizată. Ieșirea jobului de procesare este stocată în compartimentul S3 pe care l-ați specificat. Pentru a afla mai multe despre construirea propriului container, consultați Construiește-ți propriul container de procesare (scenariu avansat).
Lucrarea de procesare SageMaker configurează imaginea dvs. de procesare utilizând un script de punct de intrare al containerului Docker. De asemenea, puteți furniza propriul punct de intrare personalizat utilizând parametrii ContainerEntrypoint și ContainerArguments ai Specificația aplicației API. Dacă utilizați propriul punct de intrare personalizat, aveți flexibilitatea suplimentară de a-l rula ca script autonom, fără a vă reconstrui imaginile.
Pentru acest exemplu, construim un container personalizat și folosim un job de procesare SageMaker pentru inferență. Lucrările de preprocesare și postprocesare utilizează modul script cu un container scikit-learn pre-construit.
Cerințe preliminare
Pentru a urma această postare, parcurgeți următorii pași esențiali:
- Creați un domeniu Studio. Pentru instrucțiuni, consultați Accesați domeniul Amazon SageMaker folosind Configurare rapidă.
- Creați o găleată S3.
- Clonează cele furnizate GitHub repo în Studio.
Repo-ul GitHub este organizat în diferite foldere care corespund diferitelor etape din ciclul de viață ML, facilitând navigarea și gestionarea ușoară:
Migrați codul vechi
În acest pas, acționăm ca cercetător de date responsabil pentru migrarea codului moștenit.
Începem prin a deschide build_and_push.ipynb
caiet.
Celula inițială din notebook vă ghidează în instalarea Studio Image Build CLI. Acest CLI simplifică procesul de configurare prin crearea automată a unui mediu de construcție reutilizabil cu care puteți interacționa prin comenzi de nivel înalt. Cu CLI, construirea unei imagini este la fel de ușor ca să-i spui să o creeze, iar rezultatul va fi un link către locația imaginii tale în Amazon ECR. Această abordare elimină nevoia de a gestiona fluxul de lucru subiacent complex orchestrat de CLI, simplificând procesul de construire a imaginii.
Înainte de a rula comanda build, este important să ne asigurăm că rolul care rulează comanda are permisiunile necesare, așa cum este specificat în CLI GitHub citiți-mă sau post aferent. Neacordarea permisiunilor necesare poate duce la erori în timpul procesului de construire.
Consultați următorul cod:
Pentru a simplifica codul vechi, împărțiți-l în trei scripturi Python distincte, denumite preprocessing.py, predict.py și postprocessing.py. Respectați cele mai bune practici de programare prin conversia codului în funcții care sunt apelate dintr-o funcție principală. Asigurați-vă că toate bibliotecile necesare sunt importate și că fișierul requirements.txt este actualizat pentru a include orice biblioteci personalizate.
După ce organizați codul, împachetați-l împreună cu fișierul cerințelor într-un container Docker. Puteți construi cu ușurință containerul din Studio folosind următoarea comandă:
În mod implicit, imaginea va fi trimisă într-un depozit ECR numit sagemakerstudio cu eticheta cea mai recentă. În plus, va fi utilizat rolul de execuție al aplicației Studio, împreună cu compartimentul implicit SageMaker Python SDK S3. Cu toate acestea, aceste setări pot fi modificate cu ușurință folosind opțiunile CLI corespunzătoare. Vezi următorul cod:
Acum că containerul a fost construit și înregistrat într-un depozit ECR, este timpul să ne aprofundăm cum îl putem folosi pentru a rula predict.py. Vă arătăm, de asemenea, procesul de utilizare a unui pre-construit scikit-learn container pentru a rula preprocessing.py și postprocessing.py.
Produceți containerul
În acest pas, acționăm ca inginerul MLOps care produce containerul construit în pasul anterior.
Utilizăm Step Functions pentru a orchestra fluxul de lucru. Step Functions permite o flexibilitate excepțională în integrarea unei game variate de servicii în fluxul de lucru, găzduind orice dependențe existente care ar putea exista în sistemul moștenit. Această abordare asigură că toate componentele necesare sunt integrate perfect și rulează în secvența dorită, rezultând o soluție de flux de lucru eficientă și eficientă.
Step Functions poate controla anumite servicii AWS direct din Amazon States Language. Pentru a afla mai multe despre lucrul cu Step Functions și integrarea acesteia cu SageMaker, consultați Gestionați SageMaker cu funcții Step. Folosind capacitatea de integrare Step Functions cu SageMaker, rulăm scripturile de preprocesare și postprocesare utilizând un job de procesare SageMaker în modul script și rulăm inferența ca un job de procesare SageMaker folosind un container personalizat. Facem acest lucru folosind AWS SDK pentru Python (Boto3) CreateProcessingJob Apeluri API.
preprocesare
SageMaker oferă mai multe opțiuni pentru rularea codului personalizat. Dacă aveți doar un script fără dependențe personalizate, puteți rula scriptul ca Bring Your Own Script (BYOS). Pentru a face acest lucru, pur și simplu treceți scriptul în containerul cadru pre-construit scikit-learn și rulați o lucrare de procesare SageMaker în modul script folosind parametrii ContainerArguments și ContainerEntrypoint din Specificația aplicației API. Aceasta este o metodă simplă și convenabilă pentru a rula scripturi simple.
Verificați configurația stării „Modul script de preprocesare” în exemplu de flux de lucru Step Functions pentru a înțelege cum să configurați apelul API CreateProcessingJob pentru a rula un script personalizat.
deducție
Puteți rula un container personalizat folosind Construiește-ți propriul container de procesare abordare. Jobul SageMaker Processing operează cu /opt/ml
cale locală și puteți specifica procesarea intrărilor dumneavoastră și calea locală a acestora în configurație. Lucrarea Procesare apoi copiază artefactele în containerul local și începe lucrarea. După ce lucrarea este finalizată, acesta copiază artefactele specificate în calea locală a ProcessingOutputs în locația sa externă specificată.
Verificați configurația stării „Container personalizat de inferență” în exemplu de flux de lucru Step Functions pentru a înțelege cum să configurați apelul API CreateProcessingJob pentru a rula un container personalizat.
Post procesare
Puteți rula un script de postprocesare la fel ca un script de preprocesare utilizând pasul Step Functions CreateProcessingJob. Rularea unui script de postprocesare vă permite să efectuați sarcini de procesare personalizate după finalizarea jobului de inferență.
Creați fluxul de lucru Step Functions
Pentru prototiparea rapidă, folosim funcțiile Step Limba statelor Amazon. Puteți edita direct definiția funcțiilor pasului utilizând limba statelor. Consultați exemplu de flux de lucru Step Functions.
Puteți crea o nouă mașină de stare Step Functions pe consola Step Functions selectând Scrieți fluxul de lucru în cod.
Step Functions poate analiza resursele pe care le utilizați și poate crea un rol. Cu toate acestea, este posibil să vedeți următorul mesaj:
„Step Functions nu poate genera o politică IAM dacă RoleArn pentru SageMaker este dintr-o cale. Codificați SageMaker RoleArn în definiția mașinii dvs. de stat sau alegeți un rol existent cu permisiunile corespunzătoare pentru Step Functions pentru a apela SageMaker.”
Pentru a rezolva acest lucru, trebuie să creați un Gestionarea identității și accesului AWS (IAM) pentru funcțiile pas. Pentru instrucțiuni, consultați Crearea unui rol IAM pentru mașina dvs. de stare. Apoi atașați următoarea politică IAM pentru a furniza permisiunile necesare pentru rularea fluxului de lucru:
Următoarea figură ilustrează fluxul de date și imagini container în fiecare pas al fluxului de lucru Step Functions.
Următoarea este o listă a parametrilor minimi necesari pentru inițializare în Funcții de pas; te poți referi și la eșantion de parametri de intrare JSON:
- input_uri – URI-ul S3 pentru fișierele de intrare
- output_uri – URI-ul S3 pentru fișierele de ieșire
- code_uri – URI-ul S3 pentru fișierele script
- custom_image_uri – URI-ul containerului pentru containerul personalizat pe care l-ați construit
- scikit_image_uri – URI-ul containerului pentru cadrul pre-construit scikit-learn
- rol – Rolul de execuție pentru a rula jobul
- tip_instanță – Tipul de instanță pe care trebuie să-l utilizați pentru a rula containerul
- volum_size – Dimensiunea volumului de depozitare de care aveți nevoie pentru container
- max_runtime – Timpul maxim de rulare pentru container, cu o valoare implicită de 1 oră
Rulați fluxul de lucru
Am împărțit codul moștenit în părți gestionabile: preprocesare, inferență și postprocesare. Pentru a ne sprijini nevoile de inferență, am construit un container personalizat echipat cu dependențele de bibliotecă necesare. Planul nostru este să utilizăm Step Functions, profitând de capacitatea sa de a apela API-ul SageMaker. Am arătat două metode pentru rularea codului personalizat utilizând API-ul SageMaker: un job de procesare SageMaker care utilizează o imagine pre-construită și preia un script personalizat în timpul rulării și o lucrare de procesare SageMaker care utilizează un container personalizat, care este împachetat cu necesarul. artefacte pentru a rula inferențe personalizate.
Următoarea figură arată rularea fluxului de lucru Step Functions.
Rezumat
În această postare, am discutat despre procesul de migrare a codului ML Python vechi din mediile de dezvoltare locale și despre implementarea unei proceduri MLOps standardizate. Cu această abordare, puteți transfera fără efort sute de modele și puteți încorpora practicile dorite de implementare a întreprinderii. Am prezentat două metode diferite pentru rularea codului personalizat pe SageMaker și o puteți selecta pe cea care se potrivește cel mai bine nevoilor dvs.
Dacă aveți nevoie de o soluție extrem de personalizabilă, este recomandat să utilizați abordarea container personalizat. S-ar putea să găsiți mai potrivit să utilizați imagini pre-construite pentru a rula scriptul personalizat dacă aveți scripturi de bază și nu trebuie să vă creați containerul personalizat, așa cum este descris în pasul de preprocesare menționat mai devreme. În plus, dacă este necesar, puteți aplica această soluție pentru a containeriza pașii de instruire și evaluare a modelului moștenit, la fel ca în acest post.
Despre Autori
Bhavana Chirumamilla este arhitect rezident senior la AWS cu o pasiune puternică pentru operațiunile de date și de învățare automată. Ea aduce o mulțime de experiență și entuziasm pentru a ajuta întreprinderile să construiască date eficiente și strategii ML. În timpul liber, lui Bhavana îi place să petreacă timpul cu familia ei și să se implice în diverse activități, cum ar fi călătoriile, drumețiile, grădinărit și vizionarea de documentare.
Shyam Namavaram este un arhitect senior de soluții specializate în inteligență artificială (AI) și învățare automată (ML) la Amazon Web Services (AWS). Lucrează cu pasiune cu clienții pentru a-și accelera adoptarea AI și ML, oferind îndrumări tehnice și ajutându-i să inoveze și să construiască soluții cloud sigure pe AWS. El este specializat în AI și ML, containere și tehnologii de analiză. În afara serviciului, îi place să facă sport și să experimenteze natura cu drumeții.
Qingwei Li este specialist în învățare automată la Amazon Web Services. Și-a primit doctoratul în Cercetare operațională după ce a spart contul de grant de cercetare al consilierului său și nu a reușit să dea Premiul Nobel pe care l-a promis. În prezent, ajută clienții din industria serviciilor financiare și a asigurărilor să construiască soluții de învățare automată pe AWS. În timpul liber, îi place să citească și să predea.
Srinivasa Shaik este arhitect de soluții la AWS cu sediul în Boston. El îi ajută pe clienții întreprinderilor să-și accelereze călătoria către cloud. Este pasionat de containere și tehnologii de învățare automată. În timpul liber, îi place să petreacă timpul cu familia, să gătească și să călătorească.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- Platoblockchain. Web3 Metaverse Intelligence. Cunoștințe amplificate. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/bring-legacy-machine-learning-code-into-amazon-sagemaker-using-aws-step-functions/
- :este
- $UP
- 1
- 10
- 100
- 214
- 7
- 8
- a
- capacitate
- Despre Noi
- accelera
- acces
- Cont
- act
- Acțiune
- activităţi de
- adăugat
- În plus,
- adresa
- adera
- Adoptare
- avansat
- Avantaj
- După
- AI
- TOATE
- permite
- Amazon
- Amazon SageMaker
- Amazon Web Services
- Amazon Web Services (AWS)
- sumă
- Google Analytics
- și
- api
- API-uri
- aplicaţia
- Aplică
- abordare
- adecvat
- arhitectură
- SUNT
- artificial
- inteligență artificială
- Inteligența artificială (AI)
- AS
- At
- atașa
- în mod automat
- disponibil
- AWS
- Învățare automată AWS
- Funcții pas AWS
- bazat
- de bază
- BE
- începe
- CEL MAI BUN
- boston
- aduce
- Aduce
- Rupt
- Spart
- construi
- Clădire
- construit
- construit-in
- by
- apel
- denumit
- apeluri
- CAN
- nu poti
- caz
- cazuri
- sigur
- Schimbare
- Alege
- client
- Cloud
- Grup
- cod
- colabora
- COM
- Completă
- complex
- componente
- cuprinzător
- condiție
- Configuraţie
- Consoleze
- construi
- Recipient
- Containere
- conține
- Control
- Convenabil
- crea
- creează
- Crearea
- În prezent
- personalizat
- clienţii care
- personalizabil
- de date
- om de știință de date
- Mai adânc
- Mod implicit
- livra
- demonstra
- implementa
- desfășurarea
- descris
- dorit
- desktop
- dezvoltat
- în curs de dezvoltare
- Dezvoltare
- diferit
- direct
- discutat
- distinct
- diferit
- Docher
- documentare
- domeniu
- Dont
- jos
- în timpul
- fiecare
- Mai devreme
- cu ușurință
- efect
- Eficace
- eficient
- efort
- oricare
- elimină
- captivant
- inginer
- asigura
- asigură
- Afacere
- Companii
- entuziasm
- Mediu inconjurator
- medii
- echipat
- Erori
- evaluare
- exemplu
- excepțional
- execuție
- existent
- experienţă
- confruntă
- extinde
- extern
- facilitând
- A eșuat
- Familiaritate
- familie
- Figura
- Fișier
- financiar
- asistență financiară
- Găsi
- potrivi
- Flexibilitate
- debit
- urma
- următor
- Pentru
- Cadru
- din
- complet
- funcţie
- funcțional
- funcționalitate
- funcții
- În plus
- genera
- GitHub
- acordarea
- îndrumare
- Ghiduri
- Avea
- ajutor
- ajutor
- ajută
- la nivel înalt
- extrem de
- Cum
- Cum Pentru a
- Totuși
- HTML
- http
- HTTPS
- sute
- identificat
- Identitate
- imagine
- imagini
- implementarea
- Punere în aplicare a
- import
- important
- in
- În altele
- include
- incorpora
- industrie
- Infrastructură
- inițială
- iniția
- inova
- intrare
- instala
- Instalarea
- instanță
- instrucțiuni
- asigurare
- integrate
- integrarea
- integrare
- Inteligență
- interacţiona
- implicat
- implicare
- IT
- ESTE
- Loc de munca
- Locuri de munca
- călătorie
- jpg
- JSON
- doar unul
- limbă
- mare
- Ultimele
- AFLAȚI
- învăţare
- Moştenire
- biblioteci
- Bibliotecă
- ciclu de viață
- ca
- LINK
- Listă
- local
- locaţie
- Uite
- maşină
- masina de învățare
- Principal
- administra
- gestionate
- administrare
- manual
- maxim
- menționat
- mesaj
- metodă
- Metode
- migra
- migrațiune
- minim
- ML
- MLOps
- mod
- model
- Modele
- modular
- mai mult
- cele mai multe
- în mişcare
- Numit
- Natură
- Navigare
- necesar
- Nevoie
- nevoilor
- Nou
- Premiul Nobel
- caiet
- număr
- of
- promoții
- on
- ONE
- de deschidere
- opereaza
- Operațiuni
- optimizate
- Opţiuni
- orchestrat
- organizații
- Organizat
- Altele
- producție
- exterior
- propriu
- proprietate
- pachet
- parametrii
- piese
- pasiune
- pasionat
- cale
- Efectua
- permisiuni
- plan
- Plato
- Informații despre date Platon
- PlatoData
- joc
- Politica
- Post
- practică
- practicile
- prezice
- prezentat
- precedent
- premiu
- proces
- prelucrare
- Programare
- a promis
- adecvat
- prototipuri
- furniza
- prevăzut
- furnizează
- furnizarea
- Trage
- scopuri
- împins
- Piton
- Rapid
- repede
- gamă
- Citind
- primit
- recomandat
- Refactorizare
- se referă
- înregistrată
- registre
- registru
- depozit
- necesita
- necesar
- Cerinţe
- cercetare
- resursă
- Resurse
- responsabil
- rezultat
- rezultând
- reutilizabile
- Rol
- Alerga
- funcţionare
- sagemaker
- scalabil
- scenariu
- Om de stiinta
- scikit-learn
- script-uri
- sdk
- perfect
- sigur
- selectarea
- senior
- distinct
- Secvenţă
- serverless
- serviciu
- Servicii
- set
- Seturi
- setări
- configurarea
- câteva
- Distribuie
- schimbare
- Arăta
- indicat
- Emisiuni
- simplu
- pur şi simplu
- singur
- Mărimea
- So
- soluţie
- soluţii
- unele
- specialist
- specializată
- specific
- specific
- specificată
- Cheltuire
- rotiri
- Sportul
- Stadiile
- standalone
- începe
- Stat
- Declarație
- Statele
- Pas
- paşi
- depozitare
- stocate
- simplu
- strategii
- simplifica
- raționalizarea
- puternic
- studio
- astfel de
- potrivit
- a sustine
- SYS
- sistem
- TAG
- Lua
- ia
- luare
- sarcini
- Predarea
- Tehnic
- Tehnologii
- acea
- lor
- Lor
- Acestea
- mii
- trei
- Prin
- timp
- la
- instrument
- Unelte
- Pregătire
- transfer
- Traveling
- care stau la baza
- înţelege
- actualizat
- utilizare
- carcasa de utilizare
- utilitate
- folosi
- utilizate
- utilizează
- valoare
- diverse
- versiune
- volum
- vizionarea
- Bogatie
- web
- servicii web
- care
- OMS
- voi
- cu
- în
- fără
- cuvinte
- Apartamente
- de lucru
- fabrică
- Tu
- Ta
- zephyrnet