Guiando Modelos de Linguagem de Código com Contexto Global usando Monitores
Guiding Language Models of Code with Global Context using Monitors
June 19, 2023
Autores: Lakshya A Agrawal, Aditya Kanade, Navin Goyal, Shuvendu K. Lahiri, Sriram K. Rajamani
cs.AI
Resumo
Modelos de linguagem de código (LMs) funcionam bem quando o código circundante na vizinhança da geração fornece contexto suficiente. Isso não é verdade quando se torna necessário usar tipos ou funcionalidades definidos em outro módulo ou biblioteca, especialmente aqueles não vistos durante o treinamento. Os LMs sofrem com uma consciência limitada desse contexto global e acabam alucinando, por exemplo, usando tipos definidos em outros arquivos de forma incorreta. Trabalhos recentes tentam superar esse problema recuperando informações globais para aumentar o contexto local. No entanto, isso incha o prompt ou requer modificações na arquitetura e treinamento adicional.
Ambientes de desenvolvimento integrados (IDEs) auxiliam os desenvolvedores trazendo o contexto global ao alcance das mãos usando análise estática. Estendemos essa assistência, desfrutada pelos desenvolvedores, aos LMs. Propomos uma noção de monitores que usam análise estática em segundo plano para guiar a decodificação. Diferente da recuperação a priori, a análise estática é invocada iterativamente durante todo o processo de decodificação, fornecendo as sugestões mais relevantes sob demanda. Demonstramos a utilidade de nossa proposta monitorando o uso consistente de tipos de identificadores sempre que um LM gera código para desreferenciação de objetos.
Para avaliar nossa abordagem, criamos o PragmaticCode, um conjunto de dados de projetos de código aberto com seus ambientes de desenvolvimento. Em modelos de escala variável de parâmetros, mostramos que a decodificação guiada por monitor melhora consistentemente a capacidade de um LM não apenas de gerar identificadores que correspondem à verdade fundamental, mas também melhora as taxas de compilação e a concordância com a verdade fundamental. Descobrimos que LMs com menos parâmetros, quando guiados por nosso monitor, podem superar LMs maiores. Com a decodificação guiada por monitor, o SantaCoder-1.1B alcança uma taxa de compilação e correspondência de próximo identificador melhor do que o modelo muito maior text-davinci-003. Os conjuntos de dados e o código serão liberados em 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 .