Направление языковых моделей кода с использованием глобального контекста через мониторы
Guiding Language Models of Code with Global Context using Monitors
June 19, 2023
Авторы: Lakshya A Agrawal, Aditya Kanade, Navin Goyal, Shuvendu K. Lahiri, Sriram K. Rajamani
cs.AI
Аннотация
Языковые модели для кода (LMs) работают эффективно, когда окружающий код вблизи места генерации предоставляет достаточный контекст. Однако это не так, когда необходимо использовать типы или функциональность, определенные в другом модуле или библиотеке, особенно тех, которые не встречались во время обучения. LMs страдают от ограниченного осознания такого глобального контекста и в результате могут "галлюцинировать", например, некорректно использовать типы, определенные в других файлах. Недавние исследования пытаются преодолеть эту проблему, извлекая глобальную информацию для расширения локального контекста. Однако это приводит к увеличению объема подсказки или требует модификации архитектуры и дополнительного обучения.
Интегрированные среды разработки (IDEs) помогают разработчикам, предоставляя глобальный контекст под рукой с использованием статического анализа. Мы расширяем эту помощь, доступную разработчикам, на LMs. Мы предлагаем концепцию мониторов, которые используют статический анализ в фоновом режиме для управления процессом декодирования. В отличие от априорного извлечения, статический анализ вызывается итеративно на протяжении всего процесса декодирования, предоставляя наиболее релевантные предложения по запросу. Мы демонстрируем полезность нашего предложения, отслеживая типосогласованное использование идентификаторов каждый раз, когда LM генерирует код для разыменования объекта.
Для оценки нашего подхода мы создали PragmaticCode — набор данных из проектов с открытым исходным кодом и их средами разработки. На моделях с различным масштабом параметров мы показываем, что декодирование с использованием мониторов последовательно улучшает способность LM не только генерировать идентификаторы, соответствующие эталонным данным, но также повышает процент успешной компиляции и согласованность с эталоном. Мы обнаружили, что LMs с меньшим количеством параметров, управляемые нашим монитором, могут превосходить более крупные LMs. С декодированием под управлением монитора модель SantaCoder-1.1B достигает лучшего процента успешной компиляции и соответствия следующего идентификатора, чем значительно более крупная модель text-davinci-003. Наборы данных и код будут доступны по адресу https://aka.ms/monitors4codegen.
English
Language models of code (LMs) work well when the surrounding code in the
vicinity of generation provides sufficient context. This is not true when it
becomes necessary to use types or functionality defined in another module or
library, especially those not seen during training. LMs suffer from limited
awareness of such global context and end up hallucinating, e.g., using types
defined in other files incorrectly. Recent work tries to overcome this issue by
retrieving global information to augment the local context. However, this
bloats the prompt or requires architecture modifications and additional
training.
Integrated development environments (IDEs) assist developers by bringing the
global context at their fingertips using static analysis. We extend this
assistance, enjoyed by developers, to the LMs. We propose a notion of monitors
that use static analysis in the background to guide the decoding. Unlike a
priori retrieval, static analysis is invoked iteratively during the entire
decoding process, providing the most relevant suggestions on demand. We
demonstrate the usefulness of our proposal by monitoring for type-consistent
use of identifiers whenever an LM generates code for object dereference.
To evaluate our approach, we curate PragmaticCode, a dataset of open-source
projects with their development environments. On models of varying parameter
scale, we show that monitor-guided decoding consistently improves the ability
of an LM to not only generate identifiers that match the ground truth but also
improves compilation rates and agreement with ground truth. We find that LMs
with fewer parameters, when guided with our monitor, can outperform larger LMs.
With monitor-guided decoding, SantaCoder-1.1B achieves better compilation rate
and next-identifier match than the much larger text-davinci-003 model. The
datasets and code will be released at https://aka.ms/monitors4codegen .