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.
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
| Variante | Cuantización | Tamaño | Cómputo | 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/) |
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ámetro | Defecto | Descripción |
|---|---|---|
temperature | 0.0 | 0 = greedy. Sube a 0.6–0.8 para variación tipo paráfrasis. |
topK | 0 | Corte top-K (0 = desactivado). |
topP | 1.0 | Umbral de muestreo nucleus. |
maxTokens | 256 | Tope rígido de longitud de salida. |
repetitionPenalty | 1.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.