Arctic-SnowCoder: Svelare l'Alta Qualità dei Dati nella Preformazione del Codice
Arctic-SnowCoder: Demystifying High-Quality Data in Code Pretraining
September 3, 2024
Autori: Yuxiang Wei, Hojae Han, Rajhans Samdani
cs.AI
Abstract
Studi recenti stanno dimostrando sempre più che dati di alta qualità sono cruciali per un efficace preaddestramento dei modelli linguistici. Tuttavia, la definizione precisa di "alta qualità" rimane poco esplorata. Concentrandoci sul dominio del codice, presentiamo Arctic-SnowCoder-1.3B, un modello di base efficiente nei dati preaddestrato su 555 miliardi di token attraverso tre fasi di dati progressivamente raffinati: (1) preaddestramento generale con 500 miliardi di token di codice di qualità standard, preprocessati tramite filtraggio di base, deduplicazione e decontaminazione, (2) continuazione del preaddestramento con 50 miliardi di token di alta qualità, selezionati dalla fase uno da un annotatore di qualità in stile BERT addestrato a distinguere il buon codice dai dati casuali, utilizzando esempi positivi tratti da file di codice di alta qualità, insieme a dati di istruzione da Magicoder e StarCoder2-Instruct, e (3) preaddestramento potenziato con 5 miliardi di dati sintetici creati da Llama-3.1-70B utilizzando i dati della fase due come semi, adattando l'approccio di Magicoder per il preaddestramento. Nonostante sia stato addestrato su un dataset limitato, Arctic-SnowCoder raggiunge prestazioni all'avanguardia su BigCodeBench, un benchmark di codifica focalizzato su compiti di programmazione pratici e impegnativi, rispetto a modelli di dimensioni simili addestrati su non più di 1 trilione di token, superando Phi-1.5-1.3B del 36%. Su tutti i benchmark valutati, Arctic-SnowCoder-1.3B batte StarCoderBase-3B preaddestrato su 1 trilione di token. Inoltre, eguaglia le prestazioni dei principali modelli di base di codice ridotto addestrati su trilioni di token. Ad esempio, Arctic-SnowCoder-1.3B supera StarCoder2-3B, preaddestrato su oltre 3,3 trilioni di token, su HumanEval+, un benchmark che valuta la generazione di codice a livello di funzione, e rimane competitivo su BigCodeBench. La nostra valutazione presenta un'analisi completa che giustifica varie scelte progettuali per Arctic-SnowCoder. In particolare, scopriamo che la chiave per dati di alta qualità è la loro allineamento con la distribuzione delle applicazioni downstream.
English
Recent studies have been increasingly demonstrating that high-quality data is
crucial for effective pretraining of language models. However, the precise
definition of "high-quality" remains underexplored. Focusing on the code
domain, we introduce Arctic-SnowCoder-1.3B, a data-efficient base code model
pretrained on 555B tokens through three phases of progressively refined data:
(1) general pretraining with 500B standard-quality code tokens, preprocessed
through basic filtering, deduplication, and decontamination, (2) continued
pretraining with 50B high-quality tokens, selected from phase one by a
BERT-style quality annotator trained to distinguish good code from random data,
using positive examples drawn from high-quality code files, along with
instruction data from Magicoder and StarCoder2-Instruct, and (3) enhanced
pretraining with 5B synthetic data created by Llama-3.1-70B using phase two
data as seeds, adapting the Magicoder approach for pretraining. Despite being
trained on a limited dataset, Arctic-SnowCoder achieves state-of-the-art
performance on BigCodeBench, a coding benchmark focusing on practical and
challenging programming tasks, compared to similarly sized models trained on no
more than 1T tokens, outperforming Phi-1.5-1.3B by 36%. Across all evaluated
benchmarks, Arctic-SnowCoder-1.3B beats StarCoderBase-3B pretrained on 1T
tokens. Additionally, it matches the performance of leading small base code
models trained on trillions of tokens. For example, Arctic-SnowCoder-1.3B
surpasses StarCoder2-3B, pretrained on over 3.3T tokens, on HumanEval+, a
benchmark that evaluates function-level code generation, and remains
competitive on BigCodeBench. Our evaluation presents a comprehensive analysis
justifying various design choices for Arctic-SnowCoder. Most importantly, we
find that the key to high-quality data is its alignment with the distribution
of downstream applications.