InverseCoder: Sfruttare il Potere dei Modelli Linguistici di Codice Ottimizzati per Istruzioni con Inverse-Instruct
InverseCoder: Unleashing the Power of Instruction-Tuned Code LLMs with Inverse-Instruct
July 8, 2024
Autori: Yutong Wu, Di Huang, Wenxuan Shi, Wei Wang, Lingzhe Gao, Shihao Liu, Ziyuan Nan, Kaizhao Yuan, Rui Zhang, Xishan Zhang, Zidong Du, Qi Guo, Yewen Pu, Dawei Yin, Xing Hu, Yunji Chen
cs.AI
Abstract
I recenti progressi nei modelli linguistici di grandi dimensioni (LLM) open-source per il codice hanno dimostrato notevoli capacità di programmazione attraverso il fine-tuning sui dati generati da potenti LLM closed-source come GPT-3.5 e GPT-4 per il tuning delle istruzioni. Questo articolo esplora come migliorare ulteriormente un LLM per il codice con tuning delle istruzioni generando dati da sé stesso piuttosto che interrogando LLM closed-source. La nostra osservazione chiave è il disallineamento tra la traduzione di linguaggi formali e informali: tradurre un linguaggio formale (cioè, il codice) in un linguaggio informale (cioè, il linguaggio naturale) è più semplice rispetto al contrario. Sulla base di questa osservazione, proponiamo INVERSE-INSTRUCT, che sintetizza le istruzioni dai frammenti di codice invece del contrario. Nello specifico, dato un corpus di tuning delle istruzioni per il codice e il risultante LLM per il codice con tuning delle istruzioni, chiediamo al LLM per il codice di generare ulteriori istruzioni di alta qualità per il corpus originale attraverso la sintesi del codice e l'autovalutazione. Successivamente, eseguiamo il fine-tuning del LLM di base sulla combinazione del corpus originale e di quello autogenerato, ottenendo un LLM con tuning delle istruzioni più potente. Presentiamo una serie di LLM per il codice denominati InverseCoder, che superano le prestazioni degli LLM per il codice originali su un'ampia gamma di benchmark, inclusa la generazione di codice Python da testo, la programmazione multilingue e la generazione di codice per la scienza dei dati.
English
Recent advancements in open-source code large language models (LLMs) have
demonstrated remarkable coding abilities by fine-tuning on the data generated
from powerful closed-source LLMs such as GPT-3.5 and GPT-4 for instruction
tuning. This paper explores how to further improve an instruction-tuned code
LLM by generating data from itself rather than querying closed-source LLMs. Our
key observation is the misalignment between the translation of formal and
informal languages: translating formal language (i.e., code) to informal
language (i.e., natural language) is more straightforward than the reverse.
Based on this observation, we propose INVERSE-INSTRUCT, which summarizes
instructions from code snippets instead of the reverse. Specifically, given an
instruction tuning corpus for code and the resulting instruction-tuned code
LLM, we ask the code LLM to generate additional high-quality instructions for
the original corpus through code summarization and self-evaluation. Then, we
fine-tune the base LLM on the combination of the original corpus and the
self-generated one, which yields a stronger instruction-tuned LLM. We present a
series of code LLMs named InverseCoder, which surpasses the performance of the
original code LLMs on a wide range of benchmarks, including Python text-to-code
generation, multilingual coding, and data-science code generation.