Transformers.js v4 릴리즈 노트 / 새로운 내용

Hugging Face는 Transformers.js v4를 출시했으며, 완전히 새롭게 작성된 C++ WebGPU 런타임을 도입하여 브라우저, Node, Bun, Deno 전반에서 하드웨어 가속 AI 모델을 로컬에서 실행할 수 있게 했습니다. 이번 업데이트는 성능을 크게 향상시키고, 모델 아키텍처 지원을 확대하며, 라이브러리를 모듈화하여 프로덕션 확장성을 개선합니다.

WebGPU 런타임 및 성능 향상

Transformers.js v4는 ONNX Runtime 팀과 협업하여 C++로 새롭게 작성된 WebGPU 런타임을 채택했습니다. 이 런타임은 동일한 코드베이스가 데스크톱 애플리케이션 및 Node, Bun, Deno와 같은 서버 사이드 런타임을 포함한 다양한 JavaScript 환경에서 작동하도록 합니다.

리소스가 제한된 환경에서 성능을 극대화하기 위해, Hugging Face는 특수화된 ONNX Runtime Contrib Operators를 사용하여 모델을 연산 단위별로 재구현했습니다. 주요 최적화 사항은 다음과 같습니다:

  • Specialized Operators: 대형 언어 모델을 위한 com.microsoft.GroupQueryAttention, com.microsoft.MatMulNBits, com.microsoft.QMoE 구현.
  • BERT Speedups: com.microsoft.MultiHeadAttention 연산자를 채택함으로써 BERT 기반 임베딩 모델에서 약 4배의 속도 향상이 이루어졌습니다.

확장된 모델 지원 및 아키텍처

새로운 내보내기 전략과 확장된 ONNX Runtime 연산자 지원을 통해 Transformers.js v4는 다음을 포함한 더 다양한 모델 및 고급 아키텍처 패턴을 지원할 수 있게 되었습니다:

  • Supported Architectures: Mamba(상태-공간 모델), Multi-head Latent Attention(MLA), Mixture of Experts(MoE).
  • New Models: GPT-OSS, Chatterbox, GraniteMoeHybrid, LFM2-MoE, HunYuanDenseV1, Apertus, Olmo3, FalconH1, Youtu-LLM 지원.
  • Large Model Capability: 라이브러리는 이제 80억 파라미터를 초과하는 모델을 지원합니다; 예를 들어, GPT-OSS 20B(q4f16)는 M4 Pro Max에서 초당 약 60 토큰을 달성했습니다.

라이브러리 인프라 및 빌드 시스템

Transformers.js v4는 유지보수성과 개발자 경험을 개선하기 위해 중요한 구조적 개편을 진행했습니다:

  • Build System Migration: Webpack에서 esbuild로 전환하면서 빌드 시간이 2초에서 200밀리초(10배 향상)로 감소했고, 번들 크기가 평균 10% 줄어들었습니다. transformers.web.js 기본 내보내기는 이제 53% 작아졌습니다.
  • Monorepo Transition: 프로젝트는 이제 pnpm workspaces를 사용하여 @huggingface/transformers 코어에 의존하는 더 작은 서브 패키지를 제공할 수 있게 되었습니다.
  • Code Refactoring: models.js 파일을 8,000줄짜리 하나의 파일에서 더 작고 집중된 모듈들로 분할하여 가독성을 높이고 새로운 모델 추가 과정을 개선했습니다.
  • Examples Repository: 예제 프로젝트는 전용 examples repository로 이동되었습니다.

새로운 프로덕션 준비 기능

견고한 애플리케이션 배포를 지원하기 위해 여러 새로운 API와 설정이 추가되었습니다:

ModelRegistry API

ModelRegistry는 로드하기 전에 파이프라인 자산에 대한 명시적인 가시성을 제공합니다. 주요 기능은 다음과 같습니다:

  • get_pipeline_files를 통해 필요한 파일을 나열합니다.
  • get_file_metadata를 사용해 파일 메타데이터를 검사하고 다운로드 크기를 계산합니다.
  • is_pipeline_cached로 캐시 상태를 확인하고 clear_pipeline_cache로 아티팩트를 정리합니다.
  • get_available_dtypes로 사용 가능한 정밀도 유형을 조회합니다.
  • 향상된 progress_callback은 이제 전체 로딩 진행 상황을 나타내는 progress_total 이벤트를 포함합니다.

환경 및 로깅 제어

  • WASM Caching: env.useWasmCache는 오프라인 기능을 위해 WASM 런타임 파일을 캐시할 수 있게 합니다.
  • Custom Fetch: env.fetch는 인증된 모델 접근이나 커스텀 헤더를 위한 사용자 정의 fetch 구현을 가능하게 합니다.
  • Logging: ONNX Runtime WebGPU 경고는 기본적으로 숨겨져 있으며, 개발자는 이제 env.logLevel(예: LogLevel.DEBUG, LogLevel.INFO, LogLevel.WARNING, LogLevel.ERROR, LogLevel.NONE)을 사용해 명시적인 상세 수준을 설정할 수 있습니다.

독립형 Tokenizers.js 라이브러리

Hugging Face는 토크나이징 로직을 별도의 경량 라이브러리인 @huggingface/tokenizers로 분리했습니다. 이 독립형 라이브러리는 8.8kB(압축)이며, 의존성이 없고, 완전한 타입 안전성을 제공하며, 브라우저와 서버 사이드 런타임 모두에서 작동합니다.

Sources