Привет, Хабр! Меня зовут Дмитрий Бабаев, я руковожу R&D в GigaCode — это ИИ‑ассистент для разработчиков от Сбера. Сегодня расскажу про очередной этап развития наших кодовых моделей. Недавно мы выпустили новую версию inline‑модели автодополнения кода (code completion). Это первая в мире MoE‑модель, созданная специально для этой задачи, мы полностью разработали и обучили её с нуля.
Inline-модель – это классическая подсказка в IDE, но на основе LLM. Она работает прямо в редакторе: анализирует код до и после позиции курсора и предлагает продолжение. Подсказка может быть однострочной (модель генерирует продолжение кода до завершения строки) или многострочной (в этом случае модель предлагает вставить логически целостный блок кода из нескольких строк — это может быть присваивание, тело цикла, тело оператора if или функции, и так далее). В отличие от статических автодополнений, LLM умнее: учитывает контекст, генерирует вставки на том же логическом уровне, что и окружающий код, и даже может «перепрыгивать» между местами редактирования в режиме Next Edit Prediction (это у нас на подходе).
Новая версия — Inline 4.0. Это модель на 13 миллиардов параметров с архитектурой Mixture of Experts (MoE), по архитектуре близкая к DeepSeek. Общий размер относительно большой, но на инференсе активируется только 3 миллиарда параметров. В каждом слое роутер выбирает только 6 «экспертов» из 24, в дополнение к двум статичным «экспертам». Исходя из списка выбранных экспертов, модель может реализовывать различные паттерны написания кода: один на Python с динамической типизацией, другой на Java с OOP, и так далее.
Почему это хороший способ создания модели автодополнений:
Скорость. Модель работает на одной GPU без задержек. Разработчик нажимает клавишу, и подсказка появляется мгновенно. Не нужно ждать заметное время, как, например, с монолитными 30B-моделями.
Эффективность. Модель лучше справляется с разнообразием кода (языки, API, алгоритмы, стили программирования).
Фокус на узкой задаче. Мы обучили модель с нуля. В процессе обучения она увидела 4 триллиона токенов кода (сам обучающий датасет претрейна «весит» 1 триллион токенов). По объёму это сопоставимо с топовыми моделями, но мы сосредоточились именно на completion.
Мы не делаем универсальную инструктивную модель (чат-бот, как, например, QWEN-Coder), а специализированную под автодополнение, что позволяет превзойти модели общего назначения.
Модели для кода обычно обучают на задаче Fill-In-the-Middle (FIM). Как это выглядит: дают префикс (код до курсора и над курсором), суффикс (код под курсором), а модель восстанавливает середину. Мы улучшили это двумя способами:
Structured FIM. Генерируем датасет так, чтобы разрывы были только по границам логических структур кода. Не в середине блока, не в выражении, а только целыми единицами (тело функции, цикла, класса). Это предотвращает появление «обрезанного» кода и повышает качество генерации. Мы не учим модель восстанавливать код с произвольными краями, и это позволяет ей лучше проявить себя в генерации целостных блоков кода, что и требуется разработчику.
Post-train DPO (Direct Preference Optimization). После фазы предварительного обучения мы дообучаем модель выбирать варианты с правильным синтаксисом. Оказалось, что даже лучшие модели часто забывают кавычки, скобки или генерируют некомпилируемый код. DPO «сдвигает» модель в правильную сторону, и в результате количество ошибок сокращается в 2-4 раза.
Эти подходы помогли нам обогнать open source-конкурентов.
Мы тестировали модель на разных сценариях: single-line (одна строка), multi-line (блоки, функции), синтаксис и длинный контекст (код из репозитория). Сравнивали с моделями, которые умеют работать в FIM-режиме (не все LLM это могут, например, DeepSeek без специального дообучения совсем не сможет работать в таком режиме). Давайте посмотрим результаты на бенчмарках.
Здесь модель предлагает продолжение строки в FIM-режиме (Fill-In-the-Middle: контекст сверху + снизу).
|
Модель |
CC CS Python |
CC CS Python |
CC CS Java |
CC CS JS/TS |
|
GigaCode Inline 3.1 3B |
87,3 % |
91,2 % |
80,4 % |
80,3 % |
|
GigaCode Inline 4.0 13B-A3B |
88,6 % |
93,0 % |
82,8 % |
83,2 % |
|
Qwen2.5-Coder 3B |
83,0 % |
88,9 % |
66,9 % |
64,9 % |
|
Qwen2.5-Coder 7B |
85,4 % |
90,0 % |
80,9 % |
79,9 % |
|
Qwen3-Coder 30B-A3B Instruct |
87,5 % |
90,7 % |
82,3 % |
81,1 % |
|
JetBrains Mellum 4B |
80,7 % |
88,6 % |
62,5 % |
62,3 % |
*CC CS (Code Completion Click Score) — доля символов, не требующих ручного ввода. Рассчитывается итеративно: если символ не совпадает, то добавляется в input и генерируется заново.
Наша модель лидирует по всем представленным языкам, обходя даже 30B‑конкурента. Прирост по сравнению с предыдущей версией — 1-2 %, но это тысячи сэкономленных символов на проекте.
Используется для генерации блоков, функций или выражений.
|
Модель |
RealCode Python SG pass@1 |
RealCode Python FG pass@1 |
SAFIM Block pass@1 |
SAFIM CFE pass@1 |
SAFIM API pass@1 |
|
GigaCode Inline 3.1 3B |
19,7 % |
18,3 % |
30,4 % |
62,6 % |
59,0 % |
|
GigaCode Inline 4.0 13B-A3B |
23,1 % |
21,4 % |
38,1 % |
67,7 % |
70,9 % |
|
Qwen2.5-Coder 3B |
20,7 % |
18,6 % |
46,5 % |
59,3 % |
67,7 % |
|
Qwen2.5-Coder 7B |
23,5 % |
22,6 % |
51,6 % |
58,5 % |
72,5 % |
|
Qwen3-Coder 30B-A3B Instruct |
25,3 % |
23,8 % |
19,3 % |
14,4 % |
75,4 % |
|
JetBrains Mellum 4B |
14,5 % |
12,9 % |
36,1 % |
46,4 % |
60,9 % |
*RealCode SG/FG: случайный блок или целая функция; SAFIM: алгоритмические блоки (Codeforces), выражения, API-вызовы.
Тут наша модель сопоставима с альтернативными, доступными в open source, но дешевле для инференса. Прирост по сравнению с нашей предыдущей моделью Inline3.1 — до 8-12 % в ключевых метриках.
Одна из главных проблем сode completion на основе LLM — это генерация некомпилируемого кода (незакрытые скобки, неверный синтаксис).
|
Модель |
Python errors |
Java errors |
C++ errors |
Total errors |
|
GigaCode Inline 3.1 3B |
7,2 % |
9,3 % |
10,3 % |
8,9 % |
|
GigaCode Inline 4.0 13B-A3B |
5,5 % |
7,8 % |
7,9 % |
7,0 % |
|
Qwen2.5-Coder 3B |
15,0 % |
14,8 % |
21,9 % |
17,2 % |
|
Qwen2.5-Coder 7B |
12,2 % |
12,6 % |
16,5 % |
13,8 % |
|
Qwen3-Coder 30B-A3B Instruct |
34,0 % |
20,9 % |
26,4 % |
27,1 % |
|
JetBrains Mellum 4B |
23,0 % |
20,7 % |
29,4 % |
24,4 % |
Inline 4.0 ошибается в 2-4 раза реже, чем конкуренты. Это значит, что 93 % сгенерированного кода валидно и компилируемо, то есть почти не требует дополнительных правок от человека.
Важно для учёта кода из других файлов репозитория.
|
Модель |
ExecRepoBench pass@1 |
|
GigaCode Inline 3.1 3B |
23,9 % |
|
GigaCode Inline 4.0 13B-A3B |
22,3 % |
|
Qwen2.5-Coder 3B |
18,8 % |
|
Qwen2.5-Coder 7B |
18,2 % |
|
Qwen3-Coder 30B-A3B Instruct |
20,4 % |
|
JetBrains Mellum 4B |
21,0 % |
Здесь лидируют две версии наших моделей, предыдущая (v3.1) даже немного лучше новой версии.
Преимущества нашей модели:
Эффективность для inference: в 4,5 раза больше параметров, но та же скорость с подсказками в режиме реального времени.
Качество: меньше ошибок, лучше учёт контекста, почти нет синтаксических ошибок.
Для бизнеса: команды пишут быстрее и, как следствие, снижают time-to-market.
Попробуйте GigaCode по ссылке — будем рады отзывам в комментариях! Если есть вопросы — пишите, обсудим
Огромный вклад в создание модели внесли Алексей Куталев, Дарья Воронцова и Роман Родионов.
Источник


![[Перевод] Как «приватные» VPN-расширения слили переписки 8 миллионов пользователей с ChatGPT и Claude](https://mexc-rainbown-activityimages.s3.ap-northeast-1.amazonaws.com/banner/F20250611171322266npMCv2GXbcEBQv.png)