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 виглядав пристойно). Семпли — ні.


Крок 80K: регіон регіон регіон регіон регіон регіон регіон
Крок 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
Крок 140K: ігри, ігри, ігри, ігри, ігри, ігри
Крок 165K: Буді Буді Буді Буді Буді Буді Буді Буді Буді

Шістнадцять днів обчислень RTX 4090. 130W безперервно. Сміття з кроку 80K і далі.


Від microGPT до ANDREA-120M


Чому microGPT працював, а 120M — ні

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


П'ять накопичених невдач


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


Помилка 2: Без розігріву LR. Швидкість навчання стрибнула з 0 до піку негайно на свіжо ініціалізованих вагах. Модель впала в погану улоговину до того, як сформувалися будь-які представлення.


Помилка 3: Без затухання ваги. Звичайний Adam дозволив довільно великі ваги, які посилили шаблони повторення при потужності 120M.


Помилка 4: Без моніторингу якості зразків. eval_chat_quality() була підключена лише до застарілого багатофазового раннера; навчальна програма firehose ніколи її не викликала. Модель виробляла сміття з кроку 80K і далі, непоміченим протягом 10+ днів.


Помилка 5: Бандит винагороджував повторювані джерела. repo-docs, repo-docstrings та unfirehose-chat набрали найвищі бали (середні винагороди 340-453), тому що контент зі структурою списку тривіально знижує крос-ентропію. Бандит годував модель ще більшим обсягом того, що призводило до її дегенерації.


Накопичення

Жодна окрема помилка не призвела б до колапсу v1. Кожна посилювала інші. Градієнтні удари (1) без розігріву (2) вдарили по свіжоініціалізованій моделі з довільно великими вагами (3), виробляючи повторення, яке бандит винагороджував (5), поки ніхто не стежив за виводом (4). П'ять перетинаючихся причин, один колапс.

Чому п'ять помилок, а не одна

Оберіть будь-які ДВІ з п'яти помилок v1. Для кожної поясніть в одному реченні: (a) що було помилкою; (b) як вона конкретно взаємодіяла з іншою з п'яти помилок, посилюючи шкоду.

Одне виправлення на кожну невдачу

Конфігурація 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 уникає повторів)Перші 20K кроків обмежені 7 джерелами чат/прози; firehose активується після; repo-docstrings виключені повністю

Плюс sample_every зменшено з 200 до 100 кроків (частота аудиту подвоєна), & ліміт repo-docs зменшено з 0.5 до 0.3.


Ретро-тест

Coherence gate ретро-тестовано на v1: спрацював би на кроці 132K, заощаджено 3.8 днів обчислень. Сама брама скоротила б марну обчислювальну потужність v1 на ~30%; інші чотири фікси запобігають досягненню v1 цієї триггерної брами.


Що v2 НЕ ВИПРАВИВ

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

Відображення виправлень на невдачі

Три виправлення v2 чітко пов'язані з однією невдачею v1 кожне. Зіставте: (a) обрізання градієнта (max_norm=1.0); (b) розігрів LR (лінійний підйом на 2000 кроків); (c) AdamW з 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 в одному повороті = відкинути.

2. 2+ заголовки з довжиною повороту >=500 символів = відкинути.

3. Фінгерпринтні фрази агент-шарда (# Agent , Shadow Clone, Your shard, Read it. Become it, This file defines) у комбінації з будь-яким заголовком або довжиною >=400 = відкинути.


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


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


Частоти відкидання після патчу


джерелоу-рядкипоза-рядкивідкинуто
hermes3-general536,85867,39587.7%
hermes3-roleplay35,1912,48193.0%
hermes3-creative14,2581,37390.4%
unfirehose-chat3,8162,65330.5%
chat45,25744,5381.6% (шум)
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: Зразок аудиту виявляє шаблон

Зразок аудиту виявив послідовні розмовні ходи (хайку, Q&A, діалог), але періодичні фази, зосереджені на знаннєвих рукавах (gutenberg, repo-docstrings, repo-docs), протікали фрагменти, подібні до коду, та шум токенізації репозиторію. Один зразок на кроці 112,080 досягнув втрат 0.13: аномально низько, сигналізуючи про запам'ятовані підрядки repo-docs замість вивченої розподілу чату.


Зомбі-рука

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


Урок: файли стану бандита (.state.json) дрейфують між перезапусками несподіваними способами. Виключення конфігурації не стирають залишкову пам'ять рукавів. Потрібні пояс і підтяжки: cap = 0.0 поряд з exclude.


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

Порушення лише навчальної програми. Архітектура, стан оптимізатора, графік швидкості навчання та історія втрат збережені з 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 з новим станом бандита під новими обмеженнями та нижніми межами.


Історія втрат продовжується безперервно.

Чому шліфування, а не перезапуск

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

Що виробило шліфування

Зразок аудиту, години після повороту

Протягом кількох годин після польського повороту зразковий аудит підтвердив збіжність до чотирьох оригінальних цілей ANDREA-120M.


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

> [extinction prompt]

> < black spider montano is alive, carolina parakeet is extinct.

Дві правильні факти. Зовнішня оцінка: 9.5/10.


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

> [Fourier transform prompt]

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

Однореченне визначення з підручника. Зовнішня оцінка: 9.5/10.


Дотримання обмежень (хайку), крок 112,248, loss 1.05, ppl 3.

> Напишіть хайку про дощ, використовуючи три слова, що починаються на '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 names, щоб побачити список pip-пакетів у вашому управлінні проєктом...

Правильний інструмент з'являється; формулювання неточне.


Шість доменів у 700 кроках

Біологія, обробка сигналів, поезія, інструменти python, розмовний діалог, операційний діалог. Шість не пов'язаних доменів у межах 700 кроків свідчить про те, що бандит та модель працюють у злагоді. Ширина доменів Є сигналом збіжності.


Зовнішня оцінка

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


Що навчила кожна фаза


v1 навчила: п'ять складних невдач руйнують тренування. Жодна окрема правка не рятує; всі п'ять мають спрацювати одночасно.


v2 навчила: архітектурні правки необхідні, але недостатні. Рівень даних може тихо їх перемогти.


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


v3 base навчив: бандитський стан дрейфує між перезапусками в несподіваних способах. Виключення самі по собі недостатні; потрібен обмежувач 0.0 у стилі пояс і підтяжки.


v3 polish навчив: коли помилка в політиці, а модель здорова, турбуйте політику. Зберігайте ваги. Зберігайте історію втрат. Рухайтеся вперед.


Одна Істина

Конвергенція — це не одна подія; це ланцюг виправлень. Кожна фаза виявила один дефект, виправила його та виявила наступний. 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 речення, пояснюючи, чому цей урок узагальнюється за межі тренування мовних моделей.