MADLAD-400 Übersetzung (On-Device, 400+ Sprachen)

MADLAD-400-3B-MT ist ein T5 v1.1 Encoder-Decoder-Modell von Google, das für mehrsprachige maschinelle Übersetzung zwischen 400+ Sprachen trainiert wurde. Apache 2.0. Der Soniqo-Build läuft als quantisierte MLX-Safetensors (INT4 / INT8) auf Apple Silicon — ohne Cloud-Aufrufe. Ideal nach ASR für Live-Untertitel, vor TTS für mehrsprachige Sprachagenten oder eigenständig.

Pipe von ASR

audio transcribe meeting.wav | audio translate --to es — dieselbe Binary; der einzige Pflichtparameter ist die Zielsprache. Die Quellsprache erkennt der Encoder automatisch — du gibst nur an, in welche Sprache übersetzt werden soll.

Schnellstart

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

Architektur

T5 v1.1 Encoder-Decoder, ca. 3 Mrd. Parameter. 32 Encoder- + 32 Decoder-Schichten, d_model = 1024, d_kv = 128, num_heads = 16, gated-GeLU FFN (d_ff = 8192). Positionsinformation kommt nicht über Positions-Embeddings, sondern über einen gelernten relativen Positions-Bias (32 Buckets, max. Distanz 128) — bidirektional im Encoder, unidirektional (nur Vergangenheit) im Decoder. Die Bias-Tabelle existiert nur in der ersten Schicht jedes Stacks und wird an die folgenden Schichten weitergereicht. Aufmerksamkeits-Scores werden nicht durch 1/√d_k skaliert — eine T5-Eigenheit.

Cross-Attention K/V wird einmal aus der Encoder-Ausgabe berechnet und für jeden Decode-Schritt wiederverwendet (gecached in DecoderLayerCache.crossAttn). Der KV-Cache der Decoder-Self-Attention wächst pro generiertem Token. Greedy-Decoding ist die Standardeinstellung und wird für Übersetzung empfohlen; Temperature / top-k / top-p Sampling steht für Paraphrasen-Anwendungen bereit.

Modell-Varianten

VarianteQuantisierungGrößeComputeHuggingFace
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/)

Zielsprachen

Die Zielsprache wird über den im MADLAD-Vokabular hinterlegten Sprachcode angegeben (in der Regel ISO 639-1 wie es, fr, zh, ja, plus 400+ regionale Varianten wie yue für Kantonesisch oder min_nan für Hokkien). Der Tokenizer löst <2{lang}> über direkten Vokabular-Lookup auf und wirft MADLADTranslationError.unsupportedLanguage, wenn der Code unbekannt ist. Die Quellsprache wird automatisch aus dem Eingabetext erkannt — nicht angeben.

Sampling-Konfiguration

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)
ParameterDefaultBeschreibung
temperature0.00 = Greedy. Für Paraphrasen-Variation 0.6–0.8.
topK0Top-K-Cutoff (0 = deaktiviert).
topP1.0Nucleus-Sampling-Cutoff.
maxTokens256Harte Obergrenze für Ausgabelänge.
repetitionPenalty1.0>1 bestraft kürzlich generierte Tokens.

Konvertierung

Die MLX-Safetensors unter aufklarer/MADLAD400-3B-MT-MLX werden aus google/madlad400-3b-mt über mx.quantize (group size 64) quantisiert. Quantisiert: q/k/v/o, wi_0/wi_1/wo, lm_head, shared-Embedding; Layer-Norm-Skalen und die Relative-Position-Bias-Tabelle bleiben fp16. MADLADs einziger HF-Embedding-Key (decoder.embed_tokens.weight) wird beim Konvertieren in shared.weight umbenannt, damit Encoder und Decoder ihn gemeinsam nutzen.

Lizenz

Apache 2.0 (übernommen von google/madlad400-3b-mt). Die Model Card listet alle unterstützten Sprachcodes.