MADLAD-400 翻訳(オンデバイス、400+ 言語)
MADLAD-400-3B-MT は、400+ 言語 間の多対多機械翻訳に向けて学習された Google の T5 v1.1 エンコーダ-デコーダモデルです。Apache 2.0。Soniqo ビルドは Apple Silicon 上で量子化済みの MLX safetensors(INT4 / INT8)として動作し、クラウド呼び出しは不要です。ASR 後のライブキャプション、TTS 前段の多言語音声エージェント、またはスタンドアロンで使用できます。
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-MT | INT4 | ~1.7 GB | Metal GPU (MLX) | aufklarer/MADLAD400-3B-MT-MLX (int4/) |
| MADLAD-400-3B-MT | INT8 | ~3.1 GB | Metal 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)
| パラメータ | デフォルト | 説明 |
|---|---|---|
temperature | 0.0 | 0 = 貪欲。言い換えのバリエーションには 0.6–0.8。 |
topK | 0 | Top-K カットオフ(0 = 無効)。 |
topP | 1.0 | Nucleus サンプリングのカットオフ。 |
maxTokens | 256 | 出力長の上限。 |
repetitionPenalty | 1.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 から継承)。モデルカードにサポート言語コードの完全なリストがあります。