Навчити Писаря своєму почерку¶
Роздавані ваги читають те письмо, на якому вчились. Інша канцелярія, інше
десятиліття, інший писар — і кожна п'ята літера неправильна. Це не лікується
«кращою моделлю з інтернету»: лікується кількома сотнями рядків, звірених
оком саме на цьому письмі, і дотренуванням на них. Секція Лабораторія
(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; похідні поширюються на тих самих умовах, і картка моделі це фіксує.