Automatisera maskininlärningsarbetsflöden för att införliva AI i Visual Studio
Automatisera maskininlärningsarbetsflöden för att införliva AI i Visual Studio
Se hur dataforskare och tekniker på Microsofts utvecklaravdelning omvandlade ett lyckat experiment till en funktion med hög trafik med MLOps-metoder (maskininlärningsdrift).
Utmaningen: Från prototyp till produktion i stor skala
Efter sex månader med AI- och maskininlärningsexperiment med syfte att förbättra produktiviteten för utvecklare har ett litet team med dataexperter på Microsofts utvecklaravdelning tagit fram en modell som aktivt kunde förutse vilka C#-metoder som utvecklare sannolikt skulle anropa när de kodade.
Den här lyckade maskininlärningsprototypen skulle bli grund för Visual Studio IntelliCode, en AI-baserad funktion för kodförutsägelse, men först måste den genomgå rigorösa tester för kvalitet, tillgänglighet och skalning för att uppfylla kraven för Visual Studio-användare. De skulle behöva bjuda in teknikteamet för att skapa en maskininlärningsplattform och automatisera processen. Och båda teamen skulle behöva använda en MLOps-kultur – för att utöka DevOps-principer till maskininlärningslivscykeln från slutpunkt till slutpunkt.
Tillsammans skapade vetenskaps- och teknikteamen en maskininlärningspipeline som itererar på modellträningsprocessen och automatiserar mycket av arbetet som vetenskapsteamet gjorde manuellt i prototypfasen. Tack vare pipelinen kunde IntelliCode skala och stöda sex programmeringsspråk, och regelbundet träna nya modeller med hjälp av kodexempel från en omfattande uppsättning GitHub-databaser med öppen källkod.
Utmaningen: Från prototyp till produktion i stor skala
Utmaningen: Anpassa till en molndriftsmodell
"Det var uppenbart att vi behövde göra en hel del beräkningsintensiv modellträning på mycket stora datamängder varje månad – vilket gjorde behovet av en automatiserad, skalbar maskininlärningspipeline för hela processen ännu tydligare."
Gearard Boland, Principal Software Engineering Manager, data- och AI-teamet
Dra nytta av insikter med MLOps
När IntelliCode distribuerades såg teamen en möjlighet att utforma en ännu bättre användarupplevelse: att skapa modeller för teamslutförande utifrån varje kunds specifika kodningsvanor. Anpassning av maskininlärningsmodellerna skulle kräva träning och publicering av modeller på begäran automatiskt – så fort en användare av Visual Studio eller Visual Studio Code kräver det. För att utföra dessa funktioner i stor skala med hjälp av den befintliga pipelinen använde teamen Azure-tjänster som Azure Machine Learning, Azure Data Factory, Azure Batch och Azure Pipelines.
Utmaningen: Anpassa till en molndriftsmodell
"När vi lade till stöd för anpassade modeller blev skalbarheten och tillförlitligheten hos vår träningspipeline ännu viktigare"
Gearard Boland, Principal Software Engineering Manager, data- och AI-teamet
Sammanför två olika perspektiv
För att skapa en pipeline för maskininlärning var teamen tvungna att definiera gemensamma standarder och riktlinjer så att de kunde tala ett gemensamt språk, dela metodtips och samarbeta bättre. De var också tvungna att förstå varandras metoder för projektet. Medan datavetenskapsteamet arbetade experimentellt med snabb iterering vid modellskapandet, fokuserade teknikteamet på att se till att IntelliCode uppfyllde Visual Studio-användarnas förväntningar på funktioner på produktionsnivå.
Idag körs hela pipelinen för maskininlärning – träning, utvärdering, paketering och distribution – automatiskt och hanterar mer än 9 000 begäranden om modellskapande per månad från Visual Studio- och Visual Studio Code-användare. Teamen söker efter sätt att använda sin pipeline till att skapa ytterligare AI-funktioner i andra Microsoft-produkter och erbjuda kunderna ännu bättre upplevelser.