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

Lowering

TypeNN이 그래프 연산을 TypeShade 커널 프로그램에 연결합니다.

Tensor graph → kernel program
03

실행

TypeShade가 선택된 실행 계층에서 그래프에 필요한 작업을 디스패치합니다.

CPU · WebGPU · WebGL2*

* WebGL2는 제한된 compute lowering 경로입니다. Frame에 디스패치를 모아도 커널이 퓨전되는 것은 아닙니다.

TypeNN 살펴보기

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

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

현재 구현 상태

컴파일러 우선 구조 위에서 옵티마이저를 개선하고 있습니다.

GPU 학습에서는 기울기와 Adam 상태를 Resident로 유지하고 TypeShade 커널로 파라미터를 갱신합니다. Tensor 그래프 연산별 디스패치는 유지되며 그래프 퓨전과 타일 MatMul은 아직 구현되지 않았습니다.

구현 상태 보기