Apple и Университет Гонконга предложили DiffuCoder — это замаскированная диффузионная модель масштаба 7B, специализированная для генерации кода. Она обучена на 130 миллиардах эффективных токенов.
Диффузионные модели LLM как сдвиг парадигмы в генерации кода
Модели LLM произвели революцию в обработке естественного языка, показав впечатляющие результаты в различных задачах, от диалога до генерации кода. Маскированные диффузионные модели стали альтернативой и были масштабированы до диффузионных моделей LLM, таких как LLaDA и Dream.
Эта модель итеративно совершенствует всю последовательность параллельно, что позволяет глобально планировать содержание. Подход диффузионных LLM хорошо подходит для генерации кода, поскольку написание кода часто включает в себя непоследовательное уточнение. Однако остаётся неясным, как диффузионные модели с открытым исходным кодом справляются с задачами кодирования.
Ранние модели текстовой диффузии включают маскированные диффузионные модели. Недавние усилия по масштабированию привели к созданию диффузионных LLM, таких как DiffuLLaMA, LLaDA и Dream.
Эволюция моделей текстовой диффузии и их влияние на синтез кода
Исследователи из Apple и Университета Гонконга предложили DiffuCoder — замаскированную диффузионную модель масштаба 7B, специализированную для генерации кода.
DiffuCoder обучен на 130 миллиардах эффективных токенов, что делает его ценным тестовым полигоном для изучения поведения диффузионных LLM и продвижения методов пост-тренинга. Исследователи вводят локальные и глобальные метрики авторегрессии, чтобы измерить, насколько генерация соответствует шаблону слева направо.
Анализ показывает, что диффузионные LLM демонстрируют эффект энтропийного стока, вызывая сильное причинное смещение во время условной генерации. DiffuCoder становится более гибким в порядке генерации токенов по мере увеличения температуры выборки с 0,2 до 1,2, освобождаясь от строгих ограничений слева направо и достигая более высокой точности pass@10.
Четырёхэтапный тренировочный конвейер с использованием RefineCode и Coupled-GRPO
Исследователи адаптируют свою модель на основе Qwen-2.5-Coder в качестве базовой модели и выполняют непрерывное предварительное обучение, используя корпус предварительного кодирования объёмом 400 миллиардов токенов из RefineCode и Stackv2.
Тренировка состоит из четырёх этапов:
* адаптация предварительного обучения;
* среднее обучение с 16 миллиардами токенов данных кода;
* настройка инструкций с 436 тысячами образцов SFT;
* пост-тренинг с использованием Coupled-GRPO с 21 тысячей жёстких образцов из Acecoder-87K.
На этапе 1 применяется ранняя остановка после обработки 65 миллиардов токенов. Этап 2 обучен в течение 4 эпох, в результате чего получается в общей сложности 65 миллиардов токенов. Среды оценки построены с использованием трёх кодовых тестов — HumanEval, MBPP и EvalPlus, а также BigCodeBench. Они включают как полные, так и жёсткие подмножества, охватывающие типы запросов для завершения и на основе инструкций.
Результаты тестирования: производительность и оптимизация DiffuCoder
DiffuCoder, обученный на 130 миллиардах кодовых токенов, достигает производительности наравне с Qwen2.5-Coder и OpenCoder. Однако все dLLM показывают лишь незначительное улучшение по сравнению с базовыми моделями после настройки инструкций по сравнению с Qwen2.5-Coder+SFT, который достигает значительных улучшений после настройки инструкций на тех же данных.
Более того, обучение с использованием Coupled-GRPO показывает высокую эффективность, в то время как базовые варианты, такие как d1, полное маскированное завершение и несвязанная выборка, демонстрируют нестабильное поведение при обучении с подкреплением.
Тонкая настройка с помощью RL увеличивает оптимальную температуру выборки во время оценки с 0,2 до более высоких значений, что говорит о том, что обучение уточняет распределение токенов. Это снижает зависимость модели от строгого авторегрессивного декодирования и повышает её способность генерировать токены параллельно.
Coupled-GRPO и будущее диффузионных моделей кода
В этой статье исследователи представляют DiffuCoder — диффузионную модель с открытым исходным кодом масштаба 7B для кода с высокой производительностью, а также её полный рецепт обучения и подробный анализ dLLM для генерации кода.
Они также представляют Coupled-GRPO — алгоритм RL, который учитывает неавторегрессивную природу dLLM с помощью метода совместной выборки для более точной оценки правдоподобия. Coupled-GRPO улучшает производительность DiffuCoder, демонстрируя эффективность методов RL, соответствующих принципам диффузии.
Эта работа предлагает сообществу более глубокое понимание dLLM и закладывает прочную основу для будущих исследований их применения в сложных рассуждениях и генеративных задачах.
1. Какие преимущества предлагает модель DiffuCoder для генерации кода по сравнению с предыдущими моделями?
Ответ: DiffuCoder — это замаскированная диффузионная модель масштаба 7B, специализированная для генерации кода. Она обучена на 130 миллиардах эффективных токенов. Модель итеративно совершенствует всю последовательность параллельно, что позволяет глобально планировать содержание. Это делает её более гибкой в порядке генерации токенов и повышает точность.
2. Какие этапы включает в себя тренировочный конвейер DiffuCoder?
Ответ: тренировочный конвейер DiffuCoder состоит из четырёх этапов: адаптация предварительного обучения, среднее обучение с 16 миллиардами токенов данных кода, настройка инструкций с 436 тысячами образцов SFT и пост-тренинг с использованием Coupled-GRPO с 21 тысячей жёстких образцов из Acecoder-87K.
3. Какие результаты были получены при тестировании DiffuCoder?
Ответ: DiffuCoder, обученный на 130 миллиардах кодовых токенов, достигает производительности наравне с Qwen2.5-Coder и OpenCoder. Обучение с использованием Coupled-GRPO показывает высокую эффективность, в то время как базовые варианты демонстрируют нестабильное поведение при обучении с подкреплением. Тонкая настройка с помощью RL увеличивает оптимальную температуру выборки во время оценки, что снижает зависимость модели от строгого авторегрессивного декодирования и повышает её способность генерировать токены параллельно.
4. Что такое Coupled-GRPO и как он влияет на производительность DiffuCoder?
Ответ: Coupled-GRPO — это алгоритм RL, который учитывает неавторегрессивную природу dLLM с помощью метода совместной выборки для более точной оценки правдоподобия. Coupled-GRPO улучшает производительность DiffuCoder, демонстрируя эффективность методов RL, соответствующих принципам диффузии.
5. Какие перспективы открывает представленная работа для будущих исследований в области диффузионных моделей кода?
Ответ: работа предлагает сообществу более глубокое понимание dLLM и закладывает прочную основу для будущих исследований их применения в сложных рассуждениях и генеративных задачах.