our_knp/pets-knp/README.md

63 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AltAI Pet lab — кошки и собаки, 15 октября 2026
Сайт: **http://10.9.8.230:8082/**. Это новый отдельный опыт, цифры8080/8081 не менялись.
## Результат и границы
CIFAR-10 cats/dogs: **1427/2000=71,35% official test**,1437/2000=71,85%validation. Отдельные8000train+зеркала,2000val,2000test. Train/validation разделены до augmentation; test не выбирал веса/эпоху/параметры. Это умеренная точность на32×32, не готовая система для любых фотографий. Другие объекты/OOD не распознаются как неизвестные; сеть всегда выбираетcat/dog. Ничья(оба молчат)→cat,7/2000test.
Все обученные операции исполняет **реальный KNP2.0 AltAILIF/Delta**, наш integer CUDA backend. Последовательность:3072пикселя→39200свёрточныхнейронов(K200×196 позиций)→фиксированное pooling4области на хосте→фиксированное root-L2 кодирование→256 обученных IFнейронов вKNP→маршрутизация их счётчиков→2 выходных нейрона вKNP. **Хост выполняет pooling/нормализацию/маршрутизацию; это несколько KNP-графов, не единый аппаратный граф.** Готовой CNN/предобученного классификатора нет. К200 фильтры переиспользованы из unsupervised vehicle-train опыта; cats/dogs/test в обучение детекторов не входили. MLP и выход обученыoffline заново дляcat/dog. Официальный GoldenModel и физический чип для этой модели **не проверены**, чужую MNIST-проверку не переносить.
## Пути
- Source: `/home/user/KNP/pets-knp`; локальная копия `/opt/neiro/experiments/pets-knp`.
- Runtime: `/home/user/run/pets-knp`; venv `/home/user/anvenv`.
- Frozen detector model: `runtime/detectors`; frozen hidden/readout:`runtime/head-v2`.
- Истина:`runtime/final-summary.json`, `eval-v2-final/VERIFIED.json`, `eval-v2-smoke/VERIFIED.json`, `checks/VERIFIED.json`, `deployment-checks/VERIFIED.json`.
- Full report:`/opt/neiro/reports/2026-10-15-pets-knp.md`; станция:`/home/user/KNP/reports/2026-10-15/Отчёт_Кошки_собаки.md`.
- Server:`runtime/server.pid`, `server.log`; worker:`runtime/worker.log`. АвтозапускаОС нет.
## Сброс и точная арифметика
Detector frame20:reset−65535tick0,delay1;тишинадо4;pixels/bias10ticks4..13,выходы считаются все;последние6тиков тишина. Каждый detectorweight|w|≤127,bias|b|≤1024,fanin108;residual меньше допустимого однократного положительного воздействия и65535. Pendingdelay1 успевает уйти. Порядок картинок/размерchunk больше не меняют признаки; freshB=A→B→B→white→B→black→B.
Fixedroot-L2: `clip(round(2048*sqrt(count)/sqrt(sum(count))),0,640)`; нулевоеизображение остаётсянулевым. L2norm≤2063. Hidden signedweights≤127,threshold1..65535. Одинпакет→IFвыдаёт `clip(floor(max(dot+bias,0)/threshold),0,64)` за64шага. Frame72:negativepulse at0,bias+features at4,выходы5..68. Resetbound=`ceil(2063*L2norm(w))+abs(bias)+1`,отрицательныеchunks≤65535;2×bound<2^24. Числа/границы проверяютсядоnarrowing вint64. Fixedmaxcount64 —часть обученнойактивации.
Output: дваAltAILIFthreshold1,do_not_save=true,weights±w,biaschunks arrivingonetick. Countpacket повторяет featureindex,каждый≤64(раннийfixture640). Нетclampingпомеждуположительным/отрицательнымсинапсом;KNPсначала суммируетполныйпакет. Hostтолько сравниваетдваoutputspikes. GPUduplicatepacket≤1024 и sumabs<2^24. Такой пакет НЕпроверенвGoldenModel(в старомMNIST-probeGMдедуплицировалповторныеиндексы).
## Проверки
- CPU/GPU exactdetectorcounts на8последовательныхвходах;independencefreshBпослеwhite/black/repeats.
- Hidden/output CPU/GPU exactна8val,эталонintegerexact;adversarialnormalizedpacket вызываетmax64спайка,посленегоzero/B/repeatedBнаCPU/CUDAexact. MalformedINT_MINrejected.
- Накаждойиз2000val+2000testhidden256countsиобаoutputspikesточныэталону. ПолныйCPUна4000изображенияхне выполнялся;невыдаватьsubsetparityзаfullCPUtest.
- Persistentdetectorworkerпобайтноexactfresh/batchна6входах;послепервойзагрузки~1–5msdetectorчасть. Это НЕlatencyвсейклассификации.
- API4запроса392–444msсерверногорасчёта(включаетhidden/readoutsubprocess);предсказанияиобаoutputspikesexactфинальномуtestCSV.
- HTTP400malformedimages,200/429paralleladmission;≤4HTTPthreads/sockettimeout15s;GPUlockдоdecode;max8MB/16MP;subprocesstimeouts,modelhashguard.
- ChromiumCDP:24gallery,filepickerupload,stale-response,mobile390pxnooverflow,JSerrors0. T3previewявносообщилnoautomationhost,поэтомуfallback.
## Запуск / остановка
Сначала убедиться,чтоэтонашпроцесс ипорт8082не занят другойзадачей:
```bash
cat ~/run/pets-knp/server.pid
ps -p "$(cat ~/run/pets-knp/server.pid)" -o pid,args
# Остановка только после проверки команды:
kill "$(cat ~/run/pets-knp/server.pid)"
# Запуск:
nohup ~/anvenv/bin/python ~/KNP/pets-knp/server.py > ~/run/pets-knp/server.log 2>&1 < /dev/null &
echo $! > ~/run/pets-knp/server.pid
curl -f http://127.0.0.1:8082/api/info
```
Приstartupсервер проверяетSHAвсехвесов,прогреваетdetectorgraph(≈6s),потомlisten. PersistentworkerостановитсяпоEOFstdinпослезавершениясервера. Приошибке/timeoutworkerперезапускаетсянаследующемзапросе. Загруженныефотоне сохраняются:TempDirectoryудаляется;serviceлоги не содержатизображений. ОтдельныеAPI/browsertestкартинкисохраненывproofsосознанно.
## Повторение и изменения
Не перезаписывать существующие каталоги и модели; используйте новыеversionedпути. `prepare.py` не меняет старыеvehicle/MNISTdata. `build.py` атомарно обновляеттолькоpets-программы,неKNPбиблиотеки. `collect.py` сохраняет fingerprints/checkpoints исобираетtrain/train_flip/val;testтольковevaluate.py--stagefinal.
Историческая цепочка:train.py baseline→tune_encoding.py→train_head_legacy.py40epochs→adapt_head.py→evaluate.py--stagesmoke→evaluate.py--stagefinal. **Первыйheadэкспортсодержалпереполненныепорогиуослабленныхнейронов:runtime/headнеиспользоватьнаинференсе.** `adapt_head.py` удалил71отрицательныхoverflowunits,32порогавыше65535перемасштабировал,зановообучилoutputтолькоtrain/val;результатвhead-v2. Ранняяhead71,85%небылаKNP-проверкой;финальныйhead-v2валиден,вKNPдалтеже71,85%validation. Правильныйfrozenartifactвhead-v2/model.npz;учитыватьэтуадаптациюприповторении. Такжеtrain.pyисправленself-referentialJSON,раннийreadoutнефинальный.
`train_head.py` уже исправлен для следующего опыта: пороги и bias ограничиваются до преобразования в int32, контролируется полный reset-bound, сохраняется float-checkpoint, каталог `head-next`. Точный исторический скрипт сохранён в `train_head_legacy.py`; его экспорт нельзя развёртывать мимо adapt+smoke. Повторное обучение новой версией в этом опыте не запускалось, замороженная модель head-v2 не менялась.
ЛучшеобучитьK400/800фильтрынаcats/dogstrain,сохранитьсовременныйfloatcheckpointиexportбезoverflow,сравниватьтолькоvalidation. **Не тюнитьпотекущемуofficialtest.** Дляфотоизинтернета потребуютсяболеекачественныеданные,большеfilters/слоёв иотдельнаяphoto-testвыборка;новыйдатасетнеподменятьCIFARоценкой.