Переосмысление обучения Code LLM с помощью масштабируемых автоматизированных конвейеров данных
Данные о коде играют ключевую роль в обучении LLM, помогая не только в задачах кодирования, но и в более широких логических способностях. Хотя многие модели с открытым исходным кодом полагаются на ручную фильтрацию и специально разработанные экспертами правила для отбора наборов данных по коду, эти подходы отнимают много времени, предвзяты и трудно масштабируются между языками.
Проприетарные модели, такие как Claude 3.7 и OpenAI o3, отлично справляются с задачами кодирования, но не делятся подробностями о своих данных. Даже модели с открытым исходным кодом, такие как DeepSeek и Qwen2.5, по-прежнему в значительной степени зависят от фильтров, разработанных человеком. Однако такая зависимость ограничивает прогресс, подтверждая «Горький урок» о том, что настоящие прорывы происходят благодаря масштабируемым методам, основанным на данных, а не ручным эвристикам.
Конвейер Seed-Coder, ориентированный на модель, минимизирует зависимость от человека при предварительном обучении
Исследователи из ByteDance представляют Seed-Coder — семейство из 8 миллиардов открытых LLM, включая базовые, инструкционные и логические модели, предназначенные для снижения участия человека в курировании данных о коде. Вместо того чтобы полагаться на ручные правила, их конвейер, ориентированный на модель, использует LLM для оценки и фильтрации крупномасштабных данных о коде из таких источников, как GitHub и веб-сайты, связанные с кодом, в результате чего получается набор данных из 6 триллионов токенов.
Инструкционная модель дорабатывается с использованием синтетических данных и оптимизации предпочтений, а модель логического вывода улучшает многошаговую логику кодирования с помощью обучения с подкреплением Long-Chain-of-Thought. Seed-Coder демонстрирует высокие результаты для своего размера, часто превосходя более крупные модели, и его код открыт для дальнейшего исследования и разработки.
Корпус из 6 триллионов токенов, созданный с помощью фильтров качества LLM на данных GitHub и веб-данных
Seed-Coder обучается с использованием управляемого моделью подхода, который сводит к минимуму ручное вмешательство. Корпус для предварительного обучения включает примерно 6 триллионов токенов, полученных из различных источников, включая код GitHub, истории коммитов и веб-данные, связанные с кодом.
На начальном этапе базовая фильтрация удаляет файлы с синтаксическими ошибками или неподходящим контентом. Затем большие языковые модели используются для оценки и оценки оставшегося кода, обеспечивая высокое качество данных без использования вручную созданных правил. Предварительное обучение происходит в два этапа: сначала с основным кодом и веб-данными, а затем с более сложными структурами, такими как полные репозитории и задачи с длинным контекстом, например, fill-in-the-middle, для улучшения возможностей кодирования модели.
Пост-обучение с помощью инструкционной настройки и LongCoT обеспечивает многошазовое понимание кода
После предварительного обучения Seed-Coder подвергается дальнейшей доработке на двух этапах. Сначала инструкционная модель обучается с помощью контролируемой настройки на разнообразном наборе синтетических данных инструкций, сгенерированных и отфильтрованных LLM, что помогает ей лучше понимать и выполнять инструкции человека. Затем её производительность повышается с помощью прямой оптимизации предпочтений (DPO), которая более точно согласовывает ответы модели с предпочтениями человека.
Для сложных задач логического вывода модель логического вывода улучшается с помощью обучения с подкреплением LongCoT, что усиливает её способность решать многошаговые задачи кодирования. Эти этапы значительно повышают производительность Seed-Coder в различных задачах по генерации кода и логическому выводу.
Seed-Coder отличается выдающимися результатами в тестах по генерации кода, редактированию и многошаговому логическому выводу
Оценка показывает, что три модели Seed-Coder — Base, Instruct и Reasoning — исключительно хорошо справляются с различными задачами кодирования. Базовая модель превосходит другие модели с открытым исходным кодом аналогичного размера по задачам генерации кода, достигая высоких результатов по таким бенчмаркам, как HumanEval и MultiPL-E.
Инструкционная модель отлично справляется с задачами, требующими редактирования кода и следования инструкциям, лидируя в таких оценках, как CodeEditorBench и FullStack. Модель логического вывода, обученная с помощью методов Long-Chain-of-Thought, демонстрирует выдающиеся навыки решения многошаговых задач, особенно на сложных бенчмарках, таких как LiveCodeBench и Codeforces, даже превосходя модели, которые в несколько раз больше по размеру.
Открытый исходный код способствует развитию сообщества в области Code LLM
В заключение, Seed-Coder — это семейство эффективных и высокопроизводительных открытых языковых моделей, разработанных специально для задач кодирования. Эти модели выделяются тем, что в значительной степени полагаются на LLM, а не на людей для фильтрации и отбора данных для обучения, что значительно снижает объём ручного труда. Несмотря на то, что они обучены на меньшем количестве токенов по сравнению с некоторыми более крупными моделями, Seed-Coder демонстрирует исключительную производительность в таких задачах, как генерация кода, завершение, редактирование и логический вывод. Однако его способности в общем понимании языка всё ещё ограничены из-за отсутствия обширных веб-данных и математического контента. Будущие обновления направлены на расширение семейства моделей и улучшение их возможностей для различных размеров моделей.
1. Какие проблемы существуют в обучении моделей для работы с кодом (Code LLM), и как исследователи ByteDance предлагают их решать?
Исследователи ByteDance предлагают решение проблем обучения Code LLM через использование масштабируемых автоматизированных конвейеров данных. Они минимизируют зависимость от человека при предварительном обучении, используя LLM для оценки и фильтрации крупномасштабных данных о коде из таких источников, как GitHub и веб-сайты, связанные с кодом.
2. Какие этапы включает в себя процесс предварительного обучения Seed-Coder, и какие источники данных используются для этого?
Процесс предварительного обучения Seed-Coder включает в себя два этапа: сначала базовая фильтрация удаляет файлы с синтаксическими ошибками или неподходящим контентом, затем большие языковые модели используются для оценки и оценки оставшегося кода. Для предварительного обучения используются данные из различных источников, включая код GitHub, истории коммитов и веб-данные, связанные с кодом.
3. Какие методы используются для доработки инструкционной модели и модели логического вывода после предварительного обучения?
Для доработки инструкционной модели используется контролируемая настройка на разнообразном наборе синтетических данных инструкций, сгенерированных и отфильтрованных LLM. Затем её производительность повышается с помощью прямой оптимизации предпочтений (DPO). Для сложных задач логического вывода модель логического вывода улучшается с помощью обучения с подкреплением LongCoT.
4. Какие результаты показывает Seed-Coder в тестах по генерации кода, редактированию и многошаговому логическому выводу?
Seed-Coder показывает выдающиеся результаты в тестах по генерации кода, редактированию и многошаговому логическому выводу. Базовая модель превосходит другие модели с открытым исходным кодом аналогичного размера по задачам генерации кода, достигая высоких результатов по таким бенчмаркам, как HumanEval и MultiPL-E. Инструкционная модель отлично справляется с задачами, требующими редактирования кода и следования инструкциям, лидируя в таких оценках, как CodeEditorBench и FullStack.
5. Почему открытый исходный код Seed-Coder способствует развитию сообщества в области Code LLM?
Открытый исходный код Seed-Coder способствует развитию сообщества в области Code LLM, поскольку позволяет исследователям и разработчикам изучать, анализировать и улучшать модель, а также разрабатывать на её основе новые решения для задач кодирования.