الترجمة بـ MADLAD-400 (على الجهاز، أكثر من 400 لغة)
MADLAD-400-3B-MT نموذج مرمّز-مفكّك T5 v1.1 من Google مُدرَّب على الترجمة الآلية متعدّدة الاتجاهات بين أكثر من 400 لغة. رخصته Apache 2.0. وبنية Soniqo تشغّله بصيغة MLX safetensors مكمَّمة (INT4 / INT8) على Apple Silicon دون أيّ نداءات سحابية. ضعه بعد ASR للترجمة الفورية للنصوص المرئية، أو قبل تحضير TTS لوكلاء صوتيّين متعدّدي اللغات، أو استعمله مستقلًّا.
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-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/) |
اللغات المستهدفة
حدّد الهدف برمز اللغة المستخدم في مفردات 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)
| المعامل | الافتراضي | الوصف |
|---|---|---|
temperature | 0.0 | 0 = greedy. ارفعه إلى 0.6–0.8 للحصول على تنوّع شبيه بإعادة الصياغة. |
topK | 0 | قطع Top-K (0 = معطَّل). |
topP | 1.0 | قطع أخذ عيّنات النواة. |
maxTokens | 256 | حدّ صارم لطول الإخراج. |
repetitionPenalty | 1.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). تَسرد بطاقة النموذج المجموعة الكاملة لرموز اللغات المدعومة.