handwired README

The project's README from github.com/chenglou/handwired. As one markdown file: README.md.

Handwired

Turn your regular JavaScript code into a neural net; no training, exact, yet also fully differentiable!

How It Works

A program's made of if-else, loops, and state. Handwired transforms them into matrix multiplication + reglu over floats. For example:

const a = 5
const result = (a > 4) ? 10 : 12

The above can be expressed as basic arithmetic:

const a = 5
// Math.max(0, x) is ReLU. For an integer a, above4 is 1 if a > 4, and 0 otherwise
const above4 = Math.max(0, a - 4) - Math.max(0, a - 5)
// Both branches compute, and above4 picks one
const result = above4 * 10 + (1 - above4) * 12

You can calculate that by hand and see that both arrive at the same result.

We then collect the + and * and relu into a giant matmul, and either run it on JS or WebGPU, for fun.

Because we basically only use these 2 primitives:

This unlocks lots of funny use-cases, like:

Play With It

Try the demos live: https://chenglou.me/handwired/

git clone && bun install, then bun start to run them locally. Check docs/, src/ and template/ to get started! (lab/ is a bunch of old experiments you can check or ignore)

HandwiredOS

handwired (chenglou/handwired)

Searching Database…

Что это такое?Handwired — это исследовательский инструмент, который превращает обычный JavaScript-код (условия if-else, циклы, состояние) в эквивалентную нейросеть, состоящую только из матричных умножений и ReLU, благодаря чему та же логика работает как дифференцируемая программа, дружественная к GPU, вместо обычного однопоточного скрипта.
Это готовая библиотека или скорее экспериментальная техника?Это скорее экспериментальная техника преобразования с демо: логика вашей программы вручную компилируется в веса из matmul+ReLU (для корректности обучение не требуется), а в репозитории лежит папка lab/ со старыми экспериментами, а также docs/, src/ и template/ как основа для дальнейшей работы.
Как запустить демо?Склонируйте репозиторий, выполните `bun install`, затем `bun start`, чтобы запустить живые демо локально, и загляните в docs/, src/ и template/, чтобы начать.
Нужно ли сначала установить Bun?Да, проект запускается через Bun (bun install, bun start), а не через обычные npm или node.
Насколько это стабильно — можно ли брать в реальный проект?Нет, это скорее исследовательская площадка: в папке lab/ явно лежат старые эксперименты, которые можно «посмотреть или проигнорировать», то есть проект носит исследовательский характер, а не является отполированной стабильной библиотекой.
Зачем превращать код в нейросеть, если веса не обучаются?Потому что, когда программа сводится к matmul + ReLU, вы получаете полностью дифференцируемую версию обычной JS-логики: её потом можно «разморозить» и дообучить, подключить к другой нейросети для обучения сквозным образом (end-to-end) или запускать с параллелизмом уровня GPU, хотя изначально код был написан однопоточным.
Это действительно работает на GPU?Да: после сбора всех сложений и ReLU в одну большую операцию matmul результат можно выполнять либо на чистом JS, либо на WebGPU для экспериментов.
Что за демо с поиском по JSON?Это одно из включённых демо, показывающее выигрыш от параллелизма GPU: программа, написанная в обычном однопоточном JS-стиле, ищет по 100 тысячам JSON-документов за миллисекунды после преобразования в matmul-форму.
Можно ли скормить ему свой JS-код?В репозитории есть папка template/, задуманная как отправная точка для подключения собственного кода, а также docs/ и src/ — документация и код самого преобразования.
Creator
chenglou
Size
15.1 MB
Stars
1.7K
Updated
CommitOct 17
Age
3d
Commits · 90 Days