English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

гость
1 / ?
назад к урокам

Шестнадцать дней «region region region»

Запуск, который завершился

ANDREA-120M v1 запущена 2026-03-22 и остановлена 2026-04-15 на шаге 165 000 из 200 000 запланированных. Минимум EMA loss: 3.23 на шаге 110K (случайный уровень: ln(8449) = 9.04, поэтому loss выглядел приемлемо). Сэмплы — нет.


Step 80K:  region region region region region region region
Step 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
Step 140K: games, games, games, games, games, games
Step 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy

Шестнадцать дней вычислений на RTX 4090. 130 Вт непрерывно. Мусор начиная с шага 80K.


From microGPT to ANDREA-120M


Почему microGPT сработал, а 120M — нет

ANDREA-12M использовал тот же прокси обучения и прошёл. Меньшие весовые матрицы оказались более устойчивыми к градиентным шокам. Масштабирование до 120M параметров умножило каждую уязвимость. Пять сбоев усилили друг друга.


Пять усиливающихся сбоев


Сбой 1: Отсутствие клиппинга градиентов. Переходы между источниками каждые 7–42 шага вызывали неограниченные всплески градиентов. Один неудачный батч при 120M может отправить модель в вырожденный аттрактор, из которого оптимизатор не сможет выйти. Модель 12M выжила, потому что меньшие веса лучше переносили такие шоки.


Ошибка 2: Отсутствие разогрева LR. Скорость обучения мгновенно выросла с 0 до пикового значения на только что инициализированных весах. Модель попала в плохой минимум до того, как успели сформироваться представления.


Ошибка 3: Отсутствие weight decay. Обычный Adam позволял весам неограниченно расти, что усиливало паттерны повторений при ёмкости 120M.


Ошибка 4: Отсутствие мониторинга качества сэмплов. eval_chat_quality() была подключена только к устаревшему multi-phase runner; curriculum firehose никогда её не вызывал. Модель начала генерировать мусор с шага 80K, и это оставалось незамеченным более 10 дней.


Ошибка 5: Бандит поощрял повторяющиеся источники. repo-docs, repo-docstrings и unfirehose-chat получали наивысшие оценки (средние награды 340–453), потому что списочный контент тривиально снижает cross-entropy. Бандит всё чаще кормил модель тем, что приводило к её деградации.


Компоновка
[BLOCK_TYPE SECTION/STEP]

Ни один сбой сам по себе не привёл бы к коллапсу v1. Каждый усиливал остальные. Градиентные шоки (1) без разогрева (2) ударили по только что инициализированной модели с произвольно большими весами (3), вызывая повторения, которые вознаграждал бандит (5), в то время как никто не следил за выводом (4). Пять пересекающихся причин, один коллапс. [BLOCK_TYPE SECTION/STEP]

Почему пять сбоев, а не один [BLOCK_TYPE SECTION/STEP]

Выберите ЛЮБЫЕ ДВА из пяти сбоев v1. Для каждого объясните одним предложением: (a) в чём заключался сбой; (b) как именно он взаимодействовал с другим из пяти сбоев, усиливая ущерб. [BLOCK_TYPE SECTION/STEP]

Одно Исправление на Каждую Ошибку

Конфигурация v2 (2026-04-15)


ИсправлениеЦелевая ошибкаРеализация
Клиппинг градиентовF1 (нет клиппинга)Глобальная L2-норма, max_norm=1.0; три CUDA-ядра (k_grad_norm_partial, k_grad_norm_final, k_grad_scale) вычисляют и применяют перед Adam
Разогрев LRF2 (нет разогрева)Линейный рост от 0 до пика за 2000 шагов. lr(t) = lr_scheduled(t) * min(1, (t+1)/warmup_steps)
AdamWF3 (без weight decay)Разделённый weight decay (Loshchilov & Hutter 2019), weight_decay=0.01. p -= lr (m_hat/(sqrt(v_hat)+eps) + weight_decayp)
Coherence-gated early stoppingF4 (без мониторинга)Оценка каждого сэмпла (bigram/trigram/word/char diversity). Авто-остановка после 5 подряд сэмплов со счётом ниже 30
Curriculum warmupF5 (bandit eats repetition)Первые 20K шагов ограничены 7 источниками чата/прозы; firehose активируется после; repo-docstrings полностью исключены

Кроме того, sample_every снижен с 200 до 100 шагов (частота аудита удвоена), а cap repo-docs снижен с 0.5 до 0.3.


Back-Test

Coherence gate протестирован на v1: сработал бы на шаге 132K, сэкономив 3.8 дня вычислений. Один gate сократил бы wasted compute v1 примерно на 30%; остальные четыре фикса предотвращают достижение триггера gate в v1.


Что v2 НЕ исправил

Загрязнение данных. v2 доверял источникам hermes3-*, считая их «предварительно очищенными», потому что они пришли от LLM-учителя. DEEP_CLEAN_SKIP в Makefile исключал hermes3-general, hermes3-creative и hermes3-roleplay из make deep-clean. unfirehose-chat захватывал системные промпты агента как реплики пользователя. Эти два дефекта оставались на уровне данных и были готовы проявиться.

Сопоставление исправлений с отказами

Три исправления v2 чётко связаны с одним отказом v1 каждое. Сопоставьте: (a) gradient clipping (max_norm=1.0); (b) LR warmup (2000-step linear ramp); (c) AdamW with weight_decay=0.01. Для каждого укажите отказ v1, который оно устраняет, и в одном предложении объясните, почему именно это исправление противодействует данному отказу.

Шаг 15K: Обнаружены два дефекта данных

Что увидела v2

v2 запущена 2026-04-15. К шагу ~15K из 200K (7,5 % выполнения) образцы начали генерировать украшения agent-harness (○ ●) и fallback доминирования артиклей (a = 26 % слов на шаге 14 966; the = 21 % на шаге 14 798). Пять исправлений стабильности v2 работали корректно. Проблема переместилась из архитектуры в данные.


Два независимых дефекта конвейера


Дефект A: unfirehose-chat захватывал системные промпты агента как реплики пользователя. unfirehose-chat собирает данные из JSONL-файлов сессий harness по путям ~/.claude/, ~/.fetch/, ~/.uncloseai/. Пайплайн ингеста преобразовывал многосекционные системные промпты агента (# Agent X, ## Identity, ## Rules и т. д.) в слот пользовательской реплики пар > user / < assistant. Модель научилась, что «пользователи» пишут многосекционным markdown, и начала воспроизводить эти украшения в своих выводах.


Дефект B: hermes3-* обошёл все фильтры. DEEP_CLEAN_SKIP в Makefile исключил hermes3-general, hermes3-creative и hermes3-roleplay из make deep-clean на основании ложного предположения, что данные, дистиллированные LLM, уже очищены. Полное сканирование показало, что существующие фильтры при применении отклонили бы 87–93 % строк hermes3 (абзацы >2000 символов, превышающие block_size=1024; ответы-переводы на CJK/кириллице/арабском; последовательности с низким разнообразием биграмм).


Патч v2.5 (коммит de24332, 2026-04-18)


Два структурных изменения.


Изменение 1: has_system_prompt_shape() в filter-dataset.c. Обнаруживает утечки системных промптов по ФОРМЕ, а не по посимвольному совпадению. Комбинируются три сигнала:

1. 3+ заголовка markdown за один ход = drop.

2. 2+ заголовка при длине хода >=500 символов = drop.

3. Фразы-отпечатки Agent-shard (# Agent , Shadow Clone, Your shard, Read it. Become it, This file defines) в сочетании с любым заголовком или длиной >=400 = drop.


Правило изоляции: проверяйте первый ход пользователя по разделителю / (с пробелами, а не голый /, который дробит пути URL), чтобы избежать ложных срабатываний на легитимный markdown в ответах ассистента.


Изменение 2: hermes3-* выведен из DEEP_CLEAN_SKIP. Не доверяйте ничему нефильтрованному.


Уровень отсева после патча


источникin-linesout-linesdropped
hermes3-general536,85867,39587.7%
hermes3-roleplay35,1912,48193.0%
hermes3-creative14,2581,37390.4%
unfirehose-chat3,8162,65330.5%
chat45,25744,5381.6% (noise)
smoltalk11,81211,8120.0%

Базовые фильтры уже отлавливали 87–93 % загрязнения от hermes3; DEEP_CLEAN_SKIP был критическим дефектом. Новый детектор формы добавляет ~0.1 % дополнительной фильтрации в целом, в основном в unfirehose-chat, где он удаляет специфические утечки agent-shard, которые пропускают существующие фильтры.


Почему форма лучше символов

Орнаменты эволюционируют. Фильтр по символам, отбрасывающий , ничего не сделает с на следующей неделе. Фильтр на основе формы (подсчёт заголовков, подсчёт символов, распознавание характерных фраз) обобщается на разные варианты орнаментов. Паттерн: обнаружение загрязнения должно опираться на структурные эвристики.

Почему фильтровать по форме

v2.5 фильтрует утечки agent-shard по SHAPE (количество заголовков, длина, характерные фразы) вместо CHARACTER (сопоставление конкретных символов вроде орнаментов). Приведите одну практическую причину, почему это важно, и один конкретный сценарий отказа, который НЕ отловит фильтр только по символам.

Бандитская рука без данных

v3 запущена 2026-04-18

Та же архитектура и гиперпараметры, что и у v2; данные очищены после патча v2.5. В выборочных аудитах утечек орнаментов не обнаружено. v3 работала чисто до шага 112K.


Шаг 112 619: Выборка аудита обнаруживает паттерн

Аудит выборки показал coherent conversational turns (хайку, Q&A, диалог), но периодические фазы, сосредоточенные на knowledge arms (gutenberg, repo-docstrings, repo-docs), выдавали фрагменты, похожие на код, и шум токенизации репозитория. Одна выборка на шаге 112 080 достигла loss 0.13: аномально низкое значение, сигнализирующее о запомненных подстроках repo-docs, а не о выученном распределении чата.


Зомби-рука

Диагноз: exclude_sources правильно удалил repo-docstrings в начале обучения, но сохранённое состояние бандита сохранило остаточную руку repo-docstrings с весом 1.546 из предыдущего запуска. Перезагрузка состояния вернула её в пул UCB, хотя .btok для выборки не существовало, что породило зомби-пул, исказивший учёт исследования.


Урок: файлы состояния бандита (.state.json) ведут себя непредсказуемо при перезапусках. Исключения в конфигурации не стирают остаточную память руки. Требуется двойная страховка: cap = 0.0 вместе с исключением.


Польская конфигурация

Только возмущение учебной программы. Архитектура, состояние оптимизатора, расписание скорости обучения и история потерь сохранены из step_112600.bin.


Источникv3 basev3 polish
repo-docscap 0.3исключено (cap 0.0)
repo-docstringsисключеноисключено + cap 0.0
repo-commitscap 0.4cap 0.2
dictionarycap 0.5cap 0.25
gutenbergcap 0.8 / floor 0.3cap 0.7 / floor 0.4
irc-qa-strict--cap 0.3
unweapon--cap 0.3
synthetic-chat--cap 0.4
hermes3-generalfloor 0.5floor 0.7
hermes3-creativefloor 0.4floor 0.55
hermes3-roleplayfloor 0.4floor 0.5
chatfloor 0.4floor 0.6
smoltalkfloor 0.3floor 0.5
oasstfloor 0.3floor 0.5
dolly--floor 0.4
curriculum_warmup_steps200000

Польский протокол

1. SIGUSR1 для CUDA вызывает немедленный чекпоинт на следующей границе в 100 шагов.

2. Прокси останавливается.

3. .samples.json и .state.json архивируются (лог сэмплов и состояние бандита сохраняются как историческая запись).

4. .loss.json сохраняется — накопленная история обучения; никогда не архивируется.

5. Прокси перезапускается. Отправляется конфигурация Polish.

6. CUDA возобновляет работу с step_112600.bin и новым состоянием бандита под новыми ограничениями и порогами.


История потерь продолжается без разрывов.

Почему Polish, а не Restart

Step 112,619 находился на 56 % от запланированного обучения. Команда выбрала CURRICULUM PERTURBATION (сохранить веса, изменить caps & floors) вместо FULL RESTART (переинициализация с шага 0). Назовите две причины, почему polish-pivot был правильным решением, и один конкретный риск, который возник бы при возврате к шагу 0.

Что дал Polish

Аудит сэмплов, через несколько часов после pivot

В течение нескольких часов после польского поворота выборочная проверка подтвердила сходимость по четырём исходным целям ANDREA-120M.


Фактическое воспроизведение (биология), шаг 112 584, loss 0.30, ppl 1.

> [prompt вымирания]

> < чёрный паук Монтаньо жив, каролинский попугай вымер.

Два верных факта. Внешняя оценка: 9.5/10.


Фактическое воспроизведение (обработка сигналов), шаг 112 668, loss 0.74, ppl 2.

> [Fourier transform prompt]

> < Преобразование Фурье разлагает сигналы на частотные компоненты, позволяя анализировать характеристики сигнала и выполнять фильтрацию в частотной области.

Textbook one-sentence definition. External grading: 9.5/10.


Constraint following (haiku), step 112,248, loss 1.05, ppl 3.

> Write a haiku about rain using three words that start with 'r'.

> < Rain's rhythmic refrain, Rivulets on the window, Respite from life's pain.


Знание инструментов (Python), шаг 112 500, loss 1.94, ppl 7.

> Как найти устаревшие пакеты в Python-проекте?

> < Используйте pip list --outdated, чтобы увидеть список устаревших pip-пакетов в вашем проекте...

Появился правильный инструмент; формулировка неточная.


Шесть доменов за 700 шагов

Биология, обработка сигналов, поэзия, Python-инструменты, разговорный диалог, операционный диалог. Шесть несвязанных доменов за 700 шагов показывают, что bandit и модель работают слаженно. Ширина доменов — это и есть сигнал сходимости.


Внешняя оценка

Независимый рецензент оценил образцы как «солидные для 120M-параметрической модели — впечатляющая когерентность и сохранение знаний в таком масштабе», при этом образцы с каролинской попугайчиком и преобразованием Фурье получили 9.5/10 и были отмечены как «превосходящие ожидания по задачам на знания».


Чему научил каждый этап


v1 показал: пять взаимно усиливающихся сбоев разрушают обучение. Исправление одного из них в отдельности не спасает; все пять должны быть устранены одновременно.


v2 показал: архитектурные исправления необходимы, но недостаточны. Уровень данных может незаметно их обесценить.


v2.5 учила: фильтровать загрязнение по форме, а не по характеру. Паттерны стабильны; символы эволюционируют.


v3 base учила: состояние бандита дрейфует между перезапусками неожиданными способами. Одних исключений недостаточно; требуется cap 0.0 «ремень и подтяжки».


v3 polish учила: когда сбой в политике, а модель здорова, возмущай политику. Сохраняй веса. Сохраняй историю потерь. Двигайся вперёд.


Одна Истина

Convergence — это не единичное событие, а цепочка исправлений. Каждая фаза выявила один дефект, устранила его и обнаружила следующий. ANDREA-120M показывает 9.5/10 на шаге 112,584, потому что v1, v2, v2.5, v3 base и v3 polish каждая выполнила свою задачу.

Какая фаза преподала самый трудный урок

Из пяти фаз (v1, v2, v2.5, v3 base, v3 polish) какая, по вашему мнению, дала самый переносимый инженерный урок? Выберите одну. Сформулируйте урок своими словами и дайте 2–3 предложения, объясняющих, почему этот урок применим за пределами обучения языковых моделей.