설명
Shumai는 JavaScript 및 TypeScript를 위해 설계된 미분 가능 텐서 라이브러리로, Bun의 속도와 Flashlight의 강력한 기능을 활용합니다. JavaScript 생태계 내 개발자들에게 데이터 조작, 모델 학습 및 고급 추론 로직을 더욱 접근 가능하고 효율적으로 만드는 것을 목표로 합니다. 네이티브 타입 배열과 Bun의 Just-In-Time(JIT) 컴파일러를 활용하여 Shumai는 데이터셋 생성부터 소규모 머신러닝 모델 학습에 이르기까지 다양한 작업에 대해 성능이 뛰어난 솔루션을 제공합니다.
이 라이브러리는 핵심 텐서 연산, 기울기 계산을 위한 자동 미분, JavaScript 네이티브 배열과의 원활한 변환 기능을 제공합니다. 이를 통해 개발자는 JavaScript에서 직접 데이터를 작업하고, GPU 호환 배열을 위해 준비한 다음, 환경을 벗어나지 않고 모델을 학습시킬 수 있습니다. Shumai의 아키텍처는 오버헤드를 최소화하도록 구축되어, 특히 소규모 모델의 경우 학습 및 추론 중에 JavaScript가 방해가 되지 않도록 합니다.
주요 기능에는 표준 배열 유틸리티, 텐서 생성, 수학 연산 및 기울기 추적이 포함됩니다. 사용자는 텐서에 대한 기울기 계산을 활성화하고, 연산을 수행한 다음, 계산된 기울기에 액세스할 수 있습니다. 이 라이브러리는 또한 메모리 관리 튜닝 기능을 제공하여 사용자가 하드웨어 기능에 따라 성능을 최적화하기 위해 가비지 컬렉션 매개변수를 조정할 수 있도록 합니다. 또한 Shumai에는 콘솔 또는 HTTP를 통해 연산 성능을 기록할 수 있는 통계 수집 시스템이 포함되어 있으며, 범위 지정 프로파일링 및 스택 추적 수집 옵션도 제공됩니다.
Shumai는 JavaScript 생태계 내에서 이미 작업 중이며 다른 언어나 프레임워크와 관련된 가파른 학습 곡선 없이 머신러닝 기능을 통합하려는 소프트웨어 엔지니어 및 연구원에게 특히 유용합니다. 성능 벤치마크는 TensorFlow.js와 같은 라이브러리에 비해 다양한 연산에서 상당한 이점을 보여주며, 특히 Apple M1 Pro 및 Nvidia GPU에서 그렇습니다. 이 프로젝트는 실험적인 상태이며, 기능 및 안정성 향상을 위한 기여를 환영합니다.
Shumai의 핵심 기능
JavaScript 및 TypeScript용 고속 미분 가능 텐서 라이브러리
고성능을 위해 Bun 및 Flashlight로 구축됨
기울기 계산을 위한 자동 미분 지원
텐서와 JavaScript 네이티브 배열 간의 원활한 변환
소규모 모델 학습 및 고급 추론 로직에 최적화됨
네이티브 타입 배열 및 JIT 컴파일 활용
성능 최적화를 위한 메모리 사용량 튜닝
연산 프로파일링을 위한 내장 통계 수집
격리된 프로파일링을 위한 범위 지정 통계 수집
활발한 개발 중인 실험적 소프트웨어
ArrayFire 백엔드를 통한 GPU 컴퓨팅 지원 (Linux의 CUDA, macOS의 CPU)
콘솔 및 HTTP 옵션을 통한 확장 가능한 통계 로깅
Shumai 시작하기
Bun 및 ArrayFire 설치: macOS 및 Linux에 대한 플랫폼별 지침을 따르세요.
Shumai 설치: `bun install @shumai/shumai`를 실행하세요.
Shumai 가져오기: TypeScript/JavaScript 코드에서 `import * as sm from '@shumai/shumai'`를 사용하세요.
텐서 생성: `sm.randn()` 또는 `sm.tensor()`와 같은 함수를 사용하여 텐서를 생성하세요.
연산 수행: `matmul()`, `mul()`, `sum()`과 같은 수학 연산을 적용하세요.
기울기 활성화: 기울기 추적이 필요한 텐서에 대해 `tensor.requires_grad = true`를 설정하세요.
기울기 계산: 손실 텐서에서 `.backward()`를 호출하여 기울기를 채우세요.
메모리 튜닝: 성능을 위해 `util.memoryOptions()`를 사용하여 메모리 옵션을 조정하세요.
Shumai의 사용 사례
- 데이터셋 생성
- 모델 학습
- 추론 로직
- 데이터 전처리
- 연구 프로토타이핑
- 애플리케이션 개발








