Mistral의 Voxtral Mini 4B Realtime 모델을 Rust로 구현해 브라우저에서 실행

7 hours ago 2

  • 스트리밍 음성 인식을 네이티브 환경과 브라우저 모두에서 실행할 수 있는 Rust 기반 구현체로, Burn ML 프레임워크를 사용
  • 모델은 Mistral의 Voxtral Mini 4B Realtime을 기반으로 하며, WASM + WebGPU를 통해 브라우저 탭에서 완전한 클라이언트 측 추론 수행
  • Q4 GGUF 양자화 모델(2.5GB) 은 브라우저에서 실행 가능하며, SafeTensors 기반 F32 모델(9GB) 은 네이티브 환경에서 동작
  • 브라우저 제약(2GB 할당, 4GB 주소 공간, GPU 읽기 제한 등)을 해결하기 위해 샤딩, 2단계 로딩, 비동기 텐서 처리 등의 기술 적용
  • Apache-2.0 라이선스로 공개되어 있으며, HuggingFace Spaces에서 실시간 데모를 체험할 수 있음

Voxtral Mini 4B Realtime (Rust) 개요

  • Mistral의 Voxtral Mini 4B Realtime 모델Rust와 Burn ML 프레임워크로 완전 구현
    • 스트리밍 음성 인식을 로컬 및 브라우저 환경에서 실행 가능
    • 브라우저 버전은 WASM(WebAssembly)WebGPU를 활용해 클라이언트 측에서 동작
  • Q4 GGUF 양자화 모델(약 2.5GB) 은 브라우저에서 실행되며, F32 SafeTensors 모델(약 9GB) 은 네이티브 환경에서 사용
  • HuggingFace Spaces에서 실시간 데모 제공

아키텍처

  • 입력 오디오(16kHz mono)는 Mel 스펙트로그램으로 변환된 후, 인코더(32층)디코더(26층) 를 거쳐 텍스트로 변환
  • 주요 처리 단계
    • Mel 스펙트로그램 → 인코더(32층, 1280차원) → Conv 4x 다운샘플 → 어댑터(3072차원) → 디코더(GQA 32Q/8KV)
  • 두 가지 추론 경로 제공
    • F32(native): SafeTensors 기반, Burn 텐서 연산 사용
    • Q4 GGUF(native + browser): GGUF Q4_0 양자화, 커스텀 WGSL 셰이더 사용

브라우저 실행을 위한 기술적 해결

  • 브라우저 내 4B 모델 실행을 위해 5가지 제약 조건을 해결
    1. 2GB 할당 제한 → ShardedCursor로 다중 버퍼 읽기
    2. 4GB 주소 공간 제한 → 2단계 로딩(파싱 후 리더 해제, 이후 최종화)
    3. 1.5GiB 임베딩 테이블 → GPU Q4 임베딩 + CPU 행 조회
    4. GPU 동기 읽기 금지 → into_data_async().await 사용
    5. 256 워크그룹 제한 → cubecl-wgpu 패치로 커널 크기 제한

Q4 패딩 보정

  • 기본 mistral-common은 오디오를 32개의 무음 토큰으로 패딩하지만, 이는 디코더의 38개 프리픽스 중 절반만 커버
  • Q4_0 양자화 모델은 이로 인해 음성이 바로 시작되는 입력에서 오류 발생
  • 이를 해결하기 위해 패딩을 76 토큰(=38 디코더 토큰) 으로 확장해 전체 프리픽스를 무음으로 채움

빌드 및 테스트

  • 빌드 옵션
    • 기본: cargo build --release (wgpu + native-tokenizer)
    • 브라우저용: wasm-pack build --target web --features wasm
  • 테스트
    • GPU 기반 단위 및 통합 테스트 지원
    • E2E 브라우저 테스트는 Playwright + 실제 GPU 환경에서 수행
    • CI에서는 GPU가 없어 관련 테스트는 생략

모델 준비 및 샤딩

  • 브라우저의 ArrayBuffer 제한(512MB 이하)을 위해 GGUF 파일을 샤드 단위로 분할 split -b 512m models/voxtral-q4.gguf models/voxtral-q4-shards/shard-
  • 개발 서버와 E2E 테스트는 자동으로 샤드를 탐색

프로젝트 구조

  • src/audio: Mel 스펙트로그램, 리샘플링, 패딩
  • src/models: F32 모델(인코더, 디코더, 어텐션 등)
  • src/gguf: Q4 GGUF 로더, 텐서, WGSL 셰이더
  • src/web: WASM 바인딩 및 비동기 디코드 루프
  • web/: 브라우저 데모(UI, worker.js 등)
  • tests/: 통합 및 브라우저 E2E 테스트

라이선스 및 리소스

  • Apache-2.0 라이선스
  • 주요 토픽: Rust, WASM, Burn, ASR, Mistral, Voxtral Mini Realtime
  • HuggingFace Spaces에서 브라우저 데모 제공: TrevorJS/voxtral-mini-realtime

Read Entire Article