Arctic-SnowCoder : Démystification des données de haute qualité dans la préformation de code
Arctic-SnowCoder: Demystifying High-Quality Data in Code Pretraining
September 3, 2024
Auteurs: Yuxiang Wei, Hojae Han, Rajhans Samdani
cs.AI
Résumé
Des études récentes démontrent de plus en plus que des données de haute qualité sont cruciales pour un pré-entraînement efficace des modèles de langage. Cependant, la définition précise de "haute qualité" reste peu explorée. En se concentrant sur le domaine du code, nous introduisons Arctic-SnowCoder-1.3B, un modèle de code de base efficace en données pré-entraîné sur 555 milliards de jetons à travers trois phases de données progressivement affinées : (1) pré-entraînement général avec 500 milliards de jetons de code de qualité standard, prétraités par un filtrage de base, une déduplication et une décontamination, (2) poursuite du pré-entraînement avec 50 milliards de jetons de haute qualité, sélectionnés de la phase un par un annotateur de qualité de style BERT formé pour distinguer un bon code de données aléatoires, en utilisant des exemples positifs tirés de fichiers de code de haute qualité, ainsi que des données d'instructions de Magicoder et StarCoder2-Instruct, et (3) pré-entraînement amélioré avec 5 milliards de données synthétiques créées par Llama-3.1-70B en utilisant les données de la phase deux comme graines, en adaptant l'approche Magicoder pour le pré-entraînement. Malgré son entraînement sur un ensemble de données limité, Arctic-SnowCoder atteint des performances de pointe sur BigCodeBench, un banc d'essai de codage axé sur des tâches de programmation pratiques et difficiles, par rapport à des modèles de taille similaire entraînés sur pas plus de 1 billion de jetons, surpassant Phi-1.5-1.3B de 36%. Sur tous les bancs d'essai évalués, Arctic-SnowCoder-1.3B bat StarCoderBase-3B pré-entraîné sur 1 billion de jetons. De plus, il égale les performances des principaux petits modèles de code de base entraînés sur des billions de jetons. Par exemple, Arctic-SnowCoder-1.3B surpasse StarCoder2-3B, pré-entraîné sur plus de 3.3 billions de jetons, sur HumanEval+, un banc d'essai qui évalue la génération de code au niveau de la fonction, et reste compétitif sur BigCodeBench. Notre évaluation présente une analyse complète justifiant divers choix de conception pour Arctic-SnowCoder. Surtout, nous constatons que la clé de données de haute qualité est son alignement avec la distribution des applications en aval.
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.Summary
AI-Generated Summary