الترجمة بـ MADLAD-400 (على الجهاز، أكثر من 400 لغة)

MADLAD-400-3B-MT نموذج مرمّز-مفكّك T5 v1.1 من Google مُدرَّب على الترجمة الآلية متعدّدة الاتجاهات بين أكثر من 400 لغة. رخصته Apache 2.0. وبنية Soniqo تشغّله بصيغة MLX safetensors مكمَّمة (INT4 / INT8) على Apple Silicon دون أيّ نداءات سحابية. ضعه بعد ASR للترجمة الفورية للنصوص المرئية، أو قبل تحضير TTS لوكلاء صوتيّين متعدّدي اللغات، أو استعمله مستقلًّا.

التغذية من ASR

speech transcribe meeting.wav | speech translate --to es — الثنائي نفسه؛ والمدخل الوحيد المطلوب هو لغة الهدف. أمّا لغة المصدر فيكتشفها المرمّز تلقائيًا؛ أنت تحدّد فقط اللغة التي تريد الترجمة إليها.

بداية سريعة

import MADLADTranslation

let translator = try await MADLADTranslator.fromPretrained()

// Greedy decode (recommended default)
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")
// → "图书馆在哪里?"

// Streaming
for try await piece in translator.translateStream("Good morning", to: "fr") {
    print(piece, terminator: "")
}

CLI

speech translate "Hello, how are you?" --to es
speech translate "Bonjour" --to en --quantization int8
speech translate "Hello world" --to es --stream
speech translate --to fr --json    # JSON with timing metrics

# Pipe from ASR
speech transcribe meeting.wav | speech translate --to es

البنية

مرمّز-مفكّك T5 v1.1، نحو 3B معامل. 32 طبقة مرمّز + 32 طبقة مفكّك، d_model = 1024، d_kv = 128، num_heads = 16، وFFN من نوع gated GeLU (d_ff = 8192). تَرِد المعلومات الموضعية على شكل انحياز موضعي نسبيّ مُتعلَّم (32 سلّة، أقصى مسافة 128) بدلًا من تضمينات موضعية — ثنائيّ الاتجاه في المرمّز، أحاديّ الاتجاه (الماضي فقط) في المفكّك. يعيش جدول الانحياز في الطبقة الأولى فقط من كلّ كومة ثم يُنشَر عبر الطبقات اللاحقة. ودرجات الانتباه لا تُحجَّم بـ 1/√d_k — وهذه إحدى خصوصيات T5.

يُحسَب K/V للـ cross-attention مرّةً واحدة من خرج المرمّز ويُعاد استعماله في كلّ خطوة من خطوات فكّ الترميز (مخزَّن في DecoderLayerCache.crossAttn). أمّا ذاكرة KV لـ self-attention في المفكّك فتنمو مع كلّ رمز مُولَّد. وفكّ الترميز الجشِع (greedy) هو الخيار الافتراضي والمستحسن للترجمة؛ فيما يُتاح أخذ العيّنات بـ temperature / top-k / top-p للاستخدامات الشبيهة بإعادة الصياغة.

متغيّرات النموذج

المتغيّرالتكميمالحجمالحوسبةHuggingFace
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/)

اللغات المستهدفة

حدّد الهدف برمز اللغة المستخدم في مفردات MADLAD (عادةً ISO 639-1 مثل es، fr، zh، ja، إضافةً إلى أكثر من 400 لهجة إقليمية كـ yue للكانتونية وmin_nan للهوكينية). يحلّ المحوّل الرمزيّ <2{lang}> عبر بحث مباشر في المفردات ويُلقي MADLADTranslationError.unsupportedLanguage إن كان الرمز غير معروف. ويُكتشَف رمز المصدر تلقائيًا من المدخل — فلا تحدّده.

// Errors out if the language code isn't in MADLAD's vocab.
do {
    let _ = try translator.translate("Hello", to: "xx")
} catch MADLADTranslationError.unsupportedLanguage(let code) {
    print("MADLAD doesn't support: \(code)")
}

إعدادات أخذ العيّنات

let sampling = TranslationSamplingConfig(
    temperature: 0.0,        // greedy (default, recommended for MT)
    topK: 0,                 // disabled
    topP: 1.0,               // disabled
    maxTokens: 256,
    repetitionPenalty: 1.0
)
let result = try translator.translate("Long-form text…", to: "es", sampling: sampling)
المعاملالافتراضيالوصف
temperature0.00 = greedy. ارفعه إلى 0.6–0.8 للحصول على تنوّع شبيه بإعادة الصياغة.
topK0قطع Top-K (0 = معطَّل).
topP1.0قطع أخذ عيّنات النواة.
maxTokens256حدّ صارم لطول الإخراج.
repetitionPenalty1.0>1 يعاقب الرموز المُولَّدة حديثًا.

التحويل

يجري تكميم MLX safetensors في aufklarer/MADLAD400-3B-MT-MLX انطلاقًا من 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). تَسرد بطاقة النموذج المجموعة الكاملة لرموز اللغات المدعومة.