Traducción MADLAD-400 (on-device, 400+ idiomas)

MADLAD-400-3B-MT es un modelo encoder-decoder T5 v1.1 de Google entrenado para traducción automática multidireccional entre 400+ idiomas. Apache 2.0. La build de Soniqo se ejecuta como MLX safetensors cuantizados (INT4 / INT8) en Apple Silicon sin llamadas a la nube. Úsalo después del ASR para subtítulos en vivo, antes del TTS para agentes multilingües o de forma independiente.

Encadenar desde ASR

audio transcribe meeting.wav | audio translate --to es — el mismo binario; el único parámetro obligatorio es el idioma de destino. El idioma de origen lo detecta el encoder automáticamente; tú solo indicas a qué idioma traducir.

Inicio rápido

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

Arquitectura

Encoder-decoder T5 v1.1, ~3B parámetros. 32 capas de encoder + 32 capas de decoder, d_model = 1024, d_kv = 128, num_heads = 16, FFN gated GeLU (d_ff = 8192). La información posicional llega como un sesgo de posición relativa aprendido (32 buckets, distancia máxima 128) en lugar de embeddings posicionales — bidireccional en el encoder, unidireccional (solo pasado) en el decoder. La tabla de sesgos vive solo en la primera capa de cada stack y se propaga al resto. Las puntuaciones de atención no se escalan por 1/√d_k — es una particularidad de T5.

El K/V del cross-attention se calcula una sola vez a partir de la salida del encoder y se reutiliza en cada paso de decodificación (cacheado en DecoderLayerCache.crossAttn). El KV cache del self-attention del decoder crece con cada token generado. La decodificación greedy es la opción por defecto y recomendada para traducción; el muestreo temperature / top-k / top-p está disponible para casos de paráfrasis.

Variantes del modelo

VarianteCuantizaciónTamañoCómputoHuggingFace
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/)

Idiomas de destino

El destino se especifica con el código de idioma del vocabulario MADLAD (normalmente ISO 639-1 como es, fr, zh, ja, además de 400+ variantes regionales como yue para cantonés o min_nan para hokkien). El tokenizador resuelve <2{lang}> mediante búsqueda directa en el vocabulario y lanza MADLADTranslationError.unsupportedLanguage si el código no se reconoce. El idioma de origen se detecta del texto — no se especifica.

Configuración de muestreo

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)
ParámetroDefectoDescripción
temperature0.00 = greedy. Sube a 0.6–0.8 para variación tipo paráfrasis.
topK0Corte top-K (0 = desactivado).
topP1.0Umbral de muestreo nucleus.
maxTokens256Tope rígido de longitud de salida.
repetitionPenalty1.0>1 penaliza tokens generados recientemente.

Conversión

Los safetensors MLX de aufklarer/MADLAD400-3B-MT-MLX se cuantizan desde google/madlad400-3b-mt usando mx.quantize (group size 64). Se cuantizan q/k/v/o, wi_0/wi_1/wo, lm_head y el embedding shared; las escalas de layer norm y la tabla de sesgo de posición relativa se mantienen en fp16. La única clave de embedding de HF en MADLAD (decoder.embed_tokens.weight) se renombra a shared.weight en la conversión para que tanto encoder como decoder la reutilicen.

Licencia

Apache 2.0 (heredado de google/madlad400-3b-mt). La model card lista el conjunto completo de códigos de idioma soportados.