our_knp/reports/2026-10-15/Отчёт_AltAI_native.md

107 lines
23 KiB
Markdown
Raw Permalink 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 в официальный AltAI GoldenModel — 2026-10-15
## Итог — подтверждено
- Нативная сеть AltAILIF/Delta: **9776/10000 =97,76%** на полном MNIST test, измерено в KNP CPU и нашем CUDA-бэкенде. Все256 hidden и160 output counters и предсказания на10000 побайтно совпадают между обоими backend и целочисленным эталоном.
- Официальный backend1.0.2, устройство `AltAIv1_GoldenModel`: проверены фиксированные первые1000 test, **975/1000 =97,50%**. Все hidden/output counters и предсказания точно совпали с теми же1000 изображениями эталона. Это8 независимых процессов, в каждом2 копии сети и подтверждённая стандартная конфигурация4×4. Wall всей параллельной проверки143,273с. Полные10000 в официальном GoldenModel НЕ запускались.
- Рабочая нативная страница: **http://10.9.8.230:8081/native_viz.html**. Переключатель KNP CPU / официальный GoldenModel вызывает настоящий C++ спайковый граф. GoldenModel API на test2534→3 с полным совпадением counters, около6,126с на запрос. KNP CPU около0,12–0,17с с запуском отдельного процесса; это не0,5мс старой локальной гибридной JS-сети.
- Исходники: `/home/user/KNP/mnist-altai-native`; runtime `/home/user/run/mnist-altai-native`; сборка и распакованный официальный backend `/home/user/run/altai-official-probe`. Основной model SHA256 `0a93f4a987d0021337b48c1d6333e7fa0fcb38ac3a43c49f8fcad19276b6548c`.
- Старые неуспешные прогоны сохранены и НЕ являются финальным результатом. Физический процессор не проверялся; другие конфигурации GoldenModel и исполнение произвольных сетей этим опытом не доказаны.
## История и подробности этапа
Новая браузерная гибридная сеть IF256 проверена отдельно:98,30% official MNIST test. Это не результат нативного AltAI. Предыдущий CPU-STDP пример:92,23%. Исходная цель продолжения — перенести вычисления входа, скрытого слоя и выходного взвешивания в AltAILIF/Delta, исполняемые официальным GoldenModel, а не заменить цифры в интерфейсе.
По просьбе пользователя основной ассистент продолжает лично после остановки исполнителя из-за лимита. Другие исполнители не запускаются. Astra-advisor: GPT-6 Astra, взаимодействия1/3 и2/3 по текущему переносу; рекомендован официальный emulator-first, затем rate coding и20 opponent outputs (в реализации160, поскольку каждый знак/класс разбит на8 групп по32 входа). Хост декодирует разность положительных/отрицательных счётчиков и argmax; обученных матричных вычислений на хосте в нативном тракте нет.
## Документация и пакет
- Локальный первичный источник: documents/reference/KNP-2.0-ru-RU.txt, разделы о процессоре и бэкенде AltAI:±255 веса,16-битные потенциалы, ограничения топологии, до4 величин веса на нейрон.
- Пакеты: sources/releases/v2.0.0/knp-altai-backend_1.0.2_amd64.deb и dev-пакет. Распакованы без установки/preinst, sudo не применялся.
- Рабочая станция: user@10.9.8.230, /home/user/KNP; public API backend/dev headers в /home/user/run/altai-official-probe/extracted.
- Реальное имя устройства в API: AltAIv1_GoldenModel. Руководство KNP2.0 описывает этот backend как путь исполнения AltAI-2; эти обозначения не объединяются в выдуманное поколение.
- Пакеты загружаются и исполняются штатным API. Бинарники не дизассемблировались и не переимплементировались путём reverse engineering.
## Проверенные микропробы
Исходники и логи: /home/user/run/altai-official-probe; локальный новый код: experiments/altai-native/semantics.cpp.
- Tiny input→hidden→output прошёл placement и дал4 выходных спайка.
- is_diff=true, is_reset=false: один входной заряд21 при пороге3 дал7 скрытых спайков. Остаток заряда действительно сохраняется.
-25 одинаковых входных индексов в одном SpikeData при весе1/пороге21 дали0: повторы схлопываются, не кодируют амплитуду.
- initial potential21 без входов при пороге3 дал0: перенос начального потенциала этим путём не подтверждён.
- positive leak1 при пороге3 дал спайки на3,6,9,12,15.
- Реальное время tiny:24 тика0,690с;128 тиков3,308с;512 тиков13,056с. Официальный API имеет существенные потактовые накладные расходы; не выдавать время NumPy/браузера за его скорость.
## Новая адаптация
Код: experiments/altai-native/{prepare_native.py,native_digits.cpp}; remote-копии пока в /home/user/run/altai-official-probe. Runtime: /home/user/run/mnist-altai-native.
Фиксировано:32 активных тика,784 целочисленных rate-coded входа,256 скрытых AltAILIF с порогом32, subtractive reset и отрицательным ограничением0. Веса скрытого слоя квантуются в0,±1,±2,±4. Смещения задаются отдельными тактовыми входами с единичным весом, а не предвычисленным скрытым зарядом. На выходе160 положительных IF-нейронов:2 знака×8 групп×10 классов. Веса одного нейрона используют не более3 рабочих величин плюс255 для сброса.
Readout переобучен offline на55000 train, выбор checkpoint и квантования — на5000 validation. Разделение и нормализация взяты из сохранённого проверенного эксперимента. Test10000 читается для метрики после фиксации выбора. Входные веса взяты из train-only teacher. Выбор по validation: выходной масштаб4, порог4. Эталон с точными целочисленными правилами дал9776/10000 (97,76%), validation97,80%. Это пока эталон, НЕ метрика GoldenModel.
Консервативные границы потенциалов: скрытый верх12864; выходной верх1120. Наблюдённые скрытые значения до ограничения[-131,8828]. Сброс —128 различных входных линий, без повторов; суммарный отрицательный заряд32640, допустимый по16-битному диапазону. Сначала очищается hidden, выходу дают полностью выдать накопленные спайки, затем очищается output и выдерживаются задержки. Пустой выход два тика после остановки hidden означает завершение положительного IF-drain при leak0.
CPU KNP-граф на8 изображениях дал8/8; все256 hidden counts и160 output counts побайтно совпали с эталоном. Первый официальный full-graph прогон дал0/8 и ошибки отсутствующих входных индексов: часть посылаемых тактовых линий не имела связей, а inhibitory-current reset нуждается в проверке совместимости официального backend. Этот результат сохранён как неуспех, а не скрыт. Исправляются только представление отрицательного reset через signed Delta и фильтрация неиспользуемых входов; точность пока не заявляется.
## Перенос всех отчётов
235 локальных файлов: весь /opt/neiro/reports (включая артефакты), корневые Markdown, рабочие Markdown в experiments/cats-dogs и других experiments. Архив /tmp/neiro-reports-20261015.tar.gz,15607736 байт, SHA256 abca553f95fe75c286f26e291cfb6f1e3d0926e5ebc56b66d61637cd17f01713.
Копия на станции /home/user/run/neiro-reports-20261015.tar.gz. Распаковано в /home/user/KNP/reports/imported-neiro-2026-10-15 без замены собственных отчётов проекта. Проверен SHA256 архива и всех235 файлов по IMPORT-MANIFEST.json, итог IMPORT-VERIFIED.json. На машинах расходятся часы: tar предупредил о будущих timestamps, содержимое проверено хешами. Новые записи текущего этапа будут добавлены отдельной синхронизацией после завершения.
## Продолжение проверок (актуальнее промежуточного состояния выше)
1. Отрицательные reset-связи представлены весом-255 и типом EXCITATORY (signed Delta). Неиспользуемые входные линии отфильтрованы, ошибки unknown input устранены. В первой фильтрации обнаружена ошибка dangling else, из-за которой output-reset не посылался. Исправлены скобки; добавлен флаг компилятора -Werror=dangling-else. Неуспешные прогоны оставлены отдельно.
2. Исправленный официальный gm-reset-v3 на8 изображениях/2 копиях сети:8/8; все hidden и output counts побайтно равны эталону. Это проверяет также очистку между последовательными картинками.
3. Полный CPU-прогон cpu-full-v3:9776/10000,64,889с. Проверены ВСЕ256 скрытых и160 выходных счётчиков на каждой картинке, предсказания и метки. Всё совпало с эталоном. Ранний cpu-full со сломанным reset дал9775/10000 и НЕ является финальным результатом.
4. CUDA тот же граф:9776/10000,11,6164с, полный набор счётчиков и предсказаний побайтно равен CPU и эталону. Это наш CUDA-бэкенд AltAILIF/Delta, не время официального GoldenModel. Для batch8 ускорение стенового времени относительно CPU примерно5,59×.
5. Официальный gm-1000 с8 копиями/стандартной сеткой завершил1000 изображений, но проверка отклонила результат: hidden differences26495 (319 картинок), correct936/1000. Размещатель выделил24 ядра при стандартной сетке4×4. Гипотеза — несоответствие конфигурации сетки фактическому размещению; результат не выдан за качество модели. Запущен новый gm-1000-grid8-v4 с явным load_core_grid_params(8,8,standard north port), изолированным cwd и инкрементальной сверкой hidden/output с эталоном. При расхождении процесс останавливается, создаётся FAILED.json. Полный официальный результат ещё ожидается.
6. В dev-заголовке объявлен get_grid_cols_rows, но пакет1.0.2 не предоставляет символ для линковки. Убрано обращение к getter; grid8 задаётся публичным setter и записывается в конфигурацию запуска. После ошибки линковки рабочий бинарник восстановлен из native_digits_v3; сборка теперь сначала создаёт native_digits.new и заменяет рабочий файл только после успешной компиляции.
## Нативный сайт/API
Новая отдельная страница http://10.9.8.230:8081/native_viz.html; прежний сервер8080 не остановлен. API /api/native-recognize принимает только784 целых пикселя0..255, ограниченный JSON, backend cpu или gm. Пустой вход возвращает отсутствие ответа. Обученных матричных слоёв в Python/JS нет: каждый запрос исполняет native_digits, а сервер только декодирует спайковые счётчики и argmax. Временный каталог изолирует изображения/конфигурации/логи запроса и удаляется после ответа. Глобальный semaphore запрещает накопление параллельных дочерних процессов; timeout30с. Клиент отменяет устаревшие ответы, допускает ограниченный retry429. Для медленного GoldenModel запуск только явной кнопкой.
Восьми API-примерам, включая test2534, побайтно сопоставлены hidden/output counts эталона. Тройка2534→3. API CPU один запрос около114–165мс с созданием процесса, а не0,5мс браузерной гибридной сети. Некорректные длина и диапазон пикселей дают400. Chromium/CDP:8 точных parity-кейсов, gallery2534→3, настоящее рисование мышью и касанием(1→1), mobile390 без горизонтального overflow, пустое поле и очистка после pending/debounce, JS errors0. Скриншоты и JSON проверки — /tmp/native-browser-work на локальной машине, будут сохранены в reports.
GoldenModel API и длинная проверка пишут конфигурации только в свои cwd. Новые пользователи/пароли, автозапуск ОС, коммиты и push не создавались.
## Заключительная проверка и устранённые замечания
Применён astra-advisor, GPT-6 Astra: всего3/3 взаимодействия по переносу. Архитектурный verdict: opponent outputs и хостовая разность их счётчиков являются декодированием, а не ANN-readout; обученные взвешивания и смещения действительно находятся в AltAILIF/Delta. Обязательный blocker — точное прохождение официального subset — снят успешным `gm-shards-v1/VERIFIED.json`.
Замечания advisor исправлены: run_verify.py отказывается использовать непустые каталоги, старые VERIFIED/FAILED не могут маскировать новый запуск; проверяется точная запрошенная последовательность IDs, а не просто допустимый диапазон; модель и исполняемый файл хешируются до/после запуска. Проверка повторного использования каталога не изменила готовые файлы. Удалена устаревшая API-блокировка, привязанная только к имени старого gm-1000; cwd каждого запроса и каждого emulator процесса изолированы.
Повтор8×8 с8 копиями тоже отклонён инкрементальной проверкой после16 записей. Увеличения сетки оказалось недостаточно; топология/маршрутизация при таком числе копий не подтверждена. Не выдавать предположение о числе ядер за доказанную первопричину. В финальном C++ исполнителе официальный GM с replicas>2 явно запрещён. Попытка конфигурации16×16 была рассмотрена/скомпилирована, но не использована для финальной проверки; вместо неё выбран подтверждённый стандартный режим и изолированные процессы. Исходные состояния v3/v4 и неуспешные логи сохранены.
Финальный wrapper дополнительно проверен на32 картинках CPU и32 CUDA: requested IDs/labels/predictions и все hidden/output counters exact. Изменения финального бинарника относительно полного тестаv3 — ограничения экспериментальных конфигураций и диагностические поля; арифметика графа не менялась. Для полных тестов сохранён предыдущий бинарник native_digits_v3, для финального — native-build.json с source/executable hashes.
### Воспроизведение
```bash
# На user@10.9.8.230:
python3 /home/user/KNP/mnist-altai-native/build_native.py
/home/user/anvenv/bin/python /home/user/KNP/mnist-altai-native/run_verify.py cpu 10000 8 cpu-new
/home/user/anvenv/bin/python /home/user/KNP/mnist-altai-native/run_verify.py cuda 10000 8 cuda-new
# Стандартный официальный GM; новый каталог, не перезаписывать результат:
/home/user/anvenv/bin/python /home/user/KNP/mnist-altai-native/run_sharded.py gm-new-group
```
Обучение и backend-веса не менялись после выбора на validation. Перезапуск сайта описан в mnist-altai-native/README.md; активный PID в runtime/web-server.pid. Автозапуска ОС нет. Старый сайт8080 продолжает работать, на страницах добавлена ссылка на новую нативную сеть. Никаких commits/push не выполнялось.
### Сохранение
`final-summary.json` содержит все финальные метрики, SHA256 и ограничения. `native-model-and-proofs.tar.gz` сохраняет модель, split, параметры отбора, эталон, CPU/CUDA/GM протоколы, результаты, исходники и микропробы. Копия артефактов локально в reports/altai-native-artifacts, на станции в runtime и в импортированной копии отчётов. Отдельный SHA256 проверяется при скачивании.
Базовые235 локальных файлов уже перенесены и проверены; последние дополнения этого этапа синхронизируются тем же проверяемым импортом. Точная окончательная истина о файлах — `/home/user/KNP/reports/imported-neiro-2026-10-15/IMPORT-MANIFEST.json` и `IMPORT-VERIFIED.json`. Собственные отчёты проекта вне импортированного каталога не заменяются. Новые отчёт/журнал также сохраняются напрямую в `/home/user/KNP/reports/2026-10-15/`.
### Границы измерений времени
Поля wall_seconds64,889(CPU) и11,6164(CUDA) измерены одинаковым C++ таймером вокруг создания ModelExecutor и исполнения графа; чтение image/model файлов, создание популяций/проекций и нормализация изображений происходят до таймера. Ускорение5,59× относится к этому блоку выполнения при batch8, а не к полному обучению/подготовке или отдельному рисунку. Время143,273с официального subset измерено внешним оркестратором, включает8 процессов/placement/проверки и относится к1000, не10000 изображениям. API114–165мс и6,126с включают создание отдельного процесса на один запрос.
## Итог сохранения
Подтверждены243 локальных файла отчётов, журналов, передач и артефактов на рабочей станции: пофайловые SHA256 совпали. Импорт: /home/user/KNP/reports/imported-neiro-2026-10-15. Истина последней delta-проверки — IMPORT-VERIFIED.json; локальная копия статуса — /opt/neiro/report-transfer-status.json. Отдельный canonical отчёт — /home/user/KNP/reports/2026-10-15/Отчёт_AltAI_native.md. Рабочая передача — /home/user/KNP/HANDOFF-native-2026-10-15.md. Модель/исходники/доказательства находятся и в runtime, и в архиве артефактов; никаких приватных ключей/паролей в пакеты не включено.