63 lines
9.3 KiB
Markdown
63 lines
9.3 KiB
Markdown
# 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оценкой.
|