MADLAD-400 번역 (온디바이스, 400+ 언어)

MADLAD-400-3B-MT는 400+ 언어 간 다대다 기계 번역을 위해 학습된 Google의 T5 v1.1 인코더-디코더 모델입니다. Apache 2.0. Soniqo 빌드는 양자화된 MLX safetensors(INT4 / INT8)로 Apple Silicon에서 실행되며, 클라우드 호출이 없습니다. ASR 뒤의 라이브 자막, TTS 전 처리의 다국어 음성 에이전트, 또는 단독으로 사용할 수 있습니다.

ASR 파이프 연결

audio transcribe meeting.wav | audio translate --to es — 동일한 바이너리이며, 필수 입력은 대상 언어뿐입니다. 소스 언어는 인코더가 자동 감지하며, 어떤 언어로 번역할지만 지정합니다.

빠른 시작

import MADLADTranslation

let translator = try await MADLADTranslator.fromPretrained()

let es = try translator.translate("Hello, how are you?", to: "es")
// → "Hola, ¿cómo estás?"

let zh = try translator.translate("Where is the library?", to: "zh")
// → "图书馆在哪里?"

for try await piece in translator.translateStream("Good morning", to: "fr") {
    print(piece, terminator: "")
}

CLI

audio translate "Hello, how are you?" --to es
audio translate "Bonjour" --to en --quantization int8
audio translate "Hello world" --to es --stream
audio translate --to fr --json    # JSON with timing metrics

# Pipe from ASR
audio transcribe meeting.wav | audio translate --to es

아키텍처

T5 v1.1 인코더-디코더, 약 30억 파라미터. 인코더 32레이어 + 디코더 32레이어, d_model = 1024, d_kv = 128, num_heads = 16, 게이트 GeLU FFN(d_ff = 8192). 위치 정보는 위치 임베딩 대신 학습된 상대 위치 편향(32 버킷, 최대 거리 128)으로 들어옵니다 — 인코더에서는 양방향, 디코더에서는 단방향(과거만). 편향 테이블은 각 스택의 첫 레이어에만 존재하며 이후 레이어로 전파됩니다. 어텐션 점수는 1/√d_k로 스케일링되지 않습니다 — T5 특유의 특성입니다.

크로스 어텐션 K/V는 인코더 출력에서 한 번 계산되어 모든 디코드 단계에서 재사용됩니다(DecoderLayerCache.crossAttn에 캐시). 디코더 자기 어텐션 KV 캐시는 생성 토큰마다 늘어납니다. 번역에는 그리디 디코딩이 기본이며 권장됩니다; temperature / top-k / top-p 샘플링은 의역용으로 노출되어 있습니다.

모델 변형

변형양자화크기연산HuggingFace
MADLAD-400-3B-MTINT4~1.7 GBMetal GPU (MLX)aufklarer/MADLAD400-3B-MT-MLX (int4/)
MADLAD-400-3B-MTINT8~3.1 GBMetal GPU (MLX)aufklarer/MADLAD400-3B-MT-MLX (int8/)

대상 언어

대상은 MADLAD 어휘의 언어 코드(보통 ISO 639-1 — es, fr, zh, ja, 그리고 400+ 지역 변형, 예: 광둥어 yue, 민난어 min_nan)로 지정합니다. 토크나이저는 <2{lang}>을 직접 어휘 조회로 해석하며, 인식되지 않는 코드는 MADLADTranslationError.unsupportedLanguage를 던집니다. 소스 언어는 입력 텍스트로부터 자동 감지됩니다 — 지정하지 않습니다.

샘플링 설정

let sampling = TranslationSamplingConfig(
    temperature: 0.0,
    topK: 0,
    topP: 1.0,
    maxTokens: 256,
    repetitionPenalty: 1.0
)
let result = try translator.translate("Long-form text…", to: "es", sampling: sampling)
파라미터기본값설명
temperature0.00 = 그리디. 의역 변형은 0.6–0.8.
topK0Top-K 컷오프 (0 = 비활성).
topP1.0Nucleus 샘플링 컷오프.
maxTokens256출력 길이 상한.
repetitionPenalty1.0>1 이면 최근 생성 토큰을 억제.

변환

aufklarer/MADLAD400-3B-MT-MLX의 MLX safetensors는 google/madlad400-3b-mt에서 mx.quantize(그룹 크기 64)로 양자화됩니다. q/k/v/o, wi_0/wi_1/wo, lm_head, shared 임베딩이 양자화되며, layer norm 스케일과 상대 위치 편향 테이블은 fp16으로 유지됩니다. MADLAD의 유일한 HF 임베딩 키(decoder.embed_tokens.weight)는 변환 시 shared.weight로 이름이 바뀌어 인코더와 디코더가 함께 사용합니다.

라이선스

Apache 2.0(google/madlad400-3b-mt에서 상속). 모델 카드에 지원 언어 코드 전체 목록이 있습니다.