가이드
실행 모델
TypeNN은 Tensor 그래프와 의미를 소유합니다. TypeShade는 커널 컴파일과 프로그램 실행을 맡습니다.
Tensor 호출은 지연 그래프를 만듭니다
matmul(), add(), relu() 같은 연산은 값을 계산하지 않습니다. 각 연산은 TypeShade 커널 함수, 입력 Tensor, 값으로 넘기는 스칼라, 기울기 규칙을 담은 노드를 기록합니다.
const input = device.tensor(values, { shape: [batch, features] });
const logits = input.matmul(weights).add(bias);
const output = logits.relu();
// 여기에서 그래프 결과를 구체화합니다.
const result = await output.data();data() 호출마다 fuse 범위 하나가 실행됩니다
data()를 호출하면 TypeNN은 Tensor 아래에서 아직 배열이 없는 노드를 모아 노드마다 Resident 배열을 만들고 잎 노드를 업로드합니다. 그다음 노드의 커널 함수를 그래프 순서로 호출하는 본문으로 TypeShade fuse를 호출하고, Tensor를 한 번만 읽어옵니다.
Shape 검사 · 그래프 노드 · 자동 미분 · 커널 함수
fuse 범위 계획 · 디스패치 · Backend 계층 · Runtime 자원
백엔드와 제약
TypeShade Call-layer 설정이 프로세스 전역이어서 JavaScript 컨텍스트마다 TypeNN Device 하나만 활성화할 수 있습니다.
계획은 device.lastReport에서 확인합니다
TypeShade의 퓨전 규칙이 성립하면 컴파일러가 연속한 커널 호출을 디스패치 하나에 담습니다. WebGPU에서 a.add(b).mul(c).relu()는 디스패치 하나로 실행됩니다. 리덕션, 다른 인덱스 읽기, 저장소 버퍼 한도 초과가 있으면 새 디스패치가 시작됩니다. 읽은 뒤 device.lastReport에서 계층, 디스패치, 제출, 호출 그룹을 볼 수 있습니다. CPU 계층의 보고서에는 디스패치가 없고 호출마다 그룹이 하나씩 있습니다.