إصدار تجريبي قبل النشر / بناء مستمر: هذا بناء تجريبي، وليس إصداراً مستقراً.
metal : fix mul_mat_id with duplicate ids (#30373) * metal : fix mul_mat_id limits and kernel name * metal : fix mul_mat_id with duplicate ids كان kernel_mul_mm_id_map0 يفترض تطابقاً واحداً على الأكثر لكل token وسعة ثابتة قدرها ne21 من المدخلات لكل خبير، وهو ما أنتج صفوف إخراج خاطئة أو مفقودة ويمكن أن يفيض إلى شريحة الخبير التالي عندما تحتوي المعرّفات على تكرارات. تم إنشاء قائمة مدمجة لكل خبير من مدخلات (token, slot): - المرحلة 1 تُحصي مدخلات كل خبير، ويحسب الخيط 0 إزاحات شرائح الخبراء (يحمل tpe الآن [base, count]) - المرحلة 2 تكتب المدخلات بتخزين غير مشروط واحد لكل token (التخزينات المشروطة للمسارات المتباعدة بطيئة جداً)، وتقع القيمة الوهمية للرموز التي لا تطابق في خانة حشو من الشريحة لا تُقرأ أبداً - تُعالج التكرارات بواسطة فرع نادر - يقرأ kernel_mul_mm_id الـ base/count الخاص بخبيره ويتكرر على بلاطات المدخلات التي لا تتسع في الشبكة يتم تحديد حجم مخزن ids المؤقت بـ ne20*ne21 + ne02 (المدخلات + الحشو). جميع اختبارات 883/883 لـ test-backend-ops MUL_MAT_ID تنجح، وllama-bench يقع ضمن تباين التشغيل من السلوك السابق. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * metal : make mul_mat_id map0 ne02 a function constant استخدام FOR_UNURN لحلقات id في kernel_mul_mm_id_map0 وتحويل ne02 إلى ثابت الدالة FC_mul_mm_id_map0_ne02 (FC_MUL_MM + 7)، بحيث تنطبق إزاحات threadgroup لـ cnt/bas/sids وحدّ prefix-sum في وقت الترجمة. اسم الـ pipeline يشفر الآن ne02 (نفس اصطلاح ثوابت nc/silu في ssm_conv) ويُترجم pipeline الـ map0 مع تعيين القيمة الثابتة. لم يعد ne02 جزءاً من ggml_metal_kargs_mul_mm_id_map0 - لا يزال dispatch grid يأتي من tensor ne[2] على المضيف. لا تغيير قابل للقياس في الأداء: جميع اختبارات 883/883 لـ test-backend-ops MUL_MAT_ID تنجح، ونتائج مستوى العمليات وllama-bench تقع ضمن تباين التشغيل. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * cont : clean-up + TODO * metal : dispatch mul_mat_id entry tiles from the prepass اتّباع نهج تنفيذ vulkan (#29998): بدلاً من إطلاق شبكة عبر الخبراء × بلاطات مدخلات ne21 وترك معظم الـ threadgroups تخرج مبكراً، يصدر kernel_mul_mm_id_map0 الآن أيضاً خريطة صفوف - إجمالي عدد البلاطات بالإضافة إلى وصف (expert, first entry, valid rows) واحد لكل بلاطة من 32 مدخلاً لديها عمل. يُطلق kernel_mul_mm_id بحدّ أعلى ثابت لعدد البلاطات (بلاطات كاملة عبر جميع المدخلات بالإضافة إلى بلاطة جزئية واحدة على الأكثر لكل خبير)، ويقرأ وصفه ويعالج بلاطة واحدة - والذيل يخرج مبكراً. هذا يزيل حلقة الجولات التي كانت مطلوبة لتغطية المعرّفات المكررة خارج الشبكة (ضغط السجلات: th_max 768 -> العودة إلى مستوى mul_mm العادي)، وتُعالج التكرارات الآن ضمنياً، لأنها لا تنتج سوى وصفوف إضافية ضمن الحدّ. تنكمش الشبكة بنحو ~8-16 مرة على الأشكال النموذجية (مثلاً 128 خبيراً، 8 مستخدمة، 512 token: 128 بلاطة بدلاً من 2048 بلاطة مدخلات، منها 94% كانت تُطلق فقط لتخرج)، ولم يعد ne21 مطلوباً من قبل kargs لنواة mm. جميع اختبارات 883/883 لـ test-backend-ops MUL_MAT_ID تنجح. أصبح llama-bench (Qwen3.6-35B-A3B Q8_0) الآن أسرع من master على جميع أحجام pp (pp2048/4096/8192 +2%، pp512 +0.5%)، وtg32 دون تغيير. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * cont : add smem assertالموقع الإلكتروني: - https://llama.app
الشهادات (Attestations): - https://github.com/ggml-org/llama.cpp/attestations/55057952
macOS/iOS: - macOS Apple Silicon (arm64) - macOS Apple Silicon (arm64، مع تمكين KleidiAI) معطَّل - macOS Intel (x64) - iOS XCFramework
لينكس: - Ubuntu x64 (CPU) - Ubuntu arm64 (CPU) - Ubuntu s390x (CPU) - Ubuntu x64 (Vulkan) - Ubuntu arm64 (Vulkan) - Ubuntu x64 (CUDA 12) - مكتبات CUDA 12.8 - Ubuntu x64 (CUDA 13) - مكتبات CUDA 13.4 - Ubuntu arm64 (CUDA 13) - مكتبات CUDA 13.4 - Ubuntu x64 (ROCm 10.0) - Ubuntu x64 (OpenVINO) - Ubuntu x64 (SYCL FP32) - Ubuntu x64 (SYCL FP16) - Linux arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - دليل الإعداد
أندرويد: - Android arm64 (CPU) - Android arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - دليل الإعداد
ويندوز: - Windows x64 (CPU) - Windows arm64 (CPU) - Windows arm64 (OpenCL Adreno) - Windows x64 (CUDA 12) - CUDA 12.4 DLLs - Windows x64 (CUDA 13) - CUDA 13.4 DLLs - Windows arm64 (CUDA 13) - CUDA 13.4 DLLs - Windows x64 (Vulkan) - Windows arm64 (Vulkan) - Windows x64 (OpenVINO) - Windows x64 (SYCL) - Windows x64 (ROCm 10.0)
openEuler: - معطّل - openEuler بنظام x86 (310p) - openEuler بنظام x86 (910b, ACL Graph) - openEuler بنظام aarch64 (310p) - openEuler بنظام aarch64 (910b, ACL Graph)
الواجهة: - الواجهة