IntelliCode Compose: нейросеть дополняет код с помощью Transformer

IntelliCode Compose — это инструмент для мультиязычного дополнения кода от Microsoft. Система предсказывает синтаксически корректную последовательность токенов кода по контексту предыдущих строчек. Модель обучали на 1.2 миллиардах строчек кода. В качестве архитектуры модели разработчики использовали GPT-2. На данный момент IntelliCode Compose работает для кода на Python, C#, JavaScript и TypeScript. Инструмент доступен в виде облачного веб-сервиса для Visual Studio Code IDE и Azure Notebook. Лучшая версия модели выдает предсказания, которые совпадают с оригинальным кодов с точностью 86.7% и с перплексией 1.82 для кода на Python.

Описание проблемы

В средах разработки программ (IDEs) функционал дополнения кода пользуется широкой популярностью. Тем не менее большинство IDE поддерживают функцию дополнения исключительно для методов и API или аргументов. Исследователи из Microsoft обучили Transformer-архитектуру дополнять код программ синтаксически корректным кодом. В качестве архитектуры использовали вариацию GPT-2 модели, — GPT-C, — которую обучили на данных исходного кода. IntelliCode Compose — это инструмент, который позволяет использовать GPT-C с эффективной системой кэширования. MultiGPT-C — это мультиязычная версия GPT-C.

Данные для обучения

Исследователи собрали датасет с исходным кодом, который состоит из 1.2 миллиарда строчек кода. Языки, на которых написан код, включают в себя Python, C#, JavaScript и TypeScript. Для датасета отобрали 52 тысячи открытых проектов на GitHub, у которых было наибольшее количество звезд. Всего датасет состоит из 4.7 миллионов файлов с исходным кодом.

Оценка работы модели

Для оценки работы модели исследователи сравнили ее с базовыми подходами, основанными на GPT-C. Ниже видно, что MultiGPT-C выдает более точные предсказания в сравнении с базовыми моделями.

Сравнение подходов для генерации кода, которые основаны на GPT-C
Подписаться
Уведомить о
guest

0 Comments
Межтекстовые Отзывы
Посмотреть все комментарии

gogpt