Перейти до змісту

Навчити Писаря своєму почерку

Роздавані ваги читають те письмо, на якому вчились. Інша канцелярія, інше десятиліття, інший писар — і кожна п'ята літера неправильна. Це не лікується «кращою моделлю з інтернету»: лікується кількома сотнями рядків, звірених оком саме на цьому письмі, і дотренуванням на них. Секція Лабораторія (nysh sections enable lab) дає для цього повний шлях: кропи → голоси → мітки → корпус → трен → вибір епохи → бойова модель.

🔴 Найдорожче тут — не карта і не код, а мітки, звірені оком. Мітка з помилкою гірша за відсутню: вона осідає в моделі й повертається у власному читанні. Тому конвеєр побудований так, щоб дивитись менше, але в правильні місця.

Що де лежить

що де клас
набори з мітками data/train/sets/<набір>/ (set.json, lines.jsonl, drafts/) незамінне — у git простору
кропи рядків data/train/crops/<набір>/ тримати: відтворюються лише поки живий кеш сегментації
рецепти й зовнішні корпуси config/train/recipes.yaml, config/train/sources.yaml конфіг
корпуси data/derived/train/corpora/<корпус>/ + .tgz відтворюване
прогони трену data/derived/train/runs/<прогін>/ відтворюване (дорого)
бойові ваги data/spotter/models/ + PRODUCTION.json те, що читає nysh read

Шлях

1. Набір із прогону. Справу вже прочитано (nysh read); кропи ріжуться з геометрії цього прогону, і текст прогону стає першим голосом задарма.

nysh train cut <прогін> --name <набір> --pick 6 --domain "метрична книга"
nysh train voices --set <набір> --from-run <прогін>-diak_v4

Кеш сегментації дає ті самі кропи, що бачив рушій; без середовища рушіїв кропи ріжуться полігоном, і nysh train sets це каже.

2. Мітки — двома каналами. Агенти-арбітри зводять голоси, дивлячись на аркуш (nysh train export → відповіді → nysh train import, скіл label-lines); людина розмічає у вкладці Розмітка консолі, де черга ранжована розбіжністю голосів. Ворота на імпорті знімають маркери, понижують белькіт і зсунуті блоки до low; підозріле показується людині (nysh train gates --set <набір> --suspects).

3. Holdout. Один-два набори з іншої справи того самого жанру дістають у set.json роль holdout: вони ніколи не йдуть у корпус, і саме по них обирається епоха. Без holdout nysh train doctor попереджає.

4. Корпус.

nysh train plan --recipe own
nysh train build --name v1 --recipe own

Рецепт own — лише власні набори (мітки ×4, злиття ×1); domain і lean додають зовнішні корпуси, якщо вони описані в config/train/sources.yaml (зразок — sources.example.yaml у пакеті). У плані звіряти rep, а не відсоток: частка перераховується в ціле число копій.

5. Трен. План друкується завжди; старт — з --yes.

nysh train start --corpus v1 --smoke --yes          # димовий прогін: одна коротка епоха
nysh train start --corpus v1 --dry-run              # план: години, карта, команда
nysh train start --corpus v1 --yes                  # своя карта
nysh train start --corpus v1 --host <машина> --yes  # свій сервер (nysh cloud hosts)
nysh train start --corpus v1 --backend modal --gpu A100 --yes   # gpurunner, якщо стоїть
nysh train status

Локально трен іде в середовищі рушіїв (nysh htr install); на Windows без DDP. Своя машина по SSH готується тим самим nysh cloud prepare, що й для читання. gpurunner — окремий інструмент оренди карт; якщо він на шляху, nysh train start --backend … рендерить для нього команду і далі ходить status/fetch/stop (vast тарифікує до cancel).

6. Епоха — по holdout, не по val.

nysh train fetch          # для ssh і gpurunner
nysh train eval --models pysar_cyr_v17

Таблиця: recall власних назв і CER усіх чекпойнтів і чинної моделі одним прогоном; micro поруч із macro; набори з менш ніж 60 рядками позначені. Покращення val трену — не доказ: val узятий із тих самих справ, що й train.

7. Бойова модель.

nysh train promote <прогін> --epoch 9 --as pysar_cyr_v18.pt --why "recall 74→79% на holdout h1+h2"
nysh models list

Ваги лягають у data/spotter/models/ з карткою (походження, замір, ліцензія CC BY-SA), PRODUCTION.json називає їх бойовими, і наступний nysh read бере їх. Приймач — прочитати сторінку з відомим позитивом новою моделлю.

Що треба знати наперед

  • Приріст купується матеріалом свого жанру: кількасот рядків з тієї справи, яку читатимете, дають більше, ніж тисячі чужих.
  • Перерозподіл наявного (частки, ваги) вичерпується швидко; далі — лише нові мітки нового письма.
  • Малий holdout бреше: рядок із 30 рядків перевертав висновок двічі.
  • Ліцензія: базові ваги — CC BY-SA; похідні поширюються на тих самих умовах, і картка моделі це фіксує.