NedoAI: троичный dot/score на {-1,0,+1} (эксперимент, без FP)

Уравновешенная троичная система счисления - форум переехал с http://ternary.info

Moderator: haqreu

xakepp35
Novelist
Posts: 32
Joined: 10 Feb 2016 16:59

NedoAI: троичный dot/score на {-1,0,+1} (эксперимент, без FP)

Post by xakepp35 »

NedoAI-Opto: кто я, что делаем и как подключаться (deliverables, v0)

Ребят, всем привет! :egeek: Очень рад вас всех видеть. И абсолютно несказанно рад, что такой важный форум - живет и здравствует, не поддавшись на провокации x86/arm и прочих рудиментов cmos процесса!

Предлагаю вниманию практичный востребованный эксперимент, в троичную сторону. Я в основном по софту/архитектура/идеи (да, паял когда-то, но сейчас отошел от дел). Хочу собрать проект так, чтобы он был проверяемый, тащился руками кому интересно железо/RTL. Умышленно оформляю как императив/процедурку. Кто виноват - ясно, тут и далее - "что делать". Просьба не кидаться камнями за нейронки.
Last edited by xakepp35 on 05 Feb 2026 22:59, edited 8 times in total.
xakepp35
Novelist
Posts: 32
Joined: 10 Feb 2016 16:59

Re: NedoAI: троичный dot/score на {-1,0,+1} (эксперимент, без FP)

Post by xakepp35 »

Мотивация
Главная боль часто не “мало математики”, а данные гоняются туда-сюда и жрут энергию и полосу. В классических системах дорогая часть — не сама операция, а перемещение: память → шина → вычисление → память. Чем больше модель и чем чаще дергаем память, тем хуже становится энергетика и тем сильнее упираемся в пропускную способность.

Если скоринг и похожесть считать рядом с данными и дёшево, то это сразу прикладное: retrieval, фильтрация, top-k, дедуп, маршрутизация, компактные линейные слои. Тут не нужен “универсальный интеллект” — нужен быстрый и честный кирпич, который считает много похожестей и возвращает максимум/топ-k.

Почему вообще оптика: свет уже “умеет” делать широкополосную передачу и параллелизм, а поляризация даёт естественный носитель знака. В таком тракте редукция вида “две корзины” реализуется физикой: PBS делит поток на H/V, фотоканалы интегрируют энергию, балансная детекция даёт разность. По смыслу это очень близко к XNOR+popcount в битовом мире: много простых вкладов суммируются в один скор, только у нас симметрия троичная {-1,0,+1} и ноль реально “не участвует”. Важно: мы не обещаем магии и “оптический LLM”. Мы проверяем гипотезу, что скоринг/похожесть можно считать энергоэффективно и параллельно, если правильно закодировать знак и сделать честную калибровку. Вернуть видяхи геймерам, перестать кипятить океаны инференсом. Тема востребованная, не кликбейт ;)

Троичность удобна: 0 = “не участвую”, знак = “за/против”. Делаем аналог “XNOR+popcount”, но честно для {-1,0,+1}. Если получится — получим кирпич, который масштабируется по N/M/R и может стать “near-data scoring” примитивом, а не очередной презентацией.
Last edited by xakepp35 on 05 Feb 2026 23:00, edited 3 times in total.
xakepp35
Novelist
Posts: 32
Joined: 10 Feb 2016 16:59

Re: NedoAI: троичный dot/score на {-1,0,+1} (эксперимент, без FP)

Post by xakepp35 »

Гайдлайны
  • Наука и воспроизводимость: словам верим только вместе с проверкой. Даем числа, допущения, методику и сырьё: логи, осциллограммы, таблицы.
  • Язык проекта: документация и обсуждение на русском. Английские термины допустимы как технические: TIA, PBS, SNR. Тексты, спеки, инструкции — по-русски.
  • Происхождение: проект родом из РФ. Участие международное допускаем. Русский язык и инженерная фиксация остаются базовыми. Переводы приветствуются.
Last edited by xakepp35 on 05 Feb 2026 23:02, edited 1 time in total.
xakepp35
Novelist
Posts: 32
Joined: 10 Feb 2016 16:59

Re: NedoAI: троичный dot/score на {-1,0,+1} (эксперимент, без FP)

Post by xakepp35 »

Apache 2.0 FOSS
Проект чисто индейский — полностью OSS и некоммерческий. Код, спеки, схемы, измерения, логи открываем под Apache 2.0. Я владею репом, веду роль product owner: фиксирую DoD, держу целостность спеки, собираю артефакты и публикую инструкции и форматы отчётов. В треде коммерцию НЕ ОБСУЖДАЕМ!

Контрьбьюты
Ищем не “людей по интересу”, а ролевые вклады, в виде артефактов, для заливки в реп.
Одна роль = один набор deliverables = один конкретный результат.

Роли
[spoiler]0. Владелец
Я держу цель, границы и порядок. Я фиксирую решения и не даю проекту расползтись.
Работа:
  • Фиксирую цели, границы, DoD
  • Слежу, чтобы спеки не противоречили друг другу
  • Собираю артефакты в одно место
  • Формирую последовательность шагов
Выход (deliverables):
  • Спецификации
  • Сводки результатов
  • План следующего шага
[/spoiler]
[spoiler]1. Оптик (free-space / поляризация)
Вход: доступ к оптике и столу, опыт выравнивания, понимание PBS и поляризаторов
Работа: собрать или описать оптический тракт и методику выравнивания
Выход (deliverables):
  • Схема оптического тракта v0
  • Процедура выравнивания
  • Оценка потерь, перекоса и паразитной поляризации: числа в дБ или процентах, с допущениями
[/spoiler]
[spoiler]2. Электронщик (аналог: PD / TIA / дифф / компаратор)
Вход: опыт с фотодиодами и TIA, понимание шумов, полосы, питания и земли
Работа: спроектировать и свести тракт измерения и порогования
Выход (deliverables):
  • Электрическая схема и список номиналов и компонентов
  • Полоса и шум: измерение или расчёт с планом измерения
  • Пороги ±T: как выбраны и как чувствительны к дрейфу
[/spoiler]
[spoiler]3. Тестировщик (осциллограф / логгер / протокол)
Вход: умение делать повторяемые измерения, калибровка, логирование
Работа: зафиксировать протокол и метрики, чтобы v0 был проверяемым
Выход (deliverables):
  • Таблица метрик: SNR, drift, error, R. Определения метрик фиксируются.
  • Сырой лог измерений: CSV или лог-файл, плюс структура полей
  • Графики по возможности: распределения, дрейф, ошибка vs порог
[/spoiler]
[spoiler]4. Python разработчик (симулятор / цифровой двойник)
Выход:
  • Golden model оптика+электроника на Python/NumPy
  • Отчёт: ошибка vs N, мощность, перекос
  • Рекомендации по выбору порогов T и их стабильности
[/spoiler]
[spoiler]5. Механик (корпус / PM-fiber)
Выход:
  • План миниатюризации: стол → корпус → модуль
  • Список деталей и узлов, риски по вибрации и температуре
[/spoiler]
[spoiler]6. Цифровик (FPGA/логика: тайминг / top-k / управление)
Выход:
  • Контроллер стенда: генерация слотов, тайминги, сбор результатов
  • Протокол кадра и логика выбора top-1 или top-k
[/spoiler]
[spoiler]7. Электрооптик (EOM/AOM, драйверы, нужен опыт)
Выход:
  • План W2: быстрые веса
  • Макет одного weight element
  • Измерение скорости и контраста, узкие места
[/spoiler]
[spoiler]8. Фотоник (Silicon photonics / PIC-архитектура, без производства)
Выход:
  • Блок-схема PIC-версии, эквиваленты PBS и поляризации
  • Список рисков и требования к калибровке
  • Оценка: что реально в PDK, а что фантазия
[/spoiler]
[spoiler]9. Весовщик (PCM/термо-настройка) — опционально
Выход:
  • Варианты хранения весов и процедура калибровки и перепрошивки
  • Оценка удержания, дрейфа и вариаций: качественно или количественно, с опытом или ссылками
[/spoiler]
[spoiler]Шеринг результатов
Пиши одним сообщением по шаблону, Без воды.
  • Что сделал (1 факт)
  • Как проверил или чем измерил
  • Какие числа получил
  • Следующий шаг
Важно: если измерений нет, дай расчёт и план измерения: чем, как, какие ожидаемые диапазоны.[/spoiler]

[spoiler]Как взять роль?
Напиши: "Готов взять роль 2 (Электронщик)"
  • Что могёшь? Что умеешь?
  • Какие deliverables берёшь?
  • Когда показываешь первый артефакт?
[/spoiler]
Last edited by xakepp35 on 05 Feb 2026 23:14, edited 1 time in total.
xakepp35
Novelist
Posts: 32
Joined: 10 Feb 2016 16:59

Re: NedoAI: троичный dot/score на {-1,0,+1} (эксперимент, без FP)

Post by xakepp35 »

P03. WeightBank: троичный вес как “гейт + инверсия знака”

Цель
Зафиксировать семантику весов w и способы их реализации по этапам. Дать проверяемую процедуру верификации weight element. Этот пост определяет, что значит “вес работает”.

[hr]

0) Термины
  • slot i — i-й слот данных кадра
  • x_i — трит входа в slot i
  • w_i — трит веса, применяемый к slot i
  • weight element — физический элемент, который реализует w_i для одного слота или одного канала
[hr]

1) Семантика w
Зафиксируй w как действие над оптическим сигналом в слоте.
  • w_i = 0 (block)
    Не допускай прохождение оптического сигнала в слоте i. На выходе WeightBank в этом слоте должен быть no-light.
  • w_i = +1 (pass)
    Пропускай сигнал без изменения поляризации. H остаётся H, V остаётся V.
  • w_i = -1 (invert)
    Пропускай сигнал и меняй знак как H↔V. H становится V, V становится H.
Инвариант: WeightBank не кодирует величину амплитудой. WeightBank реализует только три действия: block / pass / invert.

[hr]

2) Реализация W0: статические веса между прогонами
Определи W0 как режим, где w фиксируется вручную и меняется только между сериями кадров. W0 нужен, чтобы v0 случился быстро.

Контракт W0:
  • w задаётся вручную и не меняется внутри серии кадров
  • перенастройка весов допускает секунды/минуты, это нормально
  • главная цель — измерить S, noise, drift и доказать семантику block/pass/invert
Типовые реализации W0:
  • block: механический затвор или ручное “выключить канал” на источнике
  • pass: прямой тракт без элементов
  • invert: ручной ввод/поворот half-wave plate (HWP 90°) или ручная перестановка тракта через H↔V
[hr]

3) Реализация W1: программируемые-медленные веса
Определи W1 как режим, где веса задаются программно, но меняются редко. W1 нужен для воспроизводимости и масштабирования M.

Контракт W1:
  • w задаётся электронным управлением
  • w может меняться между сериями кадров или между кадрами, но не обязан меняться в каждом слоте
  • скорость переключения не является целью, цель — повторяемость и управляемость
Типовые реализации W1:
  • block/pass: электрооптический или жидкокристаллический затвор, либо управляемый модулятор интенсивности
  • invert: управляемый поворот поляризации (LCVR/EOM в режиме волновой пластинки) или переключение между двумя путями: bypass и path с HWP
[hr]

4) Трек W2: программируемые-быстрые веса как отдельный проект
Определи W2 как режим, где веса меняются на уровне слотов. W2 выполняется только после доказанного v0 и идёт как отдельный трек.

Контракт W2:
  • w меняется синхронно со слотами
  • переключение устойчиво, без хвостов, без паразитных переходных процессов
  • результат верифицируется процедурой из раздела 5
Типовые реализации W2:
  • block/pass: EOM/AOM модуляция интенсивности
  • invert: EOM как быстрый управляемый ротатор поляризации или быстрый переключатель между двумя поляризационными путями
[hr]

5) Процедура верификации weight element
Проверь каждый weight element независимо, до сборки всего стенда. Процедура должна дать числа и статус PASS/FAIL для block/pass/invert.

5.1 Конфигурация проверки
  • Source генерирует по слотам эталоны: H-импульс, V-импульс, no-light
  • Weight element стоит сразу после Source
  • Далее PBS → два фотоканала PD/TIA
  • FRAME_SYNC используется как триггер
  • Измеряй интегралы по окну Tw из P02
5.2 Входные тесты
Используй два входных теста:
  • TEST_H: в каждом слоте подавай +1 (H)
  • TEST_V: в каждом слоте подавай -1 (V)
5.3 Измеряемые величины
Для каждого режима веса измеряй энергии по Tw:
  • E_H_out = ∫ V_H dt
  • E_V_out = ∫ V_V dt
Измеряй crosstalk как долю “не того” канала относительно “правильного”.

5.4 Критерии PASS/FAIL

Для w=0 (block):
  • E_H_out и E_V_out близки к нулю
  • утечка ниже заданного порога L0 (в процентах или дБ)
Для w=+1 (pass):
  • при TEST_H: E_H_out >> E_V_out
  • при TEST_V: E_V_out >> E_H_out
  • потери pass ниже заданного порога Lpass (в дБ или процентах)
Для w=-1 (invert):
  • при TEST_H: энергия переезжает в V-канал, E_V_out >> E_H_out
  • при TEST_V: энергия переезжает в H-канал, E_H_out >> E_V_out
  • коэффициент инверсии Finv задан числом: отношение “правильного” канала к “неправильному”
5.5 Что публиковать в тред
Публикуй по каждому элементу:
  • схема/фото включения
  • Ts, Tw, допуск калибровки
  • L0, Lpass, Finv и crosstalk
  • PASS/FAIL по трём режимам
[hr]

6) Отказные режимы
Зафиксируй типовые сбои и публикуй их как диагноз.
  • Утечка “0”
    w=0 не гасит свет. Причина: слабый гейт, паразитные обходные пути, засветка, отражения.
  • Неполная инверсия
    w=-1 не меняет H↔V полностью. Причина: неверный угол HWP, неправильное напряжение LCVR/EOM, зависимость от длины волны, эллиптическая поляризация.
  • Перекрёстная поляризация
    PBS плохо разделяет, каналы текут друг в друга. Причина: качество PBS, несоосность, деполяризация в тракте, неполяризационно-сохраняющая среда.
  • Дрейф
    Параметры L0/Lpass/Finv уплывают во времени. Причина: температура, механика, источник, питание, нагрев модулятора.
  • Межслотовые хвосты
    Переключение оставляет “хвост” и портит соседние слоты. Причина: полоса PD/TIA, фильтры, переходные процессы модулятора.
[hr]

Выходы этого поста

Таблица реализаций весов по уровням
  • v0 = W0: статические веса, ручная перенастройка, цель — доказать семантику и измерить S/noise/drift
  • v1 = W1: программируемые-медленные веса, цель — воспроизводимость и масштабирование M
  • v2 = W2: программируемые-быстрые веса, отдельный трек, цель — переключение по слотам
Процедура проверки weight element
  • TEST_H и TEST_V на вход
  • PBS→PD/TIA на выход
  • интегралы по Tw
  • метрики L0, Lpass, Finv, crosstalk
  • PASS/FAIL для block/pass/invert
DoD для P03
  • семантика w зафиксирована как block/pass/invert и не меняется
  • режимы W0/W1/W2 определены и разделены
  • процедура верификации weight element определена и даёт числа
  • отказные режимы перечислены и используются как словарь диагностики
xakepp35
Novelist
Posts: 32
Joined: 10 Feb 2016 16:59

Re: NedoAI: троичный dot/score на {-1,0,+1} (эксперимент, без FP)

Post by xakepp35 »

P04. Reduction: “popcount” физикой через фотонный светоделитель (PBS) + balance detect

Цель
Зафиксировать редукцию “много слотов → один скор S” как физическую процедуру: PBS разделяет поляризации, фотоканалы измеряют, Diff вычитает, получается аналоговый скор. Этот пост определяет путь “от света к S” и вводит калибровку симметрии.

[hr]

0) Входы и допущения
  • Кодирование трита и кадр определены в P02
  • CAL_POS и CAL_NEG присутствуют в каждом кадре
  • WeightBank либо отсутствует (проверка тракта), либо выдаёт корректные H/V/no-light после применения w
  • Окно интеграции Tw и длительность слота Ts фиксированы
[hr]

1) Редукция: PBS → каналы H/V
Зафиксируй редукцию как разделение поляризаций на два физических канала.
  • Поставь PBS на выход тракта (после WeightBank, если он есть)
  • Выведи два выхода PBS: H-канал и V-канал
  • Не смешивай каналы до измерения. Не суммируй оптику до фотодиодов.
Контракт PBS-редукции:
  • H-импульс должен выходить преимущественно в H-канал
  • V-импульс должен выходить преимущественно в V-канал
  • crosstalk измеряется и публикуется как обязательная метрика
[hr]

2) Преобразование: PD/TIA → V_H/V_V → Diff → S
Зафиксируй электрический тракт измерения.

2.1 Фотоканалы
  • Поставь фотодиод на H-канал и фотодиод на V-канал
  • Каждый фотодиод подключи к своему TIA (transimpedance amplifier)
  • Снимай два сигнала: V_H и V_V
2.2 Разностной усилитель
Построй Diff как вычитание каналов и зафиксируй формулу.
  • Сформируй S_raw = V_H − V_V
  • Введи коэффициент масштаба: S = k * (V_H − V_V)
  • k фиксируй как параметр калибровки и публикуй
Инвариант: S формируется только разностью каналов. Любые “умные” нелинейности запрещены на этапе P04.

[hr]

3) Калибровка симметрии: |CAL_POS| = |CAL_NEG| после Diff
Цель калибровки: обеспечить равную чувствительность каналов, чтобы +1 и -1 были симметричны по модулю на S.

3.1 Что калибруешь
  • относительный gain каналов H и V (усиления TIA и Diff)
  • offset (смещение нуля) разностного тракта
3.2 Процедура калибровки
  • Отключи веса или поставь WeightBank в режим pass для эталонов
  • Прогони кадр, где есть только CAL_POS и CAL_NEG, а DATA = 0
  • Измерь S на Slot 0 (CAL_POS) и на Slot 1 (CAL_NEG)
  • Подстрой gain/offset так, чтобы выполнялось: |S(CAL_POS)| ≈ |S(CAL_NEG)|
3.3 Что публиковать
  • значения S(CAL_POS) и S(CAL_NEG)
  • способ подстройки: чем менял gain, чем убирал offset
  • допуск симметрии в процентах
[hr]

4) Интеграция: по окну Tw или по кадру
Зафиксируй два допустимых режима интеграции. Выбери один режим для v0 и не смешивай в одном отчёте.

4.1 Интеграция по слоту (рекомендуется для v0)
  • Для каждого слота интегрируй V_H и V_V по окну Tw
  • Получай энергию слота: E_H, E_V
  • Считай вклад слота в скор: dS = k*(E_H − E_V)
  • Суммируй по кадру: S_frame = Σ dS по слотам данных или по всем слотам


4.2 Интеграция по кадру (упрощённая)
  • Интегрируй V_H и V_V по одному окну на весь кадр
  • Считай S_frame = k*(∫V_H dt − ∫V_V dt)
  • Используй этот режим только если слотовая интеграция недоступна


Инвариант: интеграцию всегда привязывай к FRAME_SYNC и публикуй Ts/Tw.

[hr]

5) Требования к полосе: отсутствие межслотовых хвостов
Скорость системы ограничивает полоса PD/TIA/Diff. Хвосты убивают независимость слотов.

5.1 Проверка хвостов
  • Сгенерируй тест: один импульс +1 в одном слоте, остальные слоты = 0
  • Сними V_H, V_V на осциллографе
  • Проверь, что сигнал возвращается к базовой линии до конца Ts


5.2 Контракт полосы
  • межслотовая утечка энергии должна быть ниже заданного порога (задай числом или дБ)
  • при росте Fs первым ломается именно этот контракт, фиксируй точку поломки


[hr]

6) Параметры S: диапазон, шум, дрейф, насыщение
Зафиксируй набор обязательных характеристик выхода S и процедуры их измерения.

6.1 Диапазон
  • Измерь S на тестах ALL_POS и ALL_NEG при фиксированном N
  • Зафиксируй S_max и S_min


6.2 Шум
  • Прогони тест ZERO: DATA=0
  • Измерь распределение S на 1000+ кадров
  • Зафиксируй noise_S как RMS или стандартное отклонение


6.3 Дрейф
  • Прогони один и тот же кадр (например ALT или ALL_POS) 10–30 минут
  • Запиши S во времени
  • Зафиксируй drift_S как изменение среднего S за интервал


6.4 Насыщение
  • Проверь, что V_H, V_V и S не упираются в питание/клиппинг при ALL_POS/ALL_NEG
  • Если есть клиппинг, зафиксируй при каком входе и на каком узле тракта


[hr]

Выходы этого постаa
  • Понятный путь “от света к S”: PBS → PD/TIA → Diff → S
  • Процедура калибровки симметрии по CAL_POS/CAL_NEG
  • Контракт интеграции (по слоту или по кадру)
  • Контракт полосы (без межслотовых хвостов)
  • Набор обязательных метрик S: диапазон, шум, дрейф, насыщение


DoD для P04
  • S определяется формулой S = k*(V_H − V_V) и измеряется после Diff
  • калибровка симметрии выполняется и подтверждается: |S(CAL_POS)|≈|S(CAL_NEG)|
  • режим интеграции выбран и зафиксирован (слот или кадр)
  • межслотовые хвосты проверены и задокументированы
  • диапазон, шум, дрейф и насыщение S измерены или запланированы процедурой
User avatar
Shaos
Admin
Posts: 24944
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: NedoAI: троичный dot/score на {-1,0,+1} (эксперимент, без FP)

Post by Shaos »

[hr] тут не работает

а в BB-тэг spoiler надо прописывать заголовок типа

Code: Select all

[spoiler=заголовок]
...
[/spoiler]