Automatiseer machine learning-werkstromen door AI in Visual Studio op te nemen
Kijk hoe gegevenswetenschappers en technici van de Microsoft Developer-divisie met behulp van machine learning-bewerkingsmethoden (MLOps) een geslaagd experiment hebben omgezet in een productfunctie voor de verwerking van veel verkeer.
Het volledige verhaal lezenDe uitdaging: Van prototype naar productie op schaal
Na zes maanden experimenten met AI-en machine learning met als doel de productiviteit van ontwikkelaars te verhogen, is het een klein team voor toegepaste gegevenswetenschap van de Microsoft Developer-divisie gelukt om een model te maken waarmee actief kon worden voorspeld welke C#-methoden een ontwikkelaar waarschijnlijk zou aanroepen voor het schrijven van code.
Dit succesvolle machine learning prototype werd de basis voor Visual Studio IntelliCode, een functie voor codevoorspelling met AI, maar niet voordat de strenge kwaliteits-, beschikbaarheids- en schaaltests werden uitgevoerd om te voldoen aan de vereisten van Visual Studio-gebruikers. Ze nodigden het engineeringteam uit om een machine learning-platform te maken en dat proces te automatiseren. Beide teams namen een MLOps-cultuur aan en breidden de DevOps-principes uit naar de end-to-end machine learning-levenscyclus.
Samen hebben het toegepaste wetenschapsteam en het technische team een machine learning-pijplijn gemaakt om het proces voor het trainen van modellen te herhalen, en om veel van het werk te automatiseren dat het toegepaste wetenschapsteam in de prototypefase handmatig had uitgevoerd. Deze pijplijn maakte het mogelijk dat IntelliCode zes programmeertalen kon ondersteunen en schalen, en regelmatig nieuwe modellen trainde waarbij gebruik werd gemaakt van codevoorbeelden die afkomstig waren uit een uitgebreide set open source GitHub-opslagplaatsen.

"Clearly, we were going to be doing a lot of compute-intensive model training on very large data sets every month—making the need for an automated, scalable, end-to-end machine learning pipeline all that more evident."
Gearard Boland, Principal Software Engineering Manager, Data and AI team
Profiteer van inzichten met MLOps
Bij het uitrollen van IntelliCode, zagen de teams een kans om nog betere gebruikerservaring te ontwerpen: het maken van teamvoltooiing-modellen op basis van de specifieke coderingsgewoonten van elke klant. Voor het aanpassen van deze machine learning-modellen aan uw persoonlijke voorkeur, is automatisch training en publicatie van modellen op aanvraag nodig, iedere keer wanneer een gebruiker van een Visual Studio of Visual Studio Code daarom vraagt. Voor het uitvoeren van deze functies op grote schaal, hebben de teams Azure-services zoals Azure Machine Learning, Azure Data Factory, Azure Batch en Azure Pipelines gebruikt.
"When we added support for custom models, the scalability and reliability of our training pipeline became even more important"
Gearard Boland, Principal Software Engineering Manager, Data and AI team
Twee verschillende perspectieven combineren
Om de machine learning-pijplijn te kunnen bouwen, moesten de teams gemeenschappelijke standaarden en richtlijnen definiëren, zodat ze een gemeenschappelijke taal spraken, best practices konden delen en beter konden samenwerken. Ze hadden ook meer inzicht in hoe elk van de andere teamleden het project benaderden. Terwijl het team van gegevenswetenschappers experimenteel bezig was, waarbij ze al snel uitkwamen bij het steeds weer maken van modellen, richtte het technische team zich op het waarmaken van verwachtingen die Visual Studio-gebruikers hadden over IntelliCode op het gebied van functies op productieniveau.
Op dit moment wordt de volledige machine learning-pijplijn (training, evaluatie, verpakking en implementatie) automatisch uitgevoerd en worden er meer dan 9000 aanvragen voor het maken van modellen door gebruikers van Visual Studio en Visual Studio Code verwerkt. De teams zijn op zoek naar manieren om hun pijplijn te gebruiken om extra AI-mogelijkheden in te bouwen in andere Microsoft-producten, om zo nog rijkere ervaringen aan klanten te kunnen aanbieden.