Automatyzowanie przepływów pracy uczenia maszynowego w celu wprowadzenia sztucznej inteligencji do programu Visual Studio
Zobacz, jak analitycy danych i inżynierowie z działu deweloperów firmy Microsoft przekształcili udany eksperyment w często wykorzystywaną funkcję produktu dzięki praktykom operacji uczenia maszynowego (MLOps).
Przeczytaj całą historięWyzwanie: Od prototypu do produkcji na dużą skalę
Po sześciu miesiącach eksperymentów ze sztuczną inteligencją i uczeniem maszynowym, mających na celu zwiększenie produktywności deweloperów, mały zespół analityków danych stosowanych w dziale deweloperów firmy Microsoft opracował model, który aktywnie przewidywał metody języka C#, które deweloper prawdopodobnie wywoła podczas kodowania.
Ten pomyślny prototyp uczenia maszynowego stałby się podstawą dla Visual Studio IntelliCode, funkcji przewidywania kodu wspomaganej przez sztuczną inteligencję, ale dopiero wtedy, gdy przeszła rygorystyczne testy jakości, dostępności i skalowania, aby spełnić wymagania użytkowników programu Visual Studio. Musieliby zaprosić zespół inżynierów do utworzenia platformy uczenia maszynowego i zautomatyzowania tego procesu. Oba zespoły musiałyby wdrożyć kulturę MLOps—rozszerzając zasady metodyki DevOps na kompleksowy cykl życia uczenia maszynowego.
Zespoły nauki stosowanej i inżynieryjny wspólnie opracowały potok uczenia maszynowego do iterowania procesu trenowania modelu i automatyzowania dużej części pracy, którą zespół nauki stosowanej wykonywał ręcznie na etapie prototypu. Ten potok umożliwił skalowanie funkcji IntelliCode oraz obsługę 6 języków programowania dzięki regularnemu trenowaniu nowych modeli przy użyciu przykładów kodu z obszernego zestawu repozytoriów GitHub typu open-source.

"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, główny menedżer ds. inżynierii oprogramowania, zespół danych i sztucznej inteligencji
Wykorzystywanie szczegółowych informacji za pomocą operacji MLOps
W miarę wdrażania funkcji IntelliCode zespoły widziały możliwość zaprojektowania jeszcze lepszego środowiska użytkownika: tworzenie modeli uzupełniania zespołu na podstawie określonych nawyków kodowania poszczególnych klientów. Personalizowanie tych modeli uczenia maszynowego wymagałoby automatycznego trenowania i publikowania modeli na żądanie za każdym razem, gdy użytkownik programu Visual Studio lub Visual Studio Code o to prosi. Aby wykonywać te funkcje na dużą skalę przy użyciu istniejącego potoku, zespoły używały usług platformy Azure, takich jak Azure Machine Learning, Azure Data Factory, Azure Batch i Azure Pipelines.
"When we added support for custom models, the scalability and reliability of our training pipeline became even more important"
Gearard Boland, główny menedżer ds. inżynierii oprogramowania, zespół danych i sztucznej inteligencji
Połączenie dwóch różnych perspektyw
Aby utworzyć proces uczenia maszynowego, zespoły musiały zdefiniować wspólne standardy i wytyczne, aby mogły mówić wspólnym językiem, dzielić się najlepszymi rozwiązaniami i lepiej ze sobą współpracować. Musiały również wzajemnie zrozumieć swoje podejścia do projektu. Podczas gdy zespół ds. analizy danych pracował eksperymentalnie — wykonując szybkie iteracje tworzenia modelu — zespół inżynieryjny skupił się na zapewnieniu, że funkcja IntelliCode spełnia oczekiwania użytkowników programu Visual Studio dotyczące funkcji na poziomie produkcyjnym.
Obecnie cały potok uczenia maszynowego — trenowanie, ewaluacja, pakowanie i wdrażanie — działa automatycznie i obsługuje miesięcznie ponad 9000 żądań tworzenia modelu od użytkowników programów Visual Studio i Visual Studio Code. Zespoły szukają sposobów wykorzystania ich potoku w celu wbudowania dodatkowych funkcji sztucznej inteligencji w inne produkty firmy Microsoft i zapewnienia klientom jeszcze bogatszych środowisk obsługi.