En godt utformet CI/CD-pipeline er avgjørende for å skalere enhver arbeidsflyt for programvareutvikling effektivt. Når du designer produksjons-CI/CD-pipelines, anbefaler AWS å utnytte flere kontoer for å isolere ressurser, inneholde sikkerhetstrusler og forenkle fakturering - og datavitenskapspipelines er ikke annerledes. Hos AWS fortsetter vi å innovere for å forenkle MLOps-arbeidsflyten.
I dette innlegget diskuterer vi noen av de nyere funksjonene på tvers av kontoer Amazon SageMaker som lar deg bedre dele og administrere modellgrupper samt administrere modellversjoner. For et eksempel på kontostruktur å følge organisasjonens beste praksis for å være vert for modeller som bruker SageMaker-endepunkter på tvers av kontoer, se MLOps Workload Orchestrator.
Løsningsoversikt
Følgende diagram illustrerer vår delte modellregisterarkitektur.
Noen ting å merke seg i den foregående arkitekturen:
Følgende trinn tilsvarer diagrammet:
- En dataforsker registrerer en modell fra datavitenskapskontoen til SageMaker-modellregisteret for delte tjenester i et
PendingManualApproval
stat. Modellartefakten opprettes i kontoen for delte tjenester Amazon enkel lagringstjeneste (Amazon S3) bøtte. - Ved registrering av ny modellversjon, bør noen med myndighet til å godkjenne modellen basert på beregningene godkjenne eller avvise modellen.
- Etter at modellen er godkjent, er CI/CD-rørledningen i distribusjonskontoen utløst for å distribuere de oppdaterte modelldetaljene i QA-kontoen og oppdater stadiet som QA.
- Når du har bestått testprosessen, kan du enten velge å ha et manuelt godkjenningstrinn i CI/CD-prosessen eller få CI/CD-pipeline til å distribuere modellen direkte til produksjon og oppdatere stadiet som Prod.
- Produksjonsmiljøet refererer til den godkjente modellen og koden, kanskje gjør en A/B-test i produksjon. I tilfelle en revisjon eller ethvert problem med modellen, kan du bruke Amazon SageMaker ML Lineage Tracking. Den oppretter og lagrer informasjon om trinnene i en arbeidsflyt for maskinlæring (ML) fra dataforberedelse til modellimplementering. Med sporingsinformasjonen kan du reprodusere arbeidsflyttrinnene, spore modellen og datasettet, og etablere modellstyring og revisjonsstandarder.
Gjennom hele prosessen beholder det delte modellregisteret de eldre modellversjonene. Dette gjør at teamet kan rulle tilbake endringer, eller til og med være vert produksjonsvarianter.
Forutsetninger
Sørg for at du har følgende forutsetninger:
- En klargjort flerkontostruktur – For instruksjoner, se Beste praksis for organisasjonsenheter med AWS-organisasjoner. For formålet med denne bloggen bruker vi følgende kontoer:
- Datavitenskap-konto – En konto der dataforskere har tilgang til treningsdataene og lager modellene.
- Konto for delte tjenester – En sentral konto for lagring av modellartefakter (som vist i arkitekturdiagrammet) som er tilgjengelig på tvers av de forskjellige arbeidsbelastningskontoene.
- Implementeringskonto – En konto som er ansvarlig for å implementere endringer på de ulike kontoene.
- Arbeidsbelastningskontoer – Dette er vanligvis QA- og prod-miljøer der programvareingeniører er i stand til å bygge applikasjoner for å konsumere ML-modellen.
- En distribusjonskonto med passende tillatelser – For mer informasjon om beste fremgangsmåter med en flerkonto-OU-struktur, se Implementerings-OU. Denne kontoen er ansvarlig for å peke arbeidsbelastningskontoene til ønsket modell i delte tjenester-kontoens modellregister.
Definer retningslinjer for flere kontoer
Ved å følge prinsippet om minste privilegium må vi først legge til ressurspolicyer på tvers av kontoer til ressursene for delte tjenester for å gi tilgang fra de andre kontoene.
Fordi modellartefaktene er lagret i S3-bøtten til kontoen for delte tjenester, trenger datavitenskapskontoen Amazon S3 lese-/skrivetilgang for å sende trente modeller til Amazon S3. Følgende kode illustrerer denne policyen, men ikke legg den til kontoen for delte tjenester ennå:
Distribusjonskontoen trenger bare å gis lesetilgang til S3-bøtten, slik at den kan bruke modellartefakter til å distribuere til SageMaker-endepunkter. Vi må også knytte følgende retningslinjer til S3-bøtten for delte tjenester:
Vi kombinerer begge retningslinjene for å få følgende endelige policy. Opprett denne policyen i kontoen for delte tjenester etter å ha erstattet de aktuelle konto-ID-ene:
For å kunne distribuere en modell opprettet i en annen konto, må brukeren ha en rolle som har tilgang til SageMaker-handlinger, for eksempel en rolle med AmazonSageMakerFullAccess
administrert politikk. Referere til Distribuer en modellversjon fra en annen konto for ytterligere detaljer.
Vi må definere modellgruppen som inneholder modellversjonene vi ønsker å distribuere. Vi ønsker også å gi tillatelser til datavitenskapskontoen. Dette kan oppnås i følgende trinn. Vi viser til regnskapet som følger:
- shared_services_account_id – Kontoen hvor modellregisteret er og hvor vi ønsker at modellen skal være
- data_science_account_id – Kontoen der vi skal trene og derfor lage selve modellartefakten
- deployment_account_id – Kontoen der vi ønsker å være vert for endepunktet for denne modellen
Først må vi sikre at modellpakkegruppene eksisterer. Du kan bruke Boto3 APIer som vist i følgende eksempel, eller du kan bruke AWS-administrasjonskonsoll for å lage modellpakken. Referere til Opprett modellpakkegruppe for flere detaljer. Dette forutsetter at du har Boto3 installert.
For tillatelsene for denne modellpakkegruppen kan du opprette et JSON-dokument som ligner på følgende kode. Erstatt de faktiske konto-ID-ene og modellpakkegruppenavnet med dine egne verdier.
Til slutt, bruk policyen på modellpakkegruppen. Du kan ikke knytte denne policyen til pakkegruppen via konsollen. Du trenger SDK eller AWS kommandolinjegrensesnitt (AWS CLI) tilgang. For eksempel bruker følgende kode Boto3:
Vi trenger også en skikk AWS nøkkelstyringstjeneste (AWS KMS) nøkkel for å kryptere modellen mens du lagrer den i Amazon S3. Dette må gjøres ved hjelp av datavitenskapskontoen. På AWS KMS-konsollen, naviger til Definer nøkkelbrukstillatelser side. I Andre AWS-kontoer delen velger Legg til en annen AWS-konto. Skriv inn AWS-kontonummeret for distribusjonskontoen. Du bruker denne KMS-nøkkelen til SageMaker-treningsjobben. Hvis du ikke spesifiserer en KMS-nøkkel for opplæringsjobben, bruker SageMaker som standard en Amazon S3-krypteringsnøkkel på serversiden. En standard Amazon S3-krypteringsnøkkel på serversiden kan ikke deles med eller brukes av en annen AWS-konto.
Retningslinjene og tillatelsene følger dette mønsteret:
- Amazon S3-policyen spesifisert i
shared_services_account
gir tillatelser til datavitenskapskontoen og distribusjonskontoen - KMS-nøkkelpolicyen spesifisert i
shared_services_account
gir tillatelser til datavitenskapskontoen og distribusjonskontoen
Vi må sørge for at kontoen for delte tjenester og distribusjonskontoen har tilgang til Docker-bildene som ble brukt til å trene modellen. Disse bildene er vanligvis lagret i AWS-kontoer, og kontoadministratoren din kan hjelpe deg med å få tilgang, hvis du ikke allerede har tilgang. For dette innlegget lager vi ingen tilpassede Docker-bilder etter opplæring av modellen, og derfor trenger vi ingen spesifikke Amazon ECR-policyer for bildene.
I arbeidsbelastningskontoene (QA eller prod) må vi opprette to AWS identitets- og tilgangsadministrasjon (IAM) retningslinjer som ligner på følgende. Disse er innebygde retningslinjer, som betyr at de er innebygd i en IAM-identitet. Dette gir disse kontoene tilgang til modellregisteret.
Den første integrerte policyen tillater en rolle å få tilgang til Amazon S3-ressursen i kontoen for delte tjenester som inneholder modellartefakten. Oppgi navnet på S3-bøtten og modellen din:
Den andre innebygde policyen tillater en rolle, som vi oppretter senere, å bruke KMS-nøkkelen i kontoen for delte tjenester. Angi konto-ID-en for kontoen for delte tjenester og KMS-nøkkel-ID:
Til slutt må vi opprette en IAM-rolle for SageMaker. Denne rollen har AmazonSageMakerFullAccess
politikk vedlagt. Deretter knytter vi disse to integrerte retningslinjene til rollen vi opprettet. Hvis du bruker en eksisterende SageMaker-utførelsesrolle, knytter du disse to policyene til den rollen. For instruksjoner, se Opprette roller og legge ved retningslinjer (konsoll).
Nå som vi har definert retningslinjene for hver konto, la oss bruke et eksempel for å se det i aksjon.
Bygg og tren en modell ved å bruke en SageMaker-rørledning
Vi oppretter først en SageMaker-pipeline i datavitenskapskontoen for å utføre databehandling, modelltrening og evaluering. Vi bruker California boligdatasettet hentet fra StatLib-biblioteket. I den følgende kodebiten bruker vi et tilpasset forhåndsbehandlingsskript preprocess.py
å utføre noen enkle funksjonstransformasjoner som funksjonsskalering, som kan genereres ved å bruke følgende bærbare. Dette skriptet deler også datasettet i trenings- og testdatasett.
Vi lager en SKLearnProcessor
objekt for å kjøre dette forhåndsbehandlingsskriptet. I SageMaker-pipelinen lager vi et behandlingstrinn (ProcessingStep
) for å kjøre behandlingskoden ved hjelp av SKLearnProcessor
. Denne behandlingskoden kalles når SageMaker-rørledningen initialiseres. Koden som lager SKLearnProcessor
og ProcessingStep
vises i følgende kode. Merk at all koden i denne delen kjøres i datavitenskapskontoen.
Vi trenger en tilpasset KMS-nøkkel for å kryptere modellen mens vi lagrer den på Amazon S3. Se følgende kode:
For å trene modellen lager vi et TensorFlow-estimatorobjekt. Vi gir den KMS-nøkkel-ID-en sammen med treningsskriptet vårt train.py
, type treningsforekomst og antall. Vi lager også en TrainingStep
legges til rørledningen vår, og legg TensorFlow-estimatoren til den. Se følgende kode:
I tillegg til opplæring, må vi gjennomføre modellevaluering, hvor vi bruker gjennomsnittlig kvadratfeil (MSE) som metrikk i dette eksemplet. De tidligere notatbok også genererer evaluate.py
, som vi bruker til å evaluere vår modell ved bruk av MSE. Vi lager også en ProcessingStep
for å initialisere modellevalueringsskriptet ved å bruke en SKLearnProcessor
gjenstand. Følgende kode oppretter dette trinnet:
Etter modellevaluering trenger vi også et trinn for å registrere modellen vår i modellregisteret, dersom modellytelsen oppfyller kravene. Dette vises i følgende kode ved hjelp av RegisterModel
steg. Her må vi spesifisere modellpakken som vi hadde deklarert i kontoen for delte tjenester. Bytt ut region-, konto- og modellpakken med verdiene dine. Modellnavnet som brukes her er modeltest
, men du kan bruke hvilket som helst navn du ønsker.
Vi må også lage modellartefakter slik at de kan distribueres (ved hjelp av den andre kontoen). For å lage modellen lager vi en CreateModelStep
, som vist i følgende kode:
Legge til forhold til rørledningen gjøres med en ConditionStep
. I dette tilfellet ønsker vi kun å registrere den nye modellversjonen i modellregisteret hvis den nye modellen oppfyller en nøyaktighetsbetingelse. Se følgende kode:
Til slutt ønsker vi å orkestrere alle pipeline-trinnene slik at pipelinen kan initialiseres:
Distribuer en modellversjon fra en annen konto
Nå som modellen er registrert i kontoen for delte tjenester, må vi distribuere til arbeidsbelastningskontoene våre ved å bruke CI/CD-pipelinen i distribusjonskontoen. Vi har allerede konfigurert rollen og policyen i et tidligere trinn. Vi bruker modellpakken ARN for å distribuere modellen fra modellregisteret. Følgende kode kjører i distribusjonskontoen og brukes til å distribuere godkjente modeller til QA og prod:
konklusjonen
I dette innlegget demonstrerte vi hvordan du setter opp retningslinjene som trengs for et multikontooppsett for ML basert på prinsippet om minste privilegium. Deretter viste vi prosessen med å bygge og trene modellene i datavitenskapsregnskapet. Til slutt brukte vi CI/CD-pipelinen i distribusjonskontoen for å distribuere den nyeste versjonen av godkjente modeller til QA- og produksjonskontoer. I tillegg kan du se distribusjonshistorikken til modellene og bygge utløsere in AWS CodeBuild.
Du kan skalere konseptene i dette innlegget for å være vert for modeller Amazon Elastic Compute Cloud (Amazon EC2) eller Amazon Elastic Kubernetes-tjeneste (Amazon EKS), samt bygge ut en batch-inferensrørledning.
For å lære mer om å ha separate kontoer som bygger ML-modeller i AWS, se Beste praksis for organisasjonsenheter med AWS-organisasjoner og Trygg oppdatering av modeller i produksjon.
Om forfatterne
Sandeep Verma er en Sr. Prototyping Architect med AWS. Han liker å dykke dypt inn i kundenes utfordringer og bygge prototyper for kunder for å akselerere innovasjon. Han har bakgrunn fra AI/ML, grunnlegger av New Knowledge, og generelt lidenskapelig opptatt av teknologi. På fritiden elsker han å reise og gå på ski med familien.
Mani Khanuja er en kunstig intelligens og maskinlæringsspesialist SA hos Amazon Web Services (AWS). Hun hjelper kunder som bruker maskinlæring for å løse sine forretningsutfordringer ved hjelp av AWS. Hun bruker mesteparten av tiden på å dykke dypt og undervise kunder på AI / ML-prosjekter relatert til datasyn, naturlig språkbehandling, prognoser, ML i utkanten og mer. Hun er lidenskapelig opptatt av ML på kanten, derfor har hun opprettet et eget laboratorium med selvkjøringssett og produksjonslinje for prototypeproduksjon, hvor hun bruker mye av fritiden.
Saumitra Vikram er en programvareutvikler på Amazon SageMaker-teamet og er basert i Chennai, India. Utenom jobben elsker han å tilbringe tid på løping, fotturer og motorsykkelkjøring gjennom Himalaya.
Sreedevi Srinivasan er ingeniørleder i AWS SageMaker. Hun er lidenskapelig og begeistret for å muliggjøre ML som en plattform som skal transformere hverdagen. Hun fokuserer for tiden på SageMaker Feature Store. På fritiden liker hun å tilbringe tid med familien.
Rupinder Grewal er en Sr Ai/ML spesialistløsningsarkitekt med AWS. Han fokuserer for tiden på servering av modeller og MLOps på SageMaker. Før denne rollen har han jobbet som maskinlæringsingeniør med å bygge og hoste modeller. Utenom jobben liker han å spille tennis og sykle på fjellstier.
Farooq Sabir er senior spesialistløsningsarkitekt for kunstig intelligens og maskinlæring ved AWS. Han har PhD- og MS-grader i elektroteknikk fra University of Texas i Austin og en MS i informatikk fra Georgia Institute of Technology. Hos AWS hjelper han kunder med å formulere og løse forretningsproblemer innen datavitenskap, maskinlæring, datasyn, kunstig intelligens, numerisk optimalisering og relaterte domener. Han har over 16 års arbeidserfaring og er også et fakultetsmedlem ved University of Texas i Dallas, hvor han underviser i et hovedfagskurs i Applied Machine Learning. Basert i Dallas, Texas, elsker han og familien å reise og foreta lange bilturer.
- Avansert (300)
- AI
- ai kunst
- ai art generator
- du har en robot
- Amazon SageMaker
- kunstig intelligens
- sertifisering av kunstig intelligens
- kunstig intelligens i bankvirksomhet
- kunstig intelligens robot
- kunstig intelligens roboter
- programvare for kunstig intelligens
- AWS maskinlæring
- beste praksis
- blockchain
- blockchain konferanse ai
- coingenius
- samtale kunstig intelligens
- kryptokonferanse ai
- dall sin
- dyp læring
- google det
- maskinlæring
- plato
- plato ai
- Platon Data Intelligence
- Platon spill
- PlatonData
- platogaming
- skala ai
- syntaks
- Teknisk fremgangsmåte
- zephyrnet