Исследования
Helix, часть 1: обучаем европейскую языковую модель
Мы обучаем собственную языковую модель. Она небольшая — 320 миллионов параметров, — но читает на всех 24 официальных языках Европейского союза и обучается на видеокартах, созданных для игр. Эта первая часть рассказывает, как мы к этому пришли; вторая выйдет, когда обучение закончится.

Содержание
Зачем игровой студии своя языковая модель
NETBYTE делает игры, приложения и сайты. Языковые модели всё чаще живут внутри таких продуктов: персонажи, которые отвечают, помощь, которая понимает вопрос, инструменты, которые что-то делают. Большинство открытых моделей думают прежде всего по-английски; эстонский, ирландский или мальтийский остаются на обочине. Мы хотели сами разобраться во всей цепочке — данные, токенизатор, архитектура, обучение — и понять, куда на самом деле уходят деньги.
- параметров
- 320 млн
- официальных языка ЕС
- 24
- токенов обучения
- 6,5 млрд
- за арендованные GPU
- ≈ 12 $
Helix начинался как исследовательский прототип. Всё, что ниже, — решения, которые его сформировали, каждое подкреплено измерением, а также ошибки, отнявшие у нас больше всего времени.
Четыре идеи, выжила одна
Прототип бил по четырём известным слабостям современных генераторов текста. Он пишет блоками по 16 токенов, а не по одному, может несколько раз прогонять общее ядро слоёв, предсказывает компактный «план» для каждого блока и сочетает дешёвое локальное внимание с линейным вниманием для дальних расстояний.
Блочная запись заработала сразу: небольшая тестовая модель написала 64 токена за 13 проходов через сеть, тогда как обычной модели нужен один проход на токен — примерно пятая часть работы. Остальные три идеи провалили более жёсткий тест. Мы построили задачи, в которых ответ лежит далеко за пределами локального окна, так что модели приходится оглядываться на весь текст.
Показать данные
| Вариант | Верно |
|---|---|
| Только локальное окно | 23,1 % |
| + линейное внимание, план и циклы | 23,1 % |
| + 2 точные глобальные головы | 49,4 % |
| Полное внимание (контроль) | 49,0 % |
| Случайность (25 %) | 25,0 % |
Решило их только точное внимание на всю дистанцию. Линейное внимание, план и циклы остались на уровне случайного угадывания; оптимизатор даже свёл линейную память к периоду полураспада меньше одного токена. Двух точных глобальных голов хватило, чтобы сравняться с полным вниманием.
Поэтому финальная модель оставляет в каждом слое восемь локальных голов с окном в 256 токенов и добавляет две точные глобальные головы через слой; промежуточные слои сохраняют две головы линейного внимания с гейтом. План и циклы отключены. Они остались в коде и покрыты тестами, но на реальном тексте не окупили своей стоимости.
- Локальное, окно 256 токенов
- Точное глобальное внимание
- Линейное внимание с гейтом
Показать данные
| Тип головы | Слои | Голов на слой |
|---|---|---|
| Локальное, окно 256 токенов | 1–12 | 8 |
| Точное глобальное внимание | 1, 3, 5, 7, 9, 11 | 2 |
| Линейное внимание с гейтом | 2, 4, 6, 8, 10, 12 | 2 |
Измерять, а не предполагать
Каждый приём обучения мы проверяли на модели с 94 миллионами параметров с одинаковым бюджетом на запуск: 29,5 миллиона токенов, тот же seed, тот же порядок данных. Два запуска одной конфигурации расходятся на ±0,03, так что всё меньшее — шум.
Показать данные
| Изменение | Δ loss (наты) |
|---|---|
| Muon + расписание WSD | -0,587 |
| Оптимизатор Muon | -0,347 |
| Более глубокая и узкая сеть | -0,099 |
| Расписание WSD | -0,080 |
| Остаточная связь значений | -0,007 |
| z-loss | +0,029 |
| Внимание с группированными запросами | +0,088 |
Оптимизатор Muon оказался единственным крупным рычагом, и он хорошо сочетается с расписанием скорости обучения warmup-stable-decay. Возврат эмбеддинга и выходного слоя к AdamW, как советуют авторы Muon, дал ещё 0,12 и ускорил обучение на 5 %. Комбинации не складываются просто так: более глубокая и узкая сеть помогала с AdamW и вредила с Muon. Поэтому каждая многообещающая комбинация получила собственный запуск.
24 языка, 6,5 миллиарда токенов
Helix читает веб-тексты из FineWeb-Edu для английского и из FineWeb-2 для остальных 23 языков — для крупных из его верхней десятой части, отобранной по качеству. Код, математика и небольшой синтетический поток чатов дополняют смесь. Английскому достаётся треть. Остальные языки взвешены по объёму доступного текста со сглаживанием, чтобы ирландский и мальтийский не утонули, и ни один источник не повторяется больше четырёх раз: до этой границы повтор почти так же хорош, как свежие данные.
Показать данные
| Источник | Доля |
|---|---|
| Ещё 23 языка ЕС | 51,6 % |
| Английский | 33,0 % |
| Код и разметка | 10,0 % |
| Математика | 3,0 % |
| Синтетические чаты и инструменты | 2,4 % |
Поток чатов экстрактивный: ответы берутся из реальных абзацев, а результаты инструментов вычисляются, а не выдумываются. Он учит формату, а не знаниям. Токенизатор — байтовый BPE на 64 000 записей; для каждого языка на латинице он упаковывает в один токен от 3,3 до 4 байт текста.
Три бага, о которых стоит рассказать
- Модель, которая подсматривала ответ. В одной ветке кода глобальные головы игнорировали каузальную маску и видели будущие токены. Loss упал с 6,85 до 1,71 за 75 шагов, и 16-часовой запуск оказался бесполезен. Подозрительно хороший loss — это баг-репорт; теперь именно этот случай стережёт регрессионный тест.
- Символы — не байты. Сжатие считалось в символах, а не в байтах UTF-8. Это придумало «слабость» в китайском и заставило греческий и болгарский выглядеть почти вдвое хуже, чем на самом деле.
- Документы, разорванные на каждой пустой строке. Кодировщик делил документы на каждой пустой строке, а пустые строки стоят посреди почти любого файла с кодом. Пропало до 35 % текста кода и математики. Мы исправили разделитель и 31 октября пересобрали весь корпус; это заняло 2 часа 12 минут.
Со стола на арендованную машину
Первые 1,66 миллиарда токенов прошли на одной AMD Radeon RX 7800 XT. Сделать это пригодным помогли две вещи: флаг ядра внимания, по умолчанию выключенный, — без него внимание работало в 12 раз медленнее, — и компиляция каждого слоя через torch.compile. При медиане 11 800 токенов в секунду остаток занял бы ещё почти пять дней.
Поэтому мы написали автопилот. Он арендует GPU на Vast.ai, загружает код, корпус и чекпойнт, обучает, каждые три часа забирает чекпойнт домой и останавливается до того, как кончится баланс. 2 ноября он перебрал три машины, которые хосты так и не запустили, а затем остановился на двух RTX 4070 Ti Super в Германии за 0,363 $ в час. Загрузка 15,4 ГиБ заняла 40 минут.
Показать данные
| Конфигурация | Токенов/с |
|---|---|
| Локально, до оптимизации | 8 319 |
| Локально, с компиляцией | 11 830 |
| Аренда, 2 GPU | 41 367 |
41 400 токенов в секунду — это в 3,5 раза быстрее, чем на столе. Арендованная часть — 4,8 миллиарда токенов примерно за 33 часа — стоит около 12 $.
Где Helix сейчас
- Отложенный
- Обучение
Loss (натов на токен)
Прочитано токенов, млрд
Показать данные
| Прочитано токенов, млрд | Отложенный | Обучение |
|---|---|---|
| 0,06 | 4,571 | 4,261 |
| 0,55 | 3,776 | 3,574 |
| 1,04 | 3,694 | 3,469 |
| 1,54 | 3,596 | 3,421 |
| 2,03 | 3,426 | 3,238 |
| 2,52 | 3,329 | 3,143 |
| 3,01 | 3,291 | 3,113 |
| 3,50 | 3,263 | 3,076 |
| 3,99 | 3,225 | 3,079 |
| 4,49 | 3,244 | 3,076 |
| 4,98 | 3,218 | 3,036 |
| 5,35 | 3,123 | 2,884 |
На 3 ноября 2026 года Helix прочитал 5,35 из своих 6,5 миллиарда токенов. С отметки 5,2 миллиарда идёт фаза охлаждения: скорость обучения снижается, а смесь смещается к математике, коду и чатам. На отложенном тексте из всех потоков loss составляет 3,12 ната на токен.
Показать данные
| Язык | Бит на байт |
|---|---|
| греческий | 0,721 |
| болгарский | 0,844 |
| французский | 1,065 |
| английский | 1,086 |
| испанский | 1,135 |
| португальский | 1,219 |
| немецкий | 1,257 |
| нидерландский | 1,268 |
| итальянский | 1,277 |
| польский | 1,355 |
| датский | 1,364 |
| венгерский | 1,407 |
| словацкий | 1,412 |
| мальтийский | 1,415 |
| румынский | 1,416 |
| шведский | 1,418 |
| ирландский | 1,422 |
| словенский | 1,431 |
| чешский | 1,444 |
| литовский | 1,450 |
| латышский | 1,451 |
| хорватский | 1,507 |
| финский | 1,508 |
| эстонский | 1,727 |
Что это значит на практике, лучше всего видно по неотредактированному образцу из чекпойнта примерно на 4,9 миллиарда токенов. Начало наше, остальное — Helix:
Начало текста: The history of the printing press begins in the fifteenth century, when Johannes Gutenberg introduced movable type to Europe. Before that, books
Ответ модели: for printing were usually in the form of texts, usually in the format of illustrations. In its introduction to the printing press, Gutenberg uses one line-of-action model to illustrate a series of printed pieces of a book.
Грамматика, выбор слов и тема держатся; факты — нет. Примерно этого и стоит ждать от 320 миллионов параметров и 6,5 миллиарда токенов: беглая модель, которая выдумывает.
Что дальше
Предобучение закончится через несколько часов. Затем последуют этап длинного контекста с книгами из Project Gutenberg и правовыми текстами ЕС из EUR-Lex, дообучение для диалога и работы с инструментами и небольшая черновая модель, которая ускоряет генерацию.