Trace Id is missing
Gå til hovedinnhold
Azure

Automatisere arbeidsflytene for maskinlæring for å legge til kunstig intelligens i Visual Studio

Automatisere arbeidsflytene for maskinlæring for å legge til kunstig intelligens i Visual Studio

Se hvordan dataforskere og -teknikere i Microsofts utvikleravdeling gjorde et vellykket eksperiment om til en populær funksjon med maskinlæringsoperasjoner (MLOps).

Utfordringen: Fra prototype til skalert produksjon

Et lite team fra Microsofts utvikleravdeling, som bestod av eksperter innen anvendt datavitenskap, brukte seks måneder på å eksperimentere med kunstig intelligens og maskinlæring rettet mot å forbedre produktiviteten til utviklerne. De kom frem til en modell som aktivt forutså hvilke C#-metoder det var sannsynlig at en utvikler kalte opp under kodingen.

Denne vellykkede prototypen for maskinlæring dannet grunnlaget for Visual Studio IntelliCode, en funksjon for kodeprediksjon basert på kunstig intelligens. Først måtte funksjonen imidlertid gjennom omfattende kvalitets-, tilgjengelighets- og skaleringstesting for å sikre at den oppfylte kravene til Visual Studio-brukerne. Teknikerteamet ble bedt om å opprette en maskinlæringsplattform og automatisere prosessen. Begge teamene måtte ta i bruk en MLOps-kultur for å utvide DevOps-prinsippene til hele livssyklusen for maskinlæring.

Sammen bygget datavitenskaps- og teknikerteamene et datasamlebånd for maskinlæring som gjentar prosessen for modellæring og automatiserer mye av arbeidet som dataforskerne gjorde manuelt på prototypetrinnet. Med dette datasamlebåndet kunne IntelliCode skalere og støtte seks dataspråk og jevnlig lære opp nye modeller med kodeeksempler fra et omfattende sett GitHub-repositorier med åpen kildekode.

To personer som har en samtale og tegner et diagram på en tavle

Utfordringen: Fra prototype til skalert produksjon

Utfordringen: Tilpasse seg til en skydriftsmodell

"Vi skulle tydelig gjøre mye databehandlingsintensiv modellopplæring på svært store datasett hver måned—noe som gjorde behovet for et automatisert, skalerbart, ende-til-ende-datasamlebånd for maskinlæring mye tydeligere."

Gearard Boland, Principal Software Engineering Manager i teamet for data og kunstig intelligens

Dra nytte av innsikt med MLOps

Etter hvert som IntelliCode ble rullet ut, så teamene en mulighet til å designe en enda bedre brukeropplevelse ved å opprette teamfullføringsmodeller basert på hver kundes spesifikke kodevaner. Tilpassing av disse maskinlæringsmodellene krever at modeller automatisk læres opp og publiseres ved behov,—hver gang en Visual Studio- eller Visual Studio Code-bruker ber om det. For å kunne utføre disse funksjonene i ønsket skala med det eksisterende datasamlebåndet brukte teamene Azure-tjenester som Azure Machine LearningAzure Data FactoryAzure Batchog Azure Pipelines.

Utfordringen: Tilpasse seg til en skydriftsmodell

"Da vi la til støtte for egendefinerte modeller, ble skalerbarheten og påliteligheten til opplæringssamlebåndet enda viktigere"

Gearard Boland, Principal Software Engineering Manager i teamet for data og kunstig intelligens

To ulike perspektiver forenes

For å kunne bygge datasamlebåndet for maskinlæring måtte teamene definere felles standarder og retningslinjer, slik at de kunne snakke samme språk, dele anbefalte fremgangsmåter og samarbeide bedre. De måtte også forstå hverandres tilnærminger til prosjektet. Datavitenskapsteamet jobbet eksperimentelt, med rask gjentakelse av modellopprettingen, mens teknikerne fokuserte på å sikre at IntelliCode oppfylte Visual Studio-brukernes forventninger til funksjoner på produksjonsnivået.

I dag kjører hele datasamlebåndet for maskinlæring – opplæring, evaluering, pakking og utrulling – automatisk og betjener mer enn 9000 forespørsler om modelloppretting fra Visual Studio- og Visual Studio Code-brukere hver måned. Teamene undersøker hvordan de kan bruke datasamlebåndet til å bygge mer funksjonalitet for kunstig intelligens inn i andre Microsoft-produkter, og gi kundene en enda bedre opplevelse.

" "

Se hvordan teamene implementerte MLOps trinn for trinn.