Repolode
chenglou

chenglou/handwired

Исследовательский проект, который компилирует обычные конструкции управления JavaScript в дифференцируемую сеть матричных умножений с весами, заданными вручную.

Звёзды
1,773
Форки
146
Открытые issues
9
Последний коммит
3 дня назад

Что это?

Handwired преобразует обычные программы на JavaScript с ветвлениями if-else, циклами и состоянием в нейросеть, состоящую только из матричных умножений и ReLU над числами с плавающей точкой. Условия переписываются в виде арифметических операций: например, вычисляются обе ветви, а затем выбирается нужная с помощью индикатора, полученного на основе ReLU. В результате сеть в точности воспроизводит вывод исходной программы.

Поскольку веса задаются вручную, а не обучаются, обучение не требуется, и вся программа остаётся дифференцируемой. Вычисления можно выполнять в обычном JavaScript или на WebGPU — это позволяет применять к этим простым операциям уже существующие методы оптимизации для GPU.

Проект исследует такие варианты применения, как снятие фиксации весов для обучения, подключение программы с фиксированными весами к универсальной нейросети для сквозного обучения и запуск кода на JavaScript в стиле однопоточных программ с параллелизмом уровня GPU. Среди демонстраций — поиск по JSON с охватом 100k документов. Репозиторий настроен для работы с Bun, а демонстрации также доступны онлайн.

Ключевые возможности

  • 01Преобразует if-else, циклы и состояние в матричные умножения и ReLU
  • 02Не требует обучения, поскольку веса задаются вручную
  • 03Сохраняет дифференцируемость всей программы
  • 04Работает в обычном JavaScript или на WebGPU
  • 05Включает интерактивные демонстрации и пример поиска по JSON с охватом 100k документов

Сценарии использования

  • Изучение способов представления программ в виде нейросетей
  • Эксперименты с обучением нейросети при использовании зафиксированной логики программы
  • Исследование параллельного выполнения обычного кода JavaScript на GPU

Быстрый старт

  1. 1

    Клонируйте репозиторий

    git clone
  2. 2

    Установите зависимости

    bun install
  3. 3

    Запустите демонстрации локально

    bun start

Что важно знать

  • Это исследовательский проект, предназначенный для демонстрации концепции, а не библиотека для использования в продакшене.
  • Для запуска демонстраций требуется среда выполнения Bun, и она не указана как необязательная.

Темы

Частые вопросы

Что такое handwired?
Исследовательский проект, который компилирует обычные конструкции управления JavaScript в дифференцируемую сеть матричных умножений с весами, заданными вручную. Handwired преобразует обычные программы на JavaScript с ветвлениями if-else, циклами и состоянием в нейросеть, состоящую только из матричных умножений и ReLU над числами с плавающей точкой. Условия переписываются в виде арифметических операций: например, вычисляются обе ветви, а затем выбирается нужная с помощью индикатора, полученного на основе ReLU. В результате сеть в точности воспроизводит вывод исходной программы.
handwired можно использовать бесплатно? Какая у него лицензия?
handwired распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
handwired всё ещё поддерживается?
Активно поддерживается. Последний коммит в handwired — 17 окт. 2026 г..
Для чего можно использовать handwired?
Изучение способов представления программ в виде нейросетей Эксперименты с обучением нейросети при использовании зафиксированной логики программы Исследование параллельного выполнения обычного кода JavaScript на GPU
Как установить handwired?
Клонируйте репозиторий: git clone Установите зависимости: bun install Запустите демонстрации локально: bun start
Где скачать handwired?
Исходный код и инструкции по установке — на GitHub: https://github.com/chenglou/handwired

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты