WebGL과 WebGPU로 그래픽, 스프라이트, 텍스트를 그리는 빠른 웹용 2D 렌더링 라이브러리입니다.
chenglou/handwired
일반 JavaScript의 제어 흐름을 손으로 작성한 가중치의 미분 가능한 행렬 곱셈 네트워크로 컴파일하는 연구 프로젝트입니다.
- 스타
- 1,819
- 포크
- 151
- 열린 이슈
- 9
- 마지막 커밋
- 3일 전
어떤 프로젝트인가요?
Handwired는 if-else 분기, 루프, 상태를 포함한 일반 JavaScript 프로그램을 부동소수점 수에 대한 행렬 곱셈과 ReLU만으로 구성된 신경망으로 변환합니다. 예를 들어 양쪽 분기를 모두 계산한 다음 ReLU로 만든 지시자를 사용해 한쪽을 선택하는 방식으로 조건문을 산술 연산으로 바꾸므로, 결과 네트워크는 원래 프로그램의 출력을 정확히 재현합니다.
가중치를 학습하는 대신 직접 작성하므로 학습이 필요 없고, 프로그램 전체가 미분 가능한 상태로 유지됩니다. 결합된 연산은 일반 JavaScript나 WebGPU에서 실행할 수 있어, 이러한 최소 연산에 기존 GPU 최적화 기법을 적용할 수 있습니다.
이 프로젝트는 가중치를 학습 가능하게 풀어 학습하거나, 고정된 프로그램을 범용 신경망에 연결해 엔드투엔드 학습을 수행하거나, 단일 스레드 방식의 JavaScript 코드를 GPU 수준의 병렬 처리로 실행하는 등의 활용 방안을 살펴봅니다. 데모에는 10만 개 문서를 대상으로 하는 JSON 검색이 포함됩니다. 저장소는 Bun을 사용하도록 구성되어 있으며, 데모는 온라인에서도 이용할 수 있습니다.
핵심 기능
- 01if-else, 루프, 상태를 행렬 곱셈과 ReLU로 변환
- 02가중치를 직접 작성하므로 학습이 필요 없음
- 03프로그램 전체를 미분 가능한 상태로 유지
- 04일반 JavaScript 또는 WebGPU에서 실행
- 05라이브 데모와 10만 개 문서 대상 JSON 검색 예제 제공
활용 사례
- 프로그램을 신경망으로 표현하는 방법 연구
- 고정된 프로그램 로직을 신경망 안에서 학습하는 방식 실험
- 일반 JavaScript 코드의 GPU 병렬 실행 방식 탐구
빠른 시작
- 1
저장소를 클론합니다
git clone - 2
종속성을 설치합니다
bun install - 3
데모를 로컬에서 실행합니다
bun start
사용 전 알아둘 점
- 개념을 시연하기 위한 연구 프로젝트이며, 프로덕션용 라이브러리가 아닙니다.
- 데모를 실행하려면 Bun 런타임이 필요하며, 선택 사항이라고 명시되어 있지 않습니다.
토픽
자주 묻는 질문
- handwired은(는) 무엇인가요?
- 일반 JavaScript의 제어 흐름을 손으로 작성한 가중치의 미분 가능한 행렬 곱셈 네트워크로 컴파일하는 연구 프로젝트입니다. Handwired는 if-else 분기, 루프, 상태를 포함한 일반 JavaScript 프로그램을 부동소수점 수에 대한 행렬 곱셈과 ReLU만으로 구성된 신경망으로 변환합니다. 예를 들어 양쪽 분기를 모두 계산한 다음 ReLU로 만든 지시자를 사용해 한쪽을 선택하는 방식으로 조건문을 산술 연산으로 바꾸므로, 결과 네트워크는 원래 프로그램의 출력을 정확히 재현합니다.
- handwired은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- handwired은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- handwired은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. handwired의 마지막 커밋은 2026년 10월 17일입니다.
- handwired은(는) 어디에 사용할 수 있나요?
- 프로그램을 신경망으로 표현하는 방법 연구 고정된 프로그램 로직을 신경망 안에서 학습하는 방식 실험 일반 JavaScript 코드의 GPU 병렬 실행 방식 탐구
- handwired는 어떻게 설치하나요?
- 저장소를 클론합니다: git clone 종속성을 설치합니다: bun install 데모를 로컬에서 실행합니다: bun start
- handwired은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/chenglou/handwired
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
웹페이지에 GUI 에이전트를 삽입해 사용자가 자연어로 인터페이스를 제어할 수 있게 하는 JavaScript 라이브러리입니다.
업로드 없이 WebGPU 또는 WebAssembly로 브라우저에서만 실행되는 오픈소스 배경 제거 도구입니다.
런타임, 번들러, 테스트 러너, 패키지 관리자를 단일 실행 파일에 담은 빠른 올인원 JavaScript 및 TypeScript 툴킷입니다.
Android, iOS, 웹에서 실행되는 범용 네이티브 앱을 React로 만드는 오픈소스 프레임워크입니다.
CLI, JavaScript 및 Go API를 제공하는 초고속 JavaScript·TypeScript·JSX·CSS 번들러