Robust Learning of Diverse Code Edits
By: Tushar Aggarwal , Swayam Singh , Abhijeet Awasthi and more
Potential Business Impact:
Helps computers fix and change computer code better.
Software engineering activities frequently involve edits to existing code. However, contemporary code language models (LMs) lack the ability to handle diverse types of code-edit requirements. In this work, we attempt to overcome this shortcoming through (1) a novel synthetic data generation pipeline and (2) a robust model adaptation algorithm. Starting with seed code examples and diverse editing criteria, our pipeline generates high-quality samples comprising original and modified code, along with natural language instructions in different styles and verbosity. Today's code LMs come bundled with strong abilities, such as code generation and instruction following, which should not be lost due to fine-tuning. To ensure this, we propose a novel adaptation algorithm, SeleKT, that (a) leverages a dense gradient-based step to identify the weights that are most important for code editing, and (b) does a sparse projection onto the base model to avoid overfitting. Using our approach, we obtain a new series of models NextCoder (adapted from QwenCoder-2.5) that achieves strong results on five code-editing benchmarks, outperforming comparable size models and even several larger ones. We show the generality of our approach on two model families (DeepSeekCoder and QwenCoder), compare against other fine-tuning approaches, and demonstrate robustness by showing retention of code generation and general problem-solving abilities post adaptation. We opensource the models, synthetic dataset, and implementation at https://aka.ms/nextcoder.
Similar Papers
Seed-Coder: Let the Code Model Curate Data for Itself
Computation and Language
Makes computers write and understand code better.
Data-efficient LLM Fine-tuning for Code Generation
Computation and Language
Trains computers to write better code faster.
Understanding Robustness of Model Editing in Code LLMs: An Empirical Study
Software Engineering
Makes computer code programs work better.