# 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оценкой.