our_knp/mnist-altai-native/README.md

41 lines
7.8 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.

# Нативный MNIST: AltAILIF / официальный GoldenModel
Рабочая машина: `user@10.9.8.230`. Исходники сохраняются в `/home/user/KNP/mnist-altai-native`, runtime `/home/user/run/mnist-altai-native`, официальный backend1.0.2 и сборочные include/lib — `/home/user/run/altai-official-probe`. Это отдельная модель от гибридной IF256 браузерной сети и от старого STDP примера.
## Модель
784 входа с детерминированным целочисленным rate-кодом,32 активных тика;256 AltAILIF (threshold32, is_diff=true,is_reset=false,negative threshold0,saturate=true);160 AltAILIF выходов (2 знака×8 групп×10 классов, threshold4). Выходные нейроны возбуждаются только положительными выученными весами. Хост декодирует разность положительных/отрицательных спайковых счётчиков и argmax, а не вычисляет обученный линейный слой.
Веса каждого нейрона: до3 рабочих величин плюс255 для reset. Порог и все параметры целые; консервативные границы потенциалов укладываются в signed16. После входа отдельным отрицательным burst очищается hidden, выходы дожидаются окончания спайков, затем очищается output и выдерживаются задержки. Все128 reset-линий имеют разные индексы: официальный GoldenModel схлопывает одинаковые индексы внутри тика. Начальный потенциал в этой версии backend не подтверждён, поэтому смещения задаются событиями отдельного clock.
Данные и веса: model.bin (8 int32 header +w1/b1/w2/b2 int16), model.npz, images.bin (нормализованные784 uint8), labels.bin int32. Метки используются только для оценки, никогда не подаются в сеть. Веса фиксируются по train/validation, test10000 не используется для обучения/выбора параметров.
## Восстановление сборки и эксперимента
1. Сначала прочитать `/home/user/KNP/reports/2026-10-15/Отчёт_AltAI_native.md` и журнал. Не менять модель/библиотеки во время коллекций.
2. Официальные deb распакованы без установки в altai-official-probe/extracted; compile-command.txt фиксирует include/lib текущей KNP-сборки. Не запускать preinst ради воспроизведения.
3. `python3 /home/user/KNP/mnist-altai-native/build_native.py` — сборка native_digits.new и атомарная замена runtime/native_digits. Сборка берёт native_digits.cpp рядом со своим скриптом; dependency paths берутся из сохранённой compile-command.txt. build manifest фиксирует SHA256.
4. Переобучение (меняет runtime, не запускать поверх сохранённого результата): `~/anvenv/bin/python ~/KNP/mnist-altai-native/prepare_native.py`.
5. Проверка: `~/anvenv/bin/python ~/KNP/mnist-altai-native/run_verify.py cpu 10000 8 cpu-new-run`, аналогично cuda. Официальный: `... run_verify.py gm 1000 2 gm-new-run`. Для параллельной проверки фиксированных первых1000: `~/anvenv/bin/python ~/KNP/mnist-altai-native/run_sharded.py gm-new-group` (8 независимых процессов, по125 картинок и2 копии сети). Каждый новый прогон — новый каталог: повторное использование непустого каталога запрещено, чтобы старый VERIFIED не скрывал сбой.
6. GoldenModel допускается только с replicas<=2 в подтверждённой стандартной конфигурации4×4. Попытки8 копий в4×4 и явной8×8 дали несовпадения, хотя placement завершался. Не считать расширение сетки или принятие графа размещателем достаточным доказательством. Для параллелизма используются отдельные процессы эмулятора с изолированными cwd. Пакет называет устройство AltAIv1_GoldenModel; руководство KNP2.0 описывает путь как AltAI-2. Физический чип этим опытом не проверен.
7. `VERIFIED.json` создаётся только при успешном выходе и точном совпадении всех256 hidden и160 output counters и предсказаний. При несовпадении — FAILED.json, процесс останавливается. Прогресс: progress_probe.py <run-directory> печатает compact JSON, done только после VERIFIED.
## Сайт
`http://10.9.8.230:8081/native_viz.html`; предыдущие сайты8080 сохранены. Запуск без системного автозапуска:
```bash
nohup /home/user/anvenv/bin/python /home/user/KNP/mnist-altai-native/server.py > /home/user/run/mnist-altai-native/web-server.log 2>&1 < /dev/null &
```
PID фиксировать в web-server.pid и сверять команду процесса перед остановкой. Backend cpu или gm выбирается в интерфейсе. GoldenModel запускается явной кнопкой, поскольку размещение и API-тиковый обмен заметно медленнее. POST /api/native-recognize:784 нормализованных целых пикселя0..255; каждый запрос создаёт изолированную сеть через настоящий C++ KNP-исполнитель. Пустой вход — без ответа. Нет обученных матриц в JS/Python-сервере. Timeout30с и semaphore1, устаревшие ответы UI отменяются. GPU используется в пакетных тестах; для одного запроса загрузка контекста дороже CPU.
## Что сохранить следующему чату
- model.bin/model.npz, selection/history, reference.npz, metrics-reference.json, split исходного teacher.
- CPU/CUDA/GoldenModel VERIFIED.json и binary счётчики; не считать неуспешные каталоги финальными.
- source/build manifests, официальные tiny/semantics логи, web/browser API-проверки и полный отчёт.
- На локальном сервере: `/opt/neiro/reports/2026-10-15-altai-native.md`, `/opt/neiro/reports/altai-native-artifacts`.
- Все старые локальные отчёты уже импортированы в `/home/user/KNP/reports/imported-neiro-2026-10-15`, checksum manifest проверен. После новых записей импорт дополняется отдельным delta.
Не записывать пароли/приватные ключи. Подключаться к стенду только по запросу пользователя. Никакие commits/push или systemd enable этим экспериментом не выполнялись.