53 KiB
Адаптивный/обучающийся слой памяти: стоит ли гибрид, огибающая осуществимого, арбитраж
Дата: 2026-07-05. Сессия «Адаптивный слой памяти» (промт docs/archive/prompts/ADAPTIVE_MEMORY_RESEARCH_PROMPT.md). Предмет — вопрос владельца: не будет ли максимально эффективным гибрид «отлаженный детерминированный банк памяти (Р3) + слой, обучающийся ПО ХОДУ перевода книги» (in-context / локальный LoRA / kNN-MT / online-retrieval / само-коррекция), и как именно смёржить под наш жёсткий локально-стоимостный контур. Мандат — адверсариально проверить, стоит ли оно того, а не поверить в модность.
Метод (как в валидации банка, research/13): многоагентный ресёрч по 6 направлениям (kNN-MT / in-context-демонстрации / adaptive-online-MT / локальный LoRA / adaptive-RAG-петли / свежее 2025–2026) + независимая адверсариальная верификация каждой несущей находки по первоисточнику (24 верификатора: 19 CONFIRMED, 5 OVERCLAIM с точной поправкой) + две исполняемые пробы на нашем стенде/ключах (eval/adaptive_probe.py — доступ к логитам у флагманов; eval/adaptive_incontext.py — демонстрации vs глоссарий на реальном zh→ru) + чтение реального кода backend/ на git HEAD. Все заблокированности проверены пробой, а не по памяти (мандат §Жёсткий контур). Прод-код не пишется — только eval/ и этот документ.
Одна фраза. Гибрид в основном НЕ стоит того: всё, что «учится» на уровне декодера/логитов/весов флагмана — физически заблокировано (подтверждено живой пробой), а то, что реально помогает (копирование точного рекуррентного термина; коррекция под надёжный внешний сигнал) — уже принадлежит детерминированному ядру и в обучающемся слое было бы строго хуже. Остаётся ровно один кандидат, влезающий в контур: непараметрические in-context демонстрации для СТИЛЯ серой зоны — но он не проходит БАР-(в) по имеющимся данным (мой zh→ru замер: демонстрации НЕ бьют детерминированный soft-глоссарий по консистентности, 0.833 vs 0.875) и его надо гейтить тем же in-house eval'ом, что и сам банк. Плюс: гипотеза владельца «эмбеддинги→CPU, 8 ГБ VRAM→обучающийся модуль» верна в посылке, но пуста в следствии — освобождать VRAM правильно, но обучающегося модуля, который на эти 8 ГБ бьёт базис, нет.
TL;DR — вердикт по каждому кандидату (правило БАР)
БАР (из промта): любой мёрж обязан (а) оставить детерминированный горячий путь авторитетным; (б) влезть в VRAM/стоимость (локаль-first); (в) эмпирически бить eval-валидированный детерминированный базис на zh/ja→ru по консистентности/fidelity/цене; (г) оправдать сложность. Не проходит (в) → не мёржить.
| Механизм «учится по ходу книги» | Осуществим? | БАР | Вердикт |
|---|---|---|---|
| kNN-MT на флагмане-переводчике | ❌ blocked (нужны hidden states декодера) | — | НЕ мёржить (физически невозможно) |
| Constrained/beam decoding, forced tokens на флагмане | ❌ blocked (нет доступа к декодеру/beam) | — | НЕ мёржить (физически невозможно) |
| Frontier-LoRA / online-SGD весов флагмана | ❌ blocked (нет тренируемых адаптеров у провайдеров; fine-tuning сворачивается) | — | НЕ мёржить (физически невозможно) |
| Локальный kNN-MT черновик (наш декодер) | 🟡 технически да | (в) ✗ | НЕ мёржить: чистый выигрыш уже у банка; на слабой локали чинит не то |
| Книга-LoRA на локальном reranker/ключ-энкодере | 🟡 технически да (впритык) | (в) ✗ | НЕ мёржить: data-poor, «learns-less», нет разделяющего порога у bge-m3 |
| Локальный само-корректирующийся LLM-цикл | 🟡 да, но | (в) ✗ | НЕ мёржить: intrinsic self-correction деградирует без внешнего верификатора (а он у нас уже детерминированный) |
| In-context ДЕМОНСТРАЦИИ (серая зона: стиль/auto/ambiguous) | ✅ да (0 VRAM, memory+prompt) | (в) ? | ПИЛОТИРОВАТЬ под eval — единственный кандидат; но индикатив: НЕ бьёт базис по консистентности |
| Детерминированный консистентность-кэш + precision-gated adaptive-retrieval | ✅ да (0 ML, 0 VRAM) | (в) н/п | ВНЕДРЯТЬ — это гигиена банка, а не «обучающийся слой» |
§0. Жёсткий контур подтверждён живой пробой (не по памяти)
Мандат требовал перепроверить заблокированность методов пробой, а не по памяти. Проба eval/adaptive_probe.py (2026-07-05, живые ключи, наши боевые модели):
| Модель стека (роль) | token logprobs |
logit_bias |
hidden states |
|---|---|---|---|
| deepseek-v4-flash (черновик) | есть (top-5) | принят | нет (никогда) |
| grok-4.3 (редактор) | нет (200, поле пустое) | отказ HTTP 400 | нет |
| gemini-3.1-pro-preview (премиум) | нет — HTTP 400 «Unknown name logprobs» | отказ 400 | нет |
| gpt-5-mini | нет — HTTP 403 «not allowed to request logprobs» | отказ 400 | нет |
Читается так:
- kNN-MT на флагмане определённо заблокирован — и это двойная дверь. kNN-MT ключует датастор внутренним hidden state декодера (Khandelwal 2010.00710, ICLR 2021, дословно: «the 1024-dimensional representation input to the final layer feedforward network»), не выходным логитом. Ни один закрытый API не отдаёт pre-softmax представление декодера. Даже единственный, кто отдаёт хоть что-то (DeepSeek — выходные logprobs), даёт softmax-выход, а не hidden state → датастор kNN-MT построить нельзя в принципе.
- Логит-стиринг на флагмане почти недоступен:
logit_biasпринимают только DeepSeek и GLM (и, вероятно, молча игнорируют); grok/gemini/openai — отказ. А для русской морфологии (subword-токены) грубый logit_bias всё равно бесполезен. - Verify-by-probe поймал ошибку литературы. Свежая работа «Log Probability Tracking of LLM APIs» (arXiv 2512.03816) утверждает, что «все модели xAI» и семейство GPT-4.1 возвращают logprobs. Живая проба это опровергает для наших моделей/даты: grok-4.3 не возвращает, gpt-5-mini отдаёт 403. Урок валидации подтверждён: имя/возможность модели проверять пробой, не по документу.
- Fine-tuning у провайдеров закрывается, а не открывается: Gemini API не поддерживает тюнинг после депрекации 1.5-Flash-001 (май 2025), только Enterprise с непрозрачным
adapter_sizeбез экспорта логитов/hidden state; OpenAI сворачивает self-serve fine-tuning в чёрный ящик без логитов. → frontier-LoRA как роль переводчика заблокирован и в 2026 не разблокировался.
Следствие для всего ответа: ни kNN-MT, ни constrained decoding, ни дообучение флагмана-переводчика невозможны. Всё «обучение» может жить только (а) на локальном декодере (llama.cpp/vLLM отдают логиты/hidden states — это можно) или (б) как непараметрическая инъекция в промпт закрытого API (memory+prompt). Эти два коридора и разбираются ниже.
§1. Огибающая осуществимого
Коридор A — локальный декодер (логиты/hidden states доступны). Физически открыт, но упирается в качество локали: exp03/exp06 — локаль рендерит zh→ru реалии мусором (render 0.26 на zh, Палладий-мусор), значит её роль — support (спот сущностей recall ~0.98, скрининг, эмбеддинги, дешёвый судья), не финальный переводчик и не рендерер канона. Всё, что можно обучить локально (kNN-MT-датастор, LoRA), наследует эту слабость.
Коридор B — непараметрическая инъекция в промпт закрытого API. Открыт полностью (0 VRAM, только память+промпт). Сюда попадают: soft-глоссарий (уже есть — средний слой Р3), running-summary (DelTA-паттерн, уже спроектирован), и новое — few-shot демонстрации (прошлые подтверждённые пары/пассажи книги). Только последнее — реально «новый» механизм.
Что вычёркнуто явно (заблокировано, §0): kNN-MT-на-флагмане, constrained/beam/forced decoding, frontier-LoRA/online-SGD переводчика, Self-RAG с reflection-токенами (требует дообучения генератора, 2310.11511).
Что влезает в 8 ГБ рядом с bge-m3 и SQLite-банком: см. §5 (VRAM-арбитраж) — короткий ответ: bge-m3 на GPU (~2.4 ГБ FP32) + резидентная support-локаль 8–9b (5–6.6 ГБ) уже насыщают 8 ГБ (замер: 30b-a3b полигона держит 6.4 ГБ, стенд идёт под потолок). Обучающийся модуль вытесняет либо эмбеддер, либо support-локаль — резидентно «банк + эмбеддер + reranker + адаптер» вчетвером не живут.
§2. In-context демонстрации — «бесплатный выигрыш» (единственный проходящий отбор кандидат)
Литература подтверждает тезис в АБСТРАКТЕ, но не в нашем направлении.
- Демонстрации > терминология для стиля и консистентности рекуррентных терминов: Moslem et al. (EAMT 2023, arXiv 2301.13294) — EN→ZH COMET zero-shot 59.87 → fuzzy 2-shot 73.90 → 10-shot 75.30; добавление 10 glossary-терминов ПОВЕРХ fuzzy-2-shot — плоско (73.90→73.57). Li/Luo/Briakou/Cherry (Google, arXiv 2503.05010) — retrieved-демонстрации бьют terminology (COMET +2.7/+1.7/+0.1 против +0.3/+0.3/+0.3 у терминологии), причём терминология почти ничего не даёт сильным моделям.
- Критическая рамка (Li et al., верифицировано): ~65% выигрыша демонстраций — от совпадения СТИЛЯ корпуса, а не от перевода терминов. Это ровно серо-зонная/стилевая роль, которую наш контур разрешает, и НЕ точностно-критичный матч approved-имён, который держит детерминированный горячий путь.
Где ВРЕДИТ (тоже подтверждено):
- Power of Noise (Cuconasu, SIGIR 2024, 2401.14887): семантически близкий, но неответный дистрактор роняет генерацию сильнее всего (near-miss хуже случайного шума). → «лучше ничего, чем мусор» — тот же принцип, что в банке.
- Over-trust в MT (не только QA!): «Exposing the Cracks» (2510.00829) — при шумном retrieval низкоресурсные направления «often produce nonsensical translations», а бо́льшие reasoning-модели БОЛЕЕ подвержены и рационализируют подставленное; Context-Adoption-Rate: Fr→En 2.5→0.7 (−72%) под противосмысловым контекстом. Это прямая эмпирика страха владельца — но на ru-как-источник, не target.
- Lost-in-the-middle (N. Liu, 2307.03172) + раздувание кэшируемого префикса: демонстрации в промпте ломают стабильный кэш-префикс Р5 (их надо в волатильный хвост → рост input-токенов).
Моя проба на реальном zh→ru (eval/adaptive_incontext.py, 魯迅《阿Q正传》, чанк с 8 рекуррентными персонажами, канон В. Рогова, deepseek-v4-flash, N=3, метрика = детерминированный post-check банка «каноническая форма в выходе»):
| Плечо | канон-консистентность | толкование |
|---|---|---|
| A. без памяти | 0.458 | своя транслитерация дрейфует от канона |
| B. soft-глоссарий (базис Р3) | 0.875 | инъекция глоссария сильно тянет к канону (+0.42) |
| C. глоссарий + демонстрации (слой) | 0.833 | демонстрации НЕ бьют глоссарий (−0.04, в шуме) |
| D. глоссарий + дистрактор-демонстрации | 0.875 | near-miss не укусил на этой метрике/масштабе |
| E. глоссарий с ОДНОЙ отравленной строкой (赵太爷→«Ли») | 0.833, отравление принято 0/3 | сильная модель сопротивлялась отраве на известном имени |
Поправка (диагностика eval/adaptive_reask.py): строгий accept-регэксп занизил глоссарий. Персистентный промах 王胡 — артефакт метрики, не провал adherence: модель рендерила канон Рогова «Бородатого Вана» (склонённое), а Ван\b не ловит суффикс. Склонение-толерантный матч → глоссарий = 8/8 = 1.000 (оба репа, ноль реальных провалов adherence). То есть на этом чанке детерминированный глоссарий УЖЕ насыщает консистентность — demos не бьют его потому что бить нечего (потолок). Это (а) усиливает вердикт §2, (б) — живая инстанция несущего невалидированного риска research/13 §2: post-check регэкспом в русской морфологии undercount'ит И даёт ложные флаги → post-check обязан лемматизировать (pymorphy2/Natasha), а не регэкспить.
Три индикативных вывода (малый N, hand-built accept-регэксп → риск само-подтверждения, одна книга/модель — не финальный eval):
- Детерминированный soft-глоссарий сильно работает на zh→ru (без памяти 0.458 → глоссарий ~1.0 после поправки на склонение) — впервые индикативно подтверждено на нашем направлении (валидация банка это на zh→ru не мерила). Хорошая новость для ядра. Оговорка: чанк «лёгкий» (глоссарий насыщается) → реальную ценность demos и re-ask надо мерить на трудных чанках (длинные/плотные, где adherence падает на 17–36%, 2310.05824).
- Демонстрации НЕ бьют глоссарий по консистентности (0.833 vs 0.875) — ровно как предсказывает Li (выигрыш демо — 65% стиль, а не термин-матч, чего эта метрика не видит). Значит выигрыш демонстраций, если он есть, — стилевой, а не консистентность/fidelity, а БАР-(в) меряет именно консистентность/fidelity.
- Отравленную строку сильная модель отвергла на ИЗВЕСТНОМ имени (阿Q-канон в претрейне) — мягкое свидетельство против слепого over-trust, но НЕ тест на НОВОМ термине без прайора (там over-trust реален — 2510.00829).
Вердикт по §2: демонстрации — единственный кандидат, влезающий в контур (0 VRAM, memory+prompt), но по имеющимся данным не проходит БАР-(в): не бьёт базис по консистентности, а их стилевой выигрыш (а) не измерен на zh/ja→ru нигде, (б) не то, что меряет критерий, (в) приносит риски дистрактора/спойлера/раздувания. → пилотировать под тем же WMT25-3-режимным eval'ом, что и банк, добавив стилевую ось; НЕ мёржить до прохождения.
§3. Локальная параметрическая адаптация (LoRA/continual) — для какой роли окупается
Ни для какой, по имеющимся доказательствам.
- Данные: одна книга даёт сотни approved-пар — data-poor. «LoRA Learns Less and Forgets Less» (Biderman, TMLR 2024, 2405.09673): LoRA недоучивает новый домен (нужно ~10× больше данных, чем full-FT), хотя и меньше забывает (регуляризатор). На сотнях пар выигрыш сомнителен.
- Не чинит корневую слабость: локаль ломает zh-реалии в представлениях (upstream), а не в выходной проекции. Даже kNN-MT — это (приблизительно, Gao 2305.13034, EMNLP 2023 — поправка верификатора: «a specific case of fine-tuning», не «математически эквивалентно») implicit GD только на output-projection, т.е. переставляет верхний слой в уже сломанном пространстве. LoRA низкого ранга — тот же потолок. → рендерер-канона роль закрыта (её держит облако/человек+таблица Палладия, G1/B6).
- Reranker/ключ-энкодер: bge-m3 эмпирически не даёт разделяющего порога (валидация банка, пересечение распределений) — нет доказательства, что книга-LoRA на ключ-энкодере это чинит; а reranker 2-го эшелона не бьёт precision-1.0 детерминированный горячий путь (там он и не нужен).
- Test-time training звучит близко, но единственная сильная работа (2411.07279) — поправка верификатора: измерена на ARC-головоломках (symbolic grid), НЕ на MT; перенос на перевод — ноль.
- Железо (каветат владельца (a), верифицировано + замер стенда): единственный первоисточник по консумерским 8 ГБ (2509.12229) — поправка: тренирует ТОЛЬКО 1.5B, batch≤2, и на RTX 4060 (Ada sm_89), НЕ Pascal. 7B-QLoRA ~8–10 ГБ пик (Dettmers 2305.14314) → не сорезидентен ни с чем (ни с bge-m3, ни с reranker). Все числа — Ampere/Ada; перенос на Pascal GTX 1070 не гарантирован (см. §5 — реальный замер bnb-4bit на sm_61).
Вердикт по §3: нет источника, где per-book локальный LoRA бьёт детерминированный базис на zh/ja→ru; корневая слабость (реалии) им не чинится; данных мало; железо — впритык и Pascal-неопределённо. НЕ мёржить.
§4. Локальный kNN-MT / retrieval-augmented ДЕКОДИНГ
На флагмане — blocked (§0). На локали — технически да, но не стоит. Четыре независимых довода (все верифицированы):
- Чистый выигрыш kNN-MT уже у нас. Единственная гарантированная победа kNN-MT — скопировать точный рекуррентный target-токен из датастора. Это ровно то, что делает детерминированный Aho-Corasick approved-глоссарий — но с жёсткой гарантией против мягкой интерполяции kNN (kNN подмешивает как вес, модель может перебить). Дублировать это обучающимся слоем — строго хуже (теряем гарантию, возвращаем тихую инъекцию).
- Не чинит реалии на слабой базе (Gao 2305.13034 — output-projection only; §3).
- Шумный retrieval деградирует (Jiang 2210.08808, EMNLP 2022: 45.92→42.22 BLEU от шума — но на сильной De-En базе; слабая локаль даёт хуже дискриминированные ключи → именно тот шумный режим).
- Tiny datastore = самый слабый режим (Khandelwal: выигрыши от датасторов 159K–18.3M токенов; одна книга
10⁵ токенов — на нижней границе или ниже) + **×100 латентность** vanilla (эффективные варианты — Wang 2204.06175, Martins chunk-based — снимают ценой качества).
Вердикт по §4: локальный kNN-MT-черновик, кормящий API-редактора — не новый выгодный мёрж: его консистентность-выигрыш принадлежит банку, а адаптационный выигрыш ограничен слабой локалью, на которой он сидит. НЕ мёржить.
§5. VRAM-арбитраж («кто побеждает») — прямой ответ на гипотезу владельца
Гипотеза владельца: эмбеддинги+векторный поиск целиком на CPU/RAM, все 8 ГБ VRAM — под обучающийся модуль (LoRA/reranker/адаптер).
Посылка — ВЕРНА (подтверждено).
- Нигде в пайплайне нет real-time эмбеддинга. Горячий путь — детерминированный Aho-Corasick (микросекунды, CPU-дёшево), без модели. Эмбеддинги — Фаза-2 второй эшелон, генерация кандидатов на ревью, пачечная. Каветат (b) закрыт: эмбеддинг — фон, не интерактив.
- CPU-числа (замерены валидацией банка, не переоткрываю): bge-m3 CPU ~78 мс/текст → вся книга (~5–10k чанков+резюме) ≈ 7–13 мин пачкой; brute-force cosine <20 мс на 100k. Латентность неважна (фоновый инжест). bge-m3 в RAM ~2.4 ГБ из 32 — незаметно.
- CPU-контеншн с горячим путём и Go-раннером (каветат c) — планируем: горячий путь микросекундный и не конкурирует; сами переводческие вызовы сетевые (ждут API), CPU простаивает; эмбеддинг-инжест ставится между главами/на границе джоб, вне критического пути. Контеншн управляем расписанием, не архитектурой.
Следствие — ПУСТО (это и есть развязка). Освободить 8 ГБ можно, но обучающегося модуля, который на них бьёт детерминированный базис, НЕТ (§2–§4): локаль не рендерит zh (роль рендерера закрыта), reranker не бьёт precision-1.0 горячий путь, книга-LoRA data-poor и не чинит реалии, kNN-MT-выигрыш уже у банка. Освобождённый VRAM правильнее отдать УЖЕ существующим support-ролям локали (спот сущностей recall 0.98 — write-path банка G1; NSFW-скрининг/черновик; дешёвый судья-гейт), которые контур уже требует, чем гипотетическому обучающемуся слою.
Реальный замер потолка на стенде (2026-07-05, eval/adaptive_probe-инфра + изолированный CUDA-env):
- Резидентно сейчас:
qwen3-abliterated:30b-a3bполигона — 6.4 ГБ VRAM (не выселял; координация — PROGRESS-пинг). - WSL2-квирк (важно для «арбитра»): CUDA видит
free=7.0 ГБ / total=8.59 ГБдаже при резидентном 30b — WSL2 спилит в shared system RAM сверх физических 8 ГБ. То есть «8 ГБ» на этом стенде мягче, но спил идёт по DDR-скорости (как эксперт-офлоад 30b-a3b) → «влезло по CUDA» ≠ «влезло быстро». Арбитраж поmax_memory_allocatedпроцесса, не по nvidia-smi. - bnb-4bit на Pascal sm_61 — реальный замер (изолированный CUDA-env, Qwen2.5-0.5B, 3 train-step): bitsandbytes 0.49.2 официально таргетит sm≥75 (Turing), но QLoRA-4bit NF4 фактически РАБОТАЕТ на Pascal sm_61 (loss считается, backprop идёт, peak 1.00 ГБ на 0.5B). Но на Pascal 4-bit ~×9 МЕДЛЕННЕЕ fp16-LoRA (5.6с vs 0.6с на 3 шага) — оптимизированных NF4-ядер под Pascal нет, dequant-оверхед доминирует → на этой карте преимущество QLoRA по скорости ИНВЕРТИРУЕТСЯ: влезает в fp16 — бери fp16-LoRA; QLoRA нужен только для 7B+ (в fp16 ~14 ГБ весов не влезают), где он единственный вариант, но медленный. Потолок «удобно тренируется» — ~1.5–3B (QLoRA ~2–4 ГБ); 7B-QLoRA ~8–10 ГБ = на/за физическим пределом 8 ГБ (в WSL2 спилит в RAM → ещё медленнее), и 7B-тренировка + резидентный reranker одновременно не живут. Каветат владельца (a) подтверждён замером: 4-bit нужен для 7B, но на Pascal он медленный; макс. удобная модель ~1.5–3B.
Вердикт по §5: CPU-эмбеддинг/GPU-free сплит — правильный дефолт (посылка верна, каветаты b/c закрыты), но не ради обучающегося слоя (его нет под БАР), а ради существующих support-ролей и чтобы не держать эмбеддер резидентно зря. Гипотеза владельца подтверждена как инженерная гигиена, опровергнута как путь к «обучающемуся модулю, бьющему базис».
§6. Adaptive online-retrieval + само-корректирующая петля — что реально без тяжёлого ML
Скептическая литература решает вопрос за нас.
- Intrinsic self-correction деградирует без надёжного внешнего сигнала: «LLMs Cannot Self-Correct Reasoning Yet» (Huang, ICLR 2024, 2310.01798) — точность плоско/падает после само-коррекции; Kamoi (TACL 2024, 2406.01297) — надёжный внешний верификатор — единственный различитель успеха и провала. В MT: TEaR (2402.16379) +0.39 COMET и один раунд лучший (итерации портят); систематика WMT24-literary (2605.13368) — рефайнмент улучшает fluency/style/terminology, но не adequacy; Chen (2306.03856) — BLEU падает при рефайнменте.
- У нас надёжный внешний верификатор УЖЕ есть — детерминированный Aho-Corasick post-check на approved-глоссарии. То есть «детект дрейфа → коррекция approved-термина» уже решено детерминированно и не должно уезжать в обучающийся слой (нарушит контур-5).
- Реально новая зона — auto/ambiguous сущности без approved-ответа. Здесь работает детерминированный консистентность-кэш (first-seen/majority-vote рендеринга, БЕЗ ML) + precision-gated adaptive retrieval КАКИЕ серо-зонные записи инъектить, с hard-abstention (паттерн risk-sensitive bandit 2604.27283 — штраф за ложную инъекцию > пропуск, воздержание first-class — но без онлайн-обучения, просто как precision-gate). Опциональный локальный CRAG-подобный оценщик (2401.15884, дообученный T5) мог бы заменить отсутствующий разделяющий cosine-порог bge-m3 — но это Фаза-2, low-trust, и тоже гейтится.
Вердикт по §6: петля «детект→коррекция» ценна, но её надёжная часть уже детерминирована; «обучение» сверх — это бухгалтерия глоссария (кэш растёт), а не ML.
§7. Предложенные архитектуры мерджа (творческий мандат, каждая — против БАР)
M1 — «In-context демонстрации в серой зоне» (пилот под eval; единственный проходящий отбор)
- Компоненты: банк v2 как есть + retrieval прошлых подтверждённых пассажей книги как few-shot демонстрации ТОЛЬКО для стиля/консистентности серо-зонных терминов (auto/ambiguous/редкие реалии), в волатильном хвосте промпта после кэш-брейкпоинта.
- Арбитраж: approved+точный матч — банк, неоспорим; демонстрации — только обогащают серую зону; каждая инъекция гейтится детермининированным post-check; precision-first фильтр + hard-abstention (Power of Noise). Демонстрации никогда не имеют write-authority над approved-именами.
- Где мог бы бить базис: гипотетически стиль/регистр рекуррентных редких терминов (Li: 65% выигрыша — стиль).
- БАР: (а) ✓; (б) ✓ 0 VRAM, +input-токены; (в) ✗ по индикативу (0.833 vs 0.875 на консистентности; стиль не измерен); (г) сложность средняя (retrieval + гейт + кэш-раскладка). → пилотировать под WMT25-3-режимным eval'ом на zh/ja→ru + стилевая ось (win-rate человека/сильного судьи); не мёржить до прохождения.
M2 — «Детерминированный консистентность-кэш + precision-gated adaptive-retrieval» (внедрять; не ML)
- Компоненты: для auto/ambiguous БЕЗ approved — first-seen/majority-vote кэш рендеринга (детерминированное расширение банка); adaptive выбор КАКИЕ серо-зонные записи инъектить (risk-sensitive precision-gate, abstention first-class).
- Это «обучение по ходу книги» в тривиальном смысле (глоссарий растёт) — без модели/VRAM/логитов.
- Арбитраж: кэш предлагает → post-check гейтит → batch-судья/человек промоутит в approved (закрывает G1/F5/B1 first-wins-навсегда осью «редакционного времени»).
- БАР: (а) ✓; (б) ✓ 0 VRAM; (в) не претендует бить fidelity — закрывает реальную дыру recall-0.571 (косвенные/перефразные серо-зонные) дёшево; (г) малая. → внедрять как гигиену банка v2.
Отвергнуто (не проходит БАР)
- Локальный kNN-MT-черновик (§4): чистый выигрыш уже у банка; на слабой локали чинит не то. НЕ мёржить.
- Книга-LoRA на reranker/ключ-энкодере (§3): data-poor, learns-less, нет разделяющего порога, Pascal-неопределённость. НЕ мёржить.
- Constrained decoding / frontier-LoRA / Self-RAG на флагмане (§0): физически blocked.
§8. Арбитраж «кто побеждает» (сводно)
- approved + точный/леммный матч → детерминированный банк, неоспорим (контур-5). Обучающийся слой сюда не входит никогда.
- Серая зона (auto/ambiguous/стиль/2-й эшелон) → обучающийся слой (демонстрации, кэш-подсказки) может обогащать, но: каждая инъекция гейтится детерминированным post-check; при конфликте побеждает precision-first фильтр (лучше воздержаться, чем инъектить неуверенное); промоушен в approved — только через batch-судью/человека.
- Резюме/факты → отдельный гейт фактичности (D1), не «авторитет по умолчанию».
- VRAM → эмбеддер на CPU (дефолт); 8 ГБ — существующим support-ролям локали, не обучающемуся слою (§5).
§9. Максимизация коэффициента канон-консистентности — детерминированные рычаги (по запросу владельца)
Раз гибрид отклонён — правильный ход не «обучать ранкер», а добивать детерминированную сторону. Замер eval/adaptive_levers.py (трудный чанк 阿Q, 11 сущностей, 1600 знаков, deepseek+grok) даёт кривую рычагов и порядок внедрения бэкенду:
- L1 — post-check ЛЕММАТИЗИРУЮЩИЙ (pymorphy3), не регэксп. Внедрять ПЕРВЫМ. (→ реализовано ИНОЙ формой, D31: боевой post-check — decl-aware через
decl.formsсида + D24.4 union базовой формы; pymorphy3-лемматизация НЕ принята, проблему ложных флагов регэкспа закрыл decl-набор — 0% ложных на full-decl, этап A; D25.8 фиксирует «наш decl-aware путь» как ответ на морф-оговорку Exel et al.) Наивный\b-регэксп на трудном чанке даёт 18–36% ложных флагов (deepseek 2/11, grok 4/11 — склонённые формы, отрендеренные верно). pymorphy3 их снимает и сворачивает OOV-транслит (Вана→ван, Дэна→дэн, Вэйчжуане→вэйчжуан). Это количественная валидация несущего невалидированного риска research/13 §2 (регэксп-шум → редакторы не верят флагам → safety рушится). Дешевле всего, чинит больше всего. - L2 — RECALL матчера: нормализация (полная, тестируемая) + alias-граф + sticky. Точный матч на trad/alias формах: recall 0.00 → +норм 0.50 → +alias 0.75. Живой баг: неполная trad-карта (爺→爷) молча промахнула 赵太爷 → A4 подтверждён: нормализацию покрыть и тестировать бит-в-бит (OpenCC, не мини-карта). Крупнейший рычаг рекола (retrieval_bench recall 0.571 — 43% упоминаний не инъектится).
- L3 — post-check + точечный re-ask (verifier-gated correction, M2). На трудном чанке добивает реальные промахи adherence (deepseek 0.82→0.91). Не чинит гомограф/односимвольный ключ (钱) — и не должен.
- L4 — таблица Палладия/Поливанова (B6): потолок ПРАВИЛЬНОСТИ. L1–L3 поднимают «использует ли модель канон»; L4 — «правильный ли канон». Локаль zh 0.26, облако-топ 0.75 — только детерминированная таблица закрывает разрыв.
- Побочно подтверждено: 钱 (односимвольный ключ, гомограф Цянь/деньги) упорно промахивается даже после re-ask → правило
min_key_len/запрет одиночных ключей (A3) обязательно — 钱 из глоссария выкинуть или заменить целой сущностью (钱府→«дом Цянь»).
Где ваш инстинкт «тюнить ранкер» легитимен (честно): ТОЛЬКО во втором эшелоне (fuzzy/семантика, кандидаты для человека) — у bge-m3 нет разделяющего порога (retrieval_bench), и research/13 §5 оставил лазейку: другое представление / sparse-голова / маленький cross-encoder reranker может разделять лучше. Это Фаза-2, low-trust, коэффициент горячего пути (§9) не двигает. Инстинкт верен, цель — второй эшелон, не костяк.
Честные слабые места рекомендаций (по этим пунктам пишут решение)
- Ни одна цифра литературы не на zh/ja→ru — тотально. Все 24 верификации: DelTA, Moslem, Li, Power-of-Noise, self-correction-скептики, kNN-MT, LoRA, ModernMT/Lilt — англо-центричны или ru только как источник. Ближайшее к нам — WMT24 Discourse-Level Literary (2412.11732) с добавленным zh→ru document-level треком и DITING (2510.09116) zh-en вебновелла — но это бенчмарки-оценки, не методы адаптации, и ja→ru литературной адаптации/бенчмарка не существует вовсе (2505.05423 держит ru только как источник). Любая рекомендация по ja→ru — по аналогии, не по данным.
- Мой in-context замер — индикативный, с широкими CI. N=3, одна книга/чанк/модель, accept-регэкспы построил сам (риск само-подтверждения), метрика меряет консистентность канона, а не стиль — а именно стиль демонстрации и должны улучшать. «Демо не бьют глоссарий» доказано для консистентности, НЕ опровергнуто для стиля. Стилевую ось (win-rate) я не мерил — это дыра, которую должен закрыть пилот.
- Over-trust я мерил на ИЗВЕСТНОМ имени (阿Q-канон в претрейне) — модель отраву отвергла. На новом термине без прайора over-trust реален (2510.00829) — мой E-плечо это НЕ покрывает. Не читать «отраву отвергли» как «инъекция безопасна».
- bnb-4bit на Pascal — замерил на 0.5B, экстраполировал на 7B. Факт: NF4 работает на sm_61, но ~×9 медленнее fp16-LoRA (нет Pascal-ядер); потолок удобной тренировки ~1.5–3B. Но полный потолок QLoRA-7B + резидентный reranker одновременно на ЧИСТЫХ 8 ГБ я прямым прогоном не мерил (не выселял 30b полигона; экстраполяция из 0.5B-footprint + Dettmers; WSL2-спил в shared RAM мутит «влезло/не влезло»). Точное число — за скоординированным стенд-окном (выселить 30b). На вердикт не влияет: кандидата, который на эти 8 ГБ бьёт базис, всё равно нет (§3).
- «Демонстрации не помогают» может перевернуться на СЛАБОЙ модели. Moslem мерил GPT-3.5; наш черновик deepseek-v4-flash сильнее и, возможно, не нуждается в демонстрациях (потолок). На более слабой/дешёвой модели или на редких терминах вне претрейна демо могут дать больше — узкий сценарий, где M1 мог бы окупиться (проверять на пилоте).
- Distractor-плечо (D) — слабый тест Power-of-Noise. Мои дистракторы off-topic, а имена заякорены глоссарием → шум не укусил. Near-miss омограф на ИМЯ (реальный режим A3) я не тестировал — там вред вероятнее.
- Я рекомендую в основном НЕ строить — а это тоже ставка. Сильнейший контр-аргумент: DelTA/Moslem показывают выигрыш памяти-с-адаптацией, и наш детерминированный no-adaptation путь — ставка по экономике/контуру, не по доказательствам. Защитима (§0 блокировки + §2 индикатив), но это ставка «дешёвое-детерминированное поверх дорогого-обучающегося», как и в валидации банка.
Что делать (сжато для оркестратора/бэкенда)
- Внедрять (Фаза 1–2, дёшево, 0 ML): M2 — консистентность-кэш auto/ambiguous + precision-gated adaptive-retrieval + hard-abstention. Это гигиена банка v2, закрывает recall-0.571-дыру и B1 first-wins.
- Пилотировать под eval (Фаза 2.5), НЕ мёржить сейчас: M1 — in-context демонстрации в серой зоне; добавить стилевую ось (win-rate человека/сильного судьи) к WMT25-3-режимному протоколу банка; критерий — бьёт ли базис по стилю БЕЗ потери консистентности/fidelity и без роста дистрактор-вреда.
- Не строить: локальный kNN-MT, книга-LoRA, constrained decoding, self-correction-как-обучающийся-слой.
- VRAM: дефолт «эмбеддер→CPU» принять; освобождённые 8 ГБ — существующим support-ролям локали, не обучающемуся слою; скоординированный стенд-замер QLoRA-Pascal-потолка — если когда-нибудь понадобится (сейчас не нужен, кандидата нет).
Источники (проверены 2026-07-05; 19 CONFIRMED / 5 OVERCLAIM с поправкой верификаторов)
Заблокированность (проба + первоисточник): kNN-MT ключ = hidden state — Khandelwal «Nearest Neighbor MT» (2010.00710, ICLR 2021); kNN ≈ GD только на output-projection — Gao (2305.13034, EMNLP 2023, поправка: «a specific case of fine-tuning», не «математически эквивалентно»); logprob-выживание API — 2512.03816 (опровергнуто живой пробой для grok/gpt-5); Self-RAG требует дообучения — 2310.11511. Живая проба: eval/adaptive_probe.py, eval/data/adaptive_probe.json.
In-context демонстрации: Moslem «Adaptive MT with LLMs» (EAMT 2023, 2301.13294); Li/Cherry «Retrieval vs Fine-Tuning at Inference» (2503.05010); Power of Noise (SIGIR 2024, 2401.14887); over-trust в MT «Exposing the Cracks» (2510.00829); lost-in-the-middle (2307.03172). Проба: eval/adaptive_incontext.py, eval/data/adaptive_incontext.json.
Локальный LoRA/kNN-MT: QLoRA (Dettmers, 2305.14314); профиль на консумере (поправка: 1.5B, RTX 4060 Ada, не Pascal, 2509.12229); LoRA Learns Less/Forgets Less (Biderman, TMLR 2024, 2405.09673); test-time training (поправка: ARC, не MT, 2411.07279); adaptive kNN-MT (Zheng, ACL 2021, 2105.13022); robust kNN-MT (Jiang, EMNLP 2022, 2210.08808); efficient/chunk kNN-MT (2204.06175, 2022.emnlp-main.284).
Само-коррекция/adaptive-RAG: Huang «Cannot Self-Correct Yet» (ICLR 2024, 2310.01798); Kamoi (TACL 2024, 2406.01297); TEaR (2402.16379); WMT24-literary рефайнмент (2605.13368); Adaptive-RAG (NAACL 2024, 2024.naacl-long.389); CRAG (2401.15884); FLARE (2305.06983); risk-sensitive abstention-bandit (2604.27283).
Adaptive/online классический MT (механизм, не вендор-числа): Farajian (2017, multi-domain per-sentence); Wuebker «Compact Personalized» (EMNLP 2018); Peris «Online Learning for NMT PE» (1706.03196); Simianer «Immediate Adaptation R0/R1» (NAACL 2019); Wang «Non-Parametric Online from Feedback» (2109.11136). ModernMT/Lilt — вендор-маркетинг, не цитируется как доказательство.
Заземление на наше направление: DelTA (ICLR 2025, 2410.08143, LTCR-1 = самосогласованность-с-первым); WMT24 Discourse-Level Literary с zh→ru (2412.11732); DITING zh-en вебновелла (2510.09116); LiTransProQA (ru только источник, 2505.05423).
Проба-инфра: eval/adaptive_probe.py (логиты/logit_bias флагманов), eval/adaptive_incontext.py (демо vs глоссарий, zh→ru А-Q), реюз eval/refusal_bench.call_provider+providers.json, корпус eval/data/samples (魯迅 阿Q + канон Рогова). Изолированный CUDA-env (Pascal QLoRA-проба) — в scratchpad, не в репозитории.