our_knp/mnist-altai-native/README.md

7.8 KiB
Raw Permalink Blame History

Нативный 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 печатает compact JSON, done только после VERIFIED.

Сайт

http://10.9.8.230:8081/native_viz.html; предыдущие сайты8080 сохранены. Запуск без системного автозапуска:

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 этим экспериментом не выполнялись.