Kuidas VMware lõi nullist MLOps torujuhtme, kasutades GitLabi, Amazon MWAA ja Amazon SageMaker

Kuidas VMware lõi nullist MLOps torujuhtme, kasutades GitLabi, Amazon MWAA ja Amazon SageMaker

Allikasõlm: 2009167

See postitus on kirjutatud koos masinõppeinsener Mahima Agarwali ja VMware Carbon Blacki vaneminsenerijuhi Deepak Mettemiga

VMware süsimusta on tunnustatud turvalahendus, mis pakub kaitset tänapäevaste küberrünnakute täieliku spektri eest. Toote genereeritud terabaitide andmetega keskendub turbeanalüütika meeskond masinõppe (ML) lahenduste loomisele, et tõsta esile kriitilisi rünnakuid ja tõsta esile mürast tulenevaid tekkivaid ohte.

VMware Carbon Blacki meeskonna jaoks on ülioluline kujundada ja ehitada kohandatud otsast lõpuni MLOps torujuhe, mis juhib ja automatiseerib töövooge ML elutsükli jooksul ning võimaldab mudelite väljaõpet, hindamisi ja juurutamist.

Selle torujuhtme ehitamisel on kaks peamist eesmärki: andmeteadlaste toetamine mudelite hilises etapis väljatöötamisel ja pinnamudelite prognoosimine tootes, pakkudes mudeleid suures mahus ja reaalajas tootmisliikluses. Seetõttu otsustasid VMware Carbon Black ja AWS ehitada kohandatud MLOps torujuhtme, kasutades Amazon SageMaker selle kasutuslihtsuse, mitmekülgsuse ja täielikult hallatava infrastruktuuri tõttu. Korraldame oma ML-koolituse ja juurutamise torujuhtmeid kasutades Amazoni hallatavad töövood Apache Airflow jaoks (Amazon MWAA), mis võimaldab meil rohkem keskenduda töövoogude ja torujuhtmete programmilisele loomisele, ilma et peaksime muretsema automaatse skaleerimise või infrastruktuuri hoolduse pärast.

Selle torujuhtmega on kunagine Jupyteri sülearvutipõhine ML-uuring nüüd automatiseeritud protsess, mis juurutab mudelid tootmises ja andmeteadlaste käsitsi sekkumine on väike. Varem võis mudeli väljaõppe, hindamise ja kasutuselevõtu protsess kesta üle päeva; Selle rakendusega on kõik vaid päästiku kaugusel ja kogu aeg on vähenenud mõne minutini.

Selles postituses arutavad VMware Carbon Blacki ja AWS-i arhitektid, kuidas me koostasime ja haldasime kohandatud ML-i töövooge kasutades gitlab, Amazon MWAA ja SageMaker. Arutame, mida oleme seni saavutanud, torujuhtme edasisi täiustusi ja selle käigus saadud õppetunde.

Lahenduse ülevaade

Järgmine diagramm illustreerib ML-platvormi arhitektuuri.

Kõrgetasemeline lahenduste disain

Kõrgetasemeline lahenduste disain

See ML-platvorm oli mõeldud ja mõeldud kasutamiseks erinevate mudelite jaoks erinevates koodihoidlates. Meie meeskond kasutab GitLabi lähtekoodihaldustööriistana kõigi koodihoidlate haldamiseks. Kõik muudatused mudelihoidla lähtekoodis integreeritakse pidevalt, kasutades Gitlab CI, mis kutsub esile järgnevad töövood (mudeli väljaõpe, hindamine ja juurutamine).

Järgmine arhitektuuriskeem illustreerib täielikku töövoogu ja meie MLOps-konveieriga seotud komponente.

End-to-End töövoog

End-to-End töövoog

ML-mudeli väljaõppe, hindamise ja juurutamise torujuhtmed on korraldatud Amazon MWAA-ga, mida nimetatakse Suunatud tsükliline graafik (DAG). DAG on ülesannete kogum, mis on organiseeritud sõltuvuste ja suhetega, et öelda, kuidas need peaksid toimima.

Kõrgel tasemel sisaldab lahenduse arhitektuur kolme põhikomponenti:

  • ML-i konveieri koodihoidla
  • ML mudeli koolitus- ja hindamistoru
  • ML-mudeli juurutamise torujuhe

Arutame, kuidas neid erinevaid komponente hallatakse ja kuidas need omavahel suhtlevad.

ML-i konveieri koodihoidla

Pärast seda, kui mudelirepo integreerib MLOps-repo oma allavoolu konveierina ja andmeteadlane sisestab oma mudelireposse koodi, teostab GitLabi jooksja selles repos määratletud standardse koodi valideerimise ja testimise ning käivitab koodimuudatuste põhjal MLOps-konveieri. Kasutame Gitlabi mitmest projektist koosnevat konveieri, et võimaldada see päästik erinevates repodes.

MLOps GitLabi torujuhe töötab teatud etappide komplekti. See viib läbi põhikoodi valideerimise pylinti abil, pakib mudeli koolituse ja järelduskoodi Dockeri kujutisse ning avaldab konteineri kujutise Amazoni elastsete konteinerite register (Amazon ECR). Amazon ECR on täielikult hallatav konteinerregister, mis pakub suure jõudlusega hostimist, nii et saate rakenduste pilte ja artefakte usaldusväärselt kõikjale juurutada.

ML mudeli koolitus- ja hindamistoru

Pärast pildi avaldamist käivitab see koolituse ja hindamise Apache õhuvool torujuhe läbi AWS Lambda funktsiooni. Lambda on serverita sündmustepõhine arvutusteenus, mis võimaldab teil käivitada peaaegu igat tüüpi rakenduste või taustateenuste koodi ilma servereid varustamise või haldamiseta.

Pärast torujuhtme edukat käivitamist käivitab see koolituse ja hindamise DAG-i, mis omakorda käivitab mudelikoolituse SageMakeris. Selle koolituse lõpus saab tuvastatud kasutajarühm meili teel märguande koolituse ja mudeli hindamise tulemustega Amazoni lihtne teavitusteenus (Amazon SNS) ja Slack. Amazon SNS on täielikult hallatav pubi-/alamteenus A2A ja A2P sõnumside jaoks.

Pärast hindamistulemuste põhjalikku analüüsi saab andmeteadlane või ML-insener uue mudeli kasutusele võtta, kui äsja koolitatud mudeli jõudlus on eelmise versiooniga võrreldes parem. Mudelite toimivust hinnatakse mudelispetsiifiliste mõõdikute (nt F1 skoor, MSE või segadusmaatriks) alusel.

ML-mudeli juurutamise torujuhe

Juurutamise alustamiseks käivitab kasutaja GitLabi töö, mis käivitab juurutamise DAG-i sama Lambda funktsiooni kaudu. Pärast torujuhtme edukat käitamist loob või värskendab see SageMakeri lõpp-punkti uue mudeliga. Samuti saadab see teatise lõpp-punkti üksikasjadega meili teel, kasutades Amazon SNS-i ja Slacki.

Kummagi torujuhtme rikke korral teavitatakse kasutajaid samade sidekanalite kaudu.

SageMaker pakub reaalajas järeldusi, mis sobivad ideaalselt madala latentsusaja ja kõrge läbilaskevõimega töökoormuste jaoks. Neid lõpp-punkte hallatakse täielikult, koormust tasakaalustatakse ja skaleeritakse automaatselt ning neid saab kõrge kättesaadavuse tagamiseks juurutada mitmes saadavuse tsoonis. Meie konveier loob mudeli jaoks sellise lõpp-punkti pärast selle edukat käitamist.

Järgmistes osades käsitleme erinevaid komponente ja sukeldume üksikasjadesse.

GitLab: paketimudelid ja käivituskonveierid

Kasutame GitLabi oma koodihoidlana ja torujuhtme jaoks mudelikoodi pakkimiseks ja allavoolu Airflow DAG-ide käivitamiseks.

Mitme projektiga torujuhe

Mitme projektiga GitLabi konveieri funktsiooni kasutatakse juhul, kui emakonveier (ülesvoolu) on mudelrepo ja alamkonveier (allavoolu) on MLOps repo. Iga repo säilitab faili .gitlab-ci.yml ja järgmine ülesvoolu konveieris lubatud koodiplokk käivitab allavoolu MLOps-konveieri.

trigger: project: path/to/ml-ops branch: main strategy: depend

Ülesvoolu konveier saadab mudeli koodi üle allavoolu torujuhtmele, kus käivitatakse pakendamise ja avaldamise CI tööd. Mudelikoodi konteinerisse paigutamise ja Amazon ECR-is avaldamise koodi haldab ja haldab MLOps torujuhe. See saadab sellised muutujad nagu ACCESS_TOKEN (saab luua all Seaded, juurdepääs), JOB_ID (juurdepääsuks ülesvoolu artefaktidele) ja $CI_PROJECT_ID (mudeli repo projekti ID) muutujad, et MLOps-konveier pääseks juurde mudeli koodifailidele. Koos töö esemed Gitlabi funktsiooni abil pääseb allavoolu repo kaugartefaktidele juurde järgmise käsu abil:

curl --output artifacts.zip --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts"

Mudeli repo võib tarbida allavoolu torujuhtmeid mitme sama repo mudeli jaoks, pikendades selle käivitavat etappi, kasutades laieneb GitLabi märksõna, mis võimaldab teil sama konfiguratsiooni erinevatel etappidel uuesti kasutada.

Pärast mudelipildi avaldamist Amazon ECR-is käivitab MLOps-konveieri Lambda abil Amazon MWAA koolituskonveieri. Pärast kasutaja heakskiitu käivitab see mudeli juurutamise Amazon MWAA torujuhtme, kasutades sama Lambda funktsiooni.

Semantiline versioonimine ja versioonide edastamine allavoolu

Töötasime välja kohandatud koodi ECR-piltide ja SageMakeri mudelite versiooniks. MLOps-konveier haldab piltide ja mudelite semantilist versioonide loomise loogikat osana etapist, kus mudeli kood konteineriseeritakse ja edastab versioonid hilisematele etappidele artefaktidena.

Ümberõpe

Kuna ümberõpe on ML elutsükli oluline aspekt, oleme oma torustiku osana kasutusele võtnud ümberõppevõimalused. Kasutame SageMakeri loendimudelite API-d, et teha kindlaks, kas tegemist on ümberõppega mudeli ümberõppe versiooninumbri ja ajatempli põhjal.

Korraldame ümberõppe torustiku päevakava kasutades GitLabi ajakavakonveierid.

Terraform: infrastruktuuri seadistamine

Lisaks Amazoni MWAA klastrile, ECR hoidlatele, Lambda funktsioonidele ja SNS-i teemale kasutab see lahendus ka AWS-i identiteedi- ja juurdepääsuhaldus (IAM) rollid, kasutajad ja eeskirjad; Amazoni lihtne salvestusteenus (Amazon S3) ämbrid ja an Amazon CloudWatch palgi ekspediitor.

Kogu meie torujuhtmega seotud teenuste infrastruktuuri seadistamise ja hoolduse sujuvamaks muutmiseks kasutame Terraform infrastruktuuri koodina juurutada. Kui on vaja infravärskendusi, käivitavad koodimuudatused meie seadistatud GitLabi CI konveieri, mis kinnitab ja juurutab muudatused erinevates keskkondades (näiteks lisab loa IAM-i poliitikale arendaja-, etapi- ja tootekontodel).

Amazon ECR, Amazon S3 ja Lambda: torujuhtme hõlbustamine

Kasutame oma torujuhtme hõlbustamiseks järgmisi põhiteenuseid:

  • Amazon ECR – Mudelkonteineri kujutiste säilitamiseks ja mugavaks hankimiseks märgistame need semantiliste versioonidega ja laadime üles ECR-i hoidlatesse, mis on seadistatud vastavalt ${project_name}/${model_name} Terraformi kaudu. See võimaldab hea isolatsioonikihi erinevate mudelite vahel ja võimaldab meil kasutada kohandatud algoritme ning vormindada järelduspäringuid ja vastuseid, et lisada soovitud mudeli manifesti teave (mudeli nimi, versioon, koolitusandmete tee jne).
  • Amazon S3 – Kasutame S3-salve, et säilitada mudeli koolitusandmeid, koolitatud mudeli artefakte mudeli kohta, Airflow DAG-sid ja muud torujuhtmete jaoks nõutavat lisateavet.
  • Lambda – Kuna meie Airflow klaster on turvakaalutlustel kasutusele võetud eraldi VPC-s, ei pääse DAG-idele otse juurde. Seetõttu kasutame DAG-i nimega määratud DAG-ide käivitamiseks Lambda-funktsiooni, mida hooldatakse ka Terraformiga. Nõuetekohase IAM-i häälestuse korral käivitab GitLabi CI töö lambda funktsiooni, mis läbib konfiguratsioonid kuni nõutud koolituse või juurutamise DAG-ideni.

Amazon MWAA: koolitus- ja kasutuselevõtu torujuhtmed

Nagu varem mainitud, kasutame koolituse ja kasutuselevõtu torujuhtmete korraldamiseks Amazon MWAA-d. Kasutame SageMakeri operaatoreid, mis on saadaval saidil Amazoni pakkujapakett Airflow jaoks integreerimiseks SageMakeriga (et vältida Jinja malli).

Kasutame selles koolitustorustikus järgmisi operaatoreid (näidatud järgmisel töövoo diagrammil):

MWAA koolitustoru

MWAA koolitustoru

Kasutame juurutamise torujuhtmes järgmisi operaatoreid (näidatud järgmisel töövoo diagrammil):

Mudeli juurutamise torujuhe

Mudeli juurutamise torujuhe

Kasutame mõlemas torujuhtmes vea-/edusõnumite ja hindamistulemuste avaldamiseks Slacki ja Amazon SNS-i. Slack pakub sõnumite kohandamiseks laia valikut võimalusi, sealhulgas järgmist.

CloudWatch ja VMware Wavefront: jälgimine ja logimine

Me kasutame lõpp-punkti jälgimise ja logimise konfigureerimiseks CloudWatchi armatuurlauda. See aitab visualiseerida ja jälgida iga projekti jaoks spetsiifilisi erinevaid töö- ja mudeli jõudlusmõõdikuid. Lisaks mõne neist jälgimiseks seadistatud automaatse skaleerimise poliitikale jälgime pidevalt protsessori- ja mälukasutuse muutusi, taotlusi sekundis, vastuse latentsusaega ja mudelimõõdikuid.

CloudWatch on integreeritud isegi VMware Tanzu Wavefronti armatuurlauaga, et see saaks visualiseerida nii mudeli lõpp-punktide kui ka muude teenuste mõõdikuid projekti tasemel.

Ettevõtte eelised ja mis edasi

ML-i torujuhtmed on ML-i teenuste ja funktsioonide jaoks väga olulised. Selles postituses arutasime täielikku ML-i kasutusjuhtumit, kasutades AWS-i võimalusi. Ehitasime SageMakeri ja Amazon MWAA abil kohandatud torujuhtme, mida saame projektides ja mudelites taaskasutada, ning automatiseerisime ML-i elutsükli, mis vähendas mudelikoolitusest tootmise juurutamiseni kuluvat aega vaid 10 minutini.

ML elutsükli koormuse ülekandmisega SageMakerile pakkus see optimeeritud ja skaleeritavat infrastruktuuri mudeli väljaõppeks ja juurutamiseks. Mudelite teenindamine koos SageMakeriga aitas meil teha reaalajas ennustusi millisekundite latentsusaegade ja jälgimisvõimalustega. Seadistamise hõlbustamiseks ja infrastruktuuri haldamiseks kasutasime Terraformi.

Järgmised sammud selle torujuhtme jaoks oleks mudeli koolituskonveieri täiustamine ümberõppevõimalustega, olenemata sellest, kas see on plaanitud või põhineb mudeli triivi tuvastamisel, toetada varikasutust või A/B-testimist mudeli kiiremaks ja kvalifitseeritud juurutamiseks ning ML-liinide jälgimist. Plaanime ka hinnata Amazon SageMakeri torujuhtmed sest GitLabi integreerimine on nüüd toetatud.

Õppetunnid

Selle lahenduse loomise osana saime teada, et üldistada tuleks varakult, kuid mitte üle üldistada. Kui me esimest korda arhitektuurikujunduse lõpetasime, püüdsime parima tavana luua ja jõustada mudelikoodi jaoks koodimalli. Kuid see oli arendusprotsessi alguses, et mallid olid kas liiga üldistatud või liiga üksikasjalikud, et neid tulevaste mudelite jaoks uuesti kasutada.

Pärast esimese mudeli tarnimist torujuhtme kaudu tulid mallid meie varasemast tööst saadud arusaamade põhjal loomulikult välja. Torujuhe ei suuda esimesest päevast kõike teha.

Mudeli katsetamisel ja produtseerimisel on sageli väga erinevad (või mõnikord isegi vastuolulised) nõuded. Ülioluline on neid nõudeid meeskonnana algusest peale tasakaalustada ja vastavalt prioriteete seada.

Lisaks ei pruugi te teenuse kõiki funktsioone vajada. Teenuse oluliste funktsioonide kasutamine ja modulaarne disain on tõhusama arenduse ja paindliku torustiku võtmeks.

Järeldus

Selles postituses näitasime, kuidas ehitasime SageMakeri ja Amazon MWAA abil MLOps-lahenduse, mis automatiseeris mudelite tootmisse juurutamise protsessi, andmeteadlaste vähese käsitsi sekkumisega. Soovitame teil hinnata erinevaid AWS-teenuseid, nagu SageMaker, Amazon MWAA, Amazon S3 ja Amazon ECR, et luua terviklik MLOps-lahendus.

*Apache, Apache Airflow ja Airflow on ettevõtte registreeritud kaubamärgid või kaubamärgid Apache Software Foundation Ameerika Ühendriikides ja / või teistes riikides.


Autoritest

 Deepak Mettem on VMware, süsinikmusta üksuse vaneminsenerijuht. Tema ja tema meeskond töötavad selle nimel, et luua voogedastuspõhiseid rakendusi ja teenuseid, mis on väga kättesaadavad, skaleeritavad ja vastupidavad, et tuua klientidele masinõppepõhiseid lahendusi reaalajas. Tema ja tema meeskond vastutavad ka tööriistade loomise eest, mis on vajalikud andmeteadlastele oma ML-mudelite tootmiseks, koolitamiseks, juurutamiseks ja valideerimiseks.

Mahima Agarwal on masinõppeinsener VMware'is, süsinikmusta üksuses.
Ta töötab VMware CB SBU masinõppeplatvormi põhikomponentide ja arhitektuuri kavandamise, ehitamise ja arendamisega.

Vamshi Krishna Enabothala on AWS-i rakendusliku tehisintellekti spetsialist arhitekt. Ta teeb koostööd erinevatest sektoritest pärit klientidega, et kiirendada suure mõjuga andmete, analüütika ja masinõppe algatusi. Ta on kirglik AI ja ML soovitussüsteemide, NLP ja arvutinägemise valdkondade vastu. Väljaspool tööd on Vamshi RC-entusiast, kes ehitab RC-seadmeid (lennukid, autod ja droonid) ning naudib ka aiatööd.

Sahil Thapar on ettevõtte lahenduste arhitekt. Ta teeb koostööd klientidega, et aidata neil luua AWS-i pilves väga kättesaadavaid, skaleeritavaid ja vastupidavaid rakendusi. Praegu on ta keskendunud konteineritele ja masinõppelahendustele.

Ajatempel:

Veel alates AWS-i masinõpe