TypeScript 신경망 프레임워크

그래프는 TypeScript로.
실행은 컴파일러로.

TypeNN은 Tensor와 Module 연산을 지연 그래프로 구성합니다. TypeShade는 커널을 컴파일하고 CPU와 지원되는 GPU 백엔드에서 실행합니다.

프리릴리스 · 현재 사용법은 저장소 소스와 예제를 기준으로 확인할 수 있습니다.

Tensor APIexample.ts
import * as nn from "typenn";

const device = await nn.device();
const input = device.tensor([1, 2, 3, 4], { shape: [2, 2] });
const weight = device.tensor([5, 6, 7, 8], { shape: [2, 2] });
const output = input.matmul(weight).relu();

console.log(await output.data());
// Float32Array [19, 22, 43, 50]
await output.disposeGraph();
await device.dispose();
Float32Array[19, 22, 43, 50]예시 출력

TypeScript에서 실행까지

세 계층이 실행 경로를 나눠 맡습니다.

실행 방식 보기
01

정의

Tensor 호출이 Shape와 연산을 표현합니다. TypeNN은 그래프 노드를 기록합니다.

tensor.matmul(weight).relu()
02

연결

노드마다 TypeShade 커널 함수가 있고, TypeNN이 Resident 배열에 대해 호출합니다.

Tensor graph → kernel functions
03

실행

fuse 범위 하나가 선택된 실행 계층에서 필요한 커널을 실행합니다.

CPU · WebGPU · WebGL2*

* WebGL2와 CPU 계층은 같은 커널 함수를 따로 실행합니다. elementwise 연쇄를 디스패치 하나로 퓨전하는 것은 WebGPU뿐입니다.

TypeNN 살펴보기

연산을 직접 실행하고 시스템의 내부를 따라가세요.

브라우저에서 행렬 연산을 실행한 뒤 실행 그래프, 자동 미분, 모델 학습 가이드를 확인하세요.

현재 구현 상태

모든 연산이 커널 함수입니다. 학습은 아직 최적화 전입니다.

data() 호출마다 TypeShade fuse 범위 하나가 실행되고, device.lastReport가 그 계획을 보여 줍니다. SGD와 Adam은 파라미터를 장치에서 갱신합니다. 타일 MatMul은 앞으로의 과제입니다.

구현 상태 보기