our_knp/pets-knp/README.md

9.3 KiB
Raw Permalink Blame History

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не занят другойзадачей:

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