Apple представляет DiffuCoder: 7-миллиардная диффузионная модель для генерации кода
Apple и Университет Гонконга представили DiffuCoder — 7-миллиардную диффузионную модель, специально разработанную для генерации кода, демонстрирующую многообещающие результаты и новые методы обучения.
Диффузионные LLM: новый подход к генерации кода
Большие языковые модели (LLM) преобразили обработку естественного языка, успешно решая задачи от диалогов до генерации кода. Среди последних инноваций появились маскированные диффузионные модели, которые выросли в крупные диффузионные LLM, такие как LLaDA и Dream. Эти модели итеративно уточняют всю последовательность параллельно, обеспечивая глобальное планирование контента. Такой подход хорошо подходит для генерации кода, которая часто требует нелинейной, итеративной доработки, а не строгого слева направо. Однако производительность открытых диффузионных LLM на задачах кодирования остается неясной, так как существующие методы постобучения дают незначительный прирост или используют полуавторегрессионное декодирование, что противоречит природе диффузии.
Эволюция текстовых диффузионных моделей и их роль в синтезе кода
Ранние модели диффузии были основаны на маскированной диффузии, а последние достижения масштабировали их до крупных моделей, таких как DiffuLLaMA, LLaDA и Dream. Метод блочной диффузии предлагает гибридный подход с применением диффузии внутри блоков. Мультимодальные модели LaViDa, MMaDA и Dimple объединяют текстовые диффузионные модели с визуальными. В области генерации кода CodeFusion стал первым, кто использовал диффузионные модели, но он ограничен малыми моделями и простыми задачами. Коммерческие диффузионные LLM, такие как Mercury и Gemini, теперь сопоставимы с ведущими авторегрессионными моделями для кода. Тем не менее, методы обучения с подкреплением (RL) для диффузионных LLM, например d1 и MMaDA с GRPO, зависят от блочного диффузионного декодирования во время оценки.
DiffuCoder: специализированная диффузионная модель Apple и Гонконгского университета
Apple и Университет Гонконга представили DiffuCoder — маскированную диффузионную модель с 7 миллиардами параметров, специально созданную для генерации кода и обученную на 130 миллиардах эффективных токенов. DiffuCoder служит платформой для изучения поведения диффузионных LLM и улучшения методов постобучения. Исследователи ввели метрики локальной и глобальной авторегрессионности для оценки, насколько генерация следует слева направо. Анализ выявил эффект "энтропийного стока", вызывающий сильный причинно-следственный сдвиг при условной генерации. При увеличении температуры сэмплирования с 0.2 до 1.2 DiffuCoder становится более гибким в порядке генерации токенов, отказываясь от строгих ограничений слева направо и достигая более высокого pass@10.
Четырехэтапный тренировочный процесс с использованием RefineCode и Coupled-GRPO
DiffuCoder основан на Qwen-2.5-Coder и проходит непрерывное предобучение на корпусе из 400 миллиардов токенов кода RefineCode и Stackv2. Обучение включает четыре этапа: адаптационное предобучение, среднее обучение с 16 миллиардами аннулированных токенов кода, инструкционное дообучение с 436 тысячами образцов SFT и постобучение с coupled-GRPO на 21 тысяче сложных образцов Acecoder-87K. Раннее прекращение происходит после обработки 65 миллиардов токенов на первом этапе, второй этап длится 4 эпохи с общим объемом 65 миллиардов токенов. Оценка проводится на бенчмарках HumanEval, MBPP, EvalPlus и BigCodeBench, включая полные и сложные поднаборы с задачами дополнения и инструкций.
Результаты оценки и оптимизационные выводы
Обученный на 130 миллиардах токенов кода, DiffuCoder показывает производительность на уровне Qwen2.5-Coder и OpenCoder. Однако диффузионные LLM демонстрируют лишь незначительное улучшение по сравнению с базовыми моделями после инструкционного дообучения, в отличие от Qwen2.5-Coder+SFT, который достигает значительных улучшений на тех же данных. Обучение с coupled-GRPO показывает высокую эффективность, в то время как базовые методы, такие как d1, полное маскирование и раздельная выборка, часто приводят к нестабильному обучению наградам. Дообучение с RL повышает оптимальную температуру сэмплирования во время оценки с 0.2 до более высоких значений, что указывает на более острое распределение по токенам. Это снижает зависимость от строгого авторегрессионного декодирования и улучшает способность модели генерировать токены параллельно.
Coupled-GRPO и будущее диффузионных моделей для кода
В работе представлен DiffuCoder — 7-миллиардная открытая диффузионная модель для кода с сильными результатами, полной методикой обучения и подробным анализом диффузионных LLM. Coupled-GRPO — алгоритм RL, учитывающий неавторегрессионную природу диффузионных моделей через технику совместной выборки для более точной оценки правдоподобия. Это улучшает производительность DiffuCoder и демонстрирует потенциал RL, ориентированного на диффузионные принципы. Исследование закладывает основу для будущих разработок и применения диффузионных LLM в сложном рассуждении и генеративных задачах.
Изучите статью и исходные коды, чтобы узнать больше о DiffuCoder и его возможностях. Этот проект знаменует важный шаг вперед в технологии генерации кода.
Switch Language
Read this article in English