Traduction MADLAD-400 (on-device, 400+ langues)

MADLAD-400-3B-MT est un modèle encodeur-décodeur T5 v1.1 de Google entraîné pour la traduction automatique multidirectionnelle entre 400+ langues. Apache 2.0. La build Soniqo s'exécute en MLX safetensors quantifiés (INT4 / INT8) sur Apple Silicon, sans appel cloud. À utiliser après l'ASR pour le sous-titrage live, en amont du TTS pour des agents vocaux multilingues, ou seul.

Pipe depuis l'ASR

audio transcribe meeting.wav | audio translate --to es — le même binaire, la seule entrée requise est la langue cible. La langue source est détectée automatiquement par l'encodeur ; tu indiques uniquement vers quelle langue traduire.

Démarrage rapide

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

Architecture

Encodeur-décodeur T5 v1.1, environ 3 milliards de paramètres. 32 couches d'encodeur + 32 couches de décodeur, d_model = 1024, d_kv = 128, num_heads = 16, FFN gated GeLU (d_ff = 8192). L'information de position arrive non pas via des embeddings positionnels mais via un biais de position relative appris (32 buckets, distance maximale 128) — bidirectionnel dans l'encodeur, unidirectionnel (passé seul) dans le décodeur. La table de biais n'existe que dans la première couche de chaque pile et est propagée aux couches suivantes. Les scores d'attention ne sont pas mis à l'échelle par 1/√d_k — c'est une particularité T5.

Le K/V de cross-attention est calculé une seule fois à partir de la sortie de l'encodeur et réutilisé à chaque pas de décodage (mis en cache dans DecoderLayerCache.crossAttn). Le cache KV de self-attention du décodeur croît à chaque token généré. Le décodage greedy est la valeur par défaut recommandée pour la traduction ; l'échantillonnage temperature / top-k / top-p est exposé pour des cas de paraphrase.

Variantes du modèle

VarianteQuantificationTailleComputeHuggingFace
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/)

Langues cibles

La cible se spécifie avec le code de langue du vocabulaire MADLAD (typiquement ISO 639-1 — es, fr, zh, ja, plus 400+ variantes régionales comme yue pour le cantonais ou min_nan pour le hokkien). Le tokenizer résout <2{lang}> via lookup direct dans le vocabulaire et lève MADLADTranslationError.unsupportedLanguage si le code est inconnu. La langue source est détectée à partir du texte — ne pas la spécifier.

Configuration d'échantillonnage

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)
ParamètreDéfautDescription
temperature0.00 = greedy. Pour des variations de type paraphrase, monte à 0.6–0.8.
topK0Coupure top-K (0 = désactivé).
topP1.0Seuil de l'échantillonnage nucleus.
maxTokens256Plafond strict de longueur de sortie.
repetitionPenalty1.0>1 pénalise les tokens générés récemment.

Conversion

Les safetensors MLX de aufklarer/MADLAD400-3B-MT-MLX sont quantifiés depuis google/madlad400-3b-mt via mx.quantize (group size 64). Quantifiés : q/k/v/o, wi_0/wi_1/wo, lm_head et l'embedding shared ; les échelles de layer norm et la table de biais de position relative restent en fp16. La seule clé d'embedding HF de MADLAD (decoder.embed_tokens.weight) est renommée en shared.weight à la conversion pour que l'encodeur et le décodeur la partagent.

Licence

Apache 2.0 (hérité de google/madlad400-3b-mt). La model card liste l'ensemble complet des codes de langue supportés.