عن المشروع
Mamba هي قاعدة أكواد بحثية مفتوحة المصدر من مجموعة state-spaces تنفّذ عائلة من بنيات نماذج فضاء الحالة (SSM) لتسلسل النمذجة. ترافق الأوراق البحثية "Mamba: Linear-Time Sequence Modeling with Selective State Spaces" و"Transformers are SSMs" (Mamba-2) و"Mamba-3: Improved Sequence Modeling using State Space Principles". يقدّم المشروع نفسه كبديل شبه تربيعي للمحولات (Transformers)، خاصةً للبيانات كثيفة المعلومات مثل نمذجة اللغة، ويبني على الأعمال السابقة في نماذج فضاء الحالة المنظمة (S4) مع تنفيذ يراعي العتاد بروح FlashAttention.
ما يوفره المستودع:
- طبقة SSM الانتقائية: عملية المسح الانتقائي الأساسية، ومصدرها في ops/selective_scan_interface.py.
- كتلة Mamba: وحدة البنية الرئيسية التي تغلّف SSM الانتقائي (modules/mamba_simple.py)، ويمكن استخدامها كوحدة PyTorch جاهزة مع معاملات قابلة للضبط مثل d_model وd_state وd_conv وexpand.
- كتلة Mamba-2: منفّذة في modules/mamba2.py مع نسخة أبسط في modules/mamba2_simple.py، بالإضافة إلى وحدة مرجعية بسيطة لـ SSD (ثنائية فضاء الحالة المنظمة) في modules/ssd_minimal.py.
- كتلة Mamba-3: منفّذة في modules/mamba3.py، وتوفّر خيارات مثل d_state وheaddim ووضع MIMO مع mimo_rank وchunk_size وطبقة تطبيع اختيارية لإسقاط المخرجات ونوع bfloat16.
- مثال نموذج لغوي: عمود فقري كامل مع رأس LM في models/mixer_seq_simple.py، يُستخدم في نصوص التوليد.
خيارات التثبيت والبناء:
يتم تثبيت الحزمة عبر pip (mamba-ssm) وتتطلب Linux وPython 3.10+ وPyTorch 1.12+. افتراضيًا، لا يجمّع التثبيت امتداد selective_scan_cuda ولا يجلب عجلات CUDA المخزنة. تغيّر الحزم الاختيارية ومتغيرات البيئة هذا السلوك: الحزمة الاختيارية causal-conv1d تضيف هذا الاعتماد؛ MAMBA_FORCE_BUILD=TRUE تفرض بناءً محليًا؛ MAMBA_KEEP_CUDA_BUILD=TRUE تختار امتداد مسح CUDA الانتقائي، محاولةً أولًا استخدام عجلة CUDA/HIP مبنية مسبقًا ومطابقة، ثم تجميع محليًا إذا لم تتوفر. الجمع بين العلمين يفرض تجميع CUDA محليًا. يلاحظ README أن --no-build-isolation مطلوب لبناءات CUDA حتى يستخدم pip PyTorch الممكّن بـ CUDA الموجود. تتطلب بناءات CUDA والتنفيذ على GPU أيضًا وحدة معالجة رسومات NVIDIA وCUDA 11.6+. بالنسبة لبطاقات AMD، يوثّق README خطوة تصحيح ROCm 6.0 (غير مطلوبة بدءًا من ROCm 6.1).
النماذج المدربة مسبقًا:
تُنشر الأوزان على Hugging Face تحت منظمة state-spaces، وتشمل mamba-130m وmamba-370m وmamba-790m وmamba-1.4b وmamba-2.8b وmamba2-130m وmamba2-370m وmamba2-780m وmamba2-1.3b وmamba2-2.7b وtransformerpp-2.7b وmamba2attn-2.7b، المدربة على 300B رمز من Pile، بالإضافة إلى mamba-2.8b-slimpj المدرب على 600B رمز من SlimPajama. يصف README هذه النماذج بأنها نماذج أساسية دون ضبط تعليمات أو أي تعديل آخر للمهام النهائية، ويذكر أن الأداء المتوقع مماثل أو أفضل من البنيات الأخرى المدربة على بيانات مشابهة، لكنه لا يطابق النماذج الأكبر أو المضبوطة. تتبع أبعاد النماذج تحجيمًا بأسلوب GPT-3 (مثل 130M معامل مع 24 طبقة وبُعد نموذج 768، وصولًا إلى 2.8B مع 64 طبقة وبُعد 2560).
أدوات التقييم والاستدلال:
يتم التقييم صفر-shot عبر مكتبة lm-evaluation-harness (pip install lm-eval==0.4.2)، مع أوامر أمثلة تغطي مهامًا مثل lambada_openai وhellaswag وpiqa وarc_easy وarc_challenge وwinogrande وopenbookqa وboolq وrace وtruthfulqa_mc2 وmmlu. يلاحظ README أن النتائج لكل مهمة قد تختلف عن القيم المبلغ عنها بمقدار 0.1-0.3 بسبب ضوضاء التقييم. سكريبت معيار التوليد (benchmarks/benchmark_generation_mamba_simple.py) يحمّل نموذجًا تلقائيًا من Hugging Face Hub، ويولّد مكملات لموجه مستخدم، ويقيس سرعة الاستدلال، مع خيارات لـ top-p وmin-p وtop-k ودرجة الحرارة ومعامل تكرار العقاب وحجم الدفعة.
ملاحظات استكشاف الأخطاء:
يسلط README الضوء على مشكلتين عمليتين. أولًا، الدقة: النماذج دُرّبت باستخدام PyTorch AMP، الذي يبقي المعاملات في float32 ويحوّلها إلى نصف الدقة عند الحاجة؛ ولأن نماذج SSM حساسة للديناميكيات المتكررة، فإن الأطر التي تخزن المعاملات في float16 (مثل DeepSpeed) قد تسبب عدم استقرار، ويُقترح تخزين المعاملات في fp32 كعلاج أول. ثانيًا، التهيئة: بعض المكونات ترث تهيئات بأسلوب S4 (على سبيل المثال، النطاق المستهدف لمعامل delta عبر انحياز الإسقاط الخطي)، والأطر التي تحتوي خطافات بعد التهيئة تُصفّر انحيازات nn.Linear قد تحتاج إلى منطق مخصص للحفاظ عليها.
الترخيص والاستشهاد: يوفّر README إدخالات BibTeX لأوراق Mamba وMamba-2 وMamba-3 ويطلب من المستخدمين الاستشهاد بها عند استخدام قاعدة الأكواد.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.