تشغيل نماذج اللغة الكبيرة محلياً غالباً ما يضعك في زاوية ضيقة فيما يتعلق بالأجهزة. مستخدمو NVIDIA يعيشون داخل نظام CUDA البيئي. مطورو Apple يختارون Metal. والجميع يأمل أن تدعم وحدات معالجة الرسومات (GPU) الخاصة بهم OpenCL أو ببساطة يعتمدون على وحدة المعالجة المركزية (CPU). هذا التجزؤ يجعل إطلاق تطبيقات الذكاء الاصطناعي لسطح المكتب أصعب مما ينبغي. لقد ساهم TensorSharp في حل هذه المشكلة عبر إضافة واجهة خلفية (backend) تعتمد على Vulkan، مما يمنح المحرك مساراً موثوقاً عبر وحدات GPU المنفصلة من مختلف الشركات المصنعة.
لماذا يغير Vulkan المعادلة
عادة ما يُناقش Vulkan في أوساط الألعاب، ولكن كواجهة برمجة تطبيقات (API) للحوسبة منخفضة التكاليف وعابرة للمنصات، فإنه يكتسب أهمية مماثلة لعمليات الاستدلال (inference). فهو يصل إلى الأجهزة التي يتجاهلها CUDA، مثل شرائح Intel UHD و Iris Xe المدمجة، والبطاقات المنفصلة القديمة، وأجهزة الكمبيوتر المحمولة التي تعمل بنظام Windows بميزانية محدودة ولا تحمل ملصق NVIDIA. بالنسبة لمحرك استدلال محلي، فإن هذا الوصول يمثل قوة عملية؛ حيث يمكن للمطور إطلاق مسار ثنائي (binary) واحد يعمل على عدد أكبر بكثير من الأجهزة مما يمكن أن يفعله حل يعتمد على CUDA فقط.
ظهر دعم TensorSharp لـ Vulkan عبر مشروع GGML. هذا التكامل يعمل حالياً، رغم أن المؤلف يخطط لبناء واجهة خلفية أصلية (native) لـ Vulkan لاحقاً. كان استخدام GGML كجسر خطوة تمهيدية صحيحة، حيث يثبت صحة البنية التحتية ويضع الأجهزة في أيدي المختبرين على الفور. ستتبع ذلك واجهة خلفية أصلية لإزالة عبء التجريد (abstraction overhead) ومنح المحرك المرتكز على C# تحكماً أدق في مخازن الأوامر (command buffers) وحواجز الذاكرة (memory barriers).
كيف تبدو نطاقات الاختبار حتى الآن
يغطي التحقق بالفعل تكوينين مختلفين تماماً لنظام Windows. اختبر المطور على وحدة معالجة رسومات NVIDIA GeForce RTX 3080 Laptop وعلى Intel UHD Graphics العادية. كلاهما عمل بشكل جيد. هذا النطاق يستحق الملاحظة؛ فمن النادر أن تتشارك وحدات المعالجة المنفصلة عالية القدرة والرسومات المدمجة الأساسية في نطاق اختبار ناجح بهذه السهولة في عالم الاستدلال. إذا كنت تشغل جهاز كمبيوتر محمولاً خفيف الوزن بدون وحدة معالجة رسومات مخصصة، فإن TensorSharp يوفر الآن مسار تسريع حقيقي لا يعتمد على تعريفات NVIDIA.
الفجوة في المصفوفة هي AMD. لم يتم اختبار أي أجهزة Radeon بعد. إذا كنت تمتلك وحدة GPU من AMD، فإن المشروع يحتاج إلى ملاحظاتك. إن التحقق المجتمعي على بطاقات سلسلة RX 6000 أو 7000 هو ما يحول الواجهة الخلفية التجريبية إلى خيار جاهز للإنتاج. أبلغ عن مشكلة إذا تعطل البرنامج، أو أبلغ إذا كان يعمل بسلاسة؛ فكلا النتيجتين تدفعان المشروع للأمام.
TensorSharp ليس مجرد غلاف (Wrapper)
تستحق هذه النقطة التأكيد. TensorSharp ليس مجرد ربط (binding) بلغة C# حول llama.cpp. لقد بنى المطور المحرك بالكامل من الصفر. الواجهة الخلفية لـ CPU هي بلغة C# خالصة. عندما تقوم بتشغيل الاستدلال بدون GPU، فإنك تقوم بتنفيذ كود مُدار (managed code) بدلاً من المرور عبر واجهة وظائف أجنبية (foreign function interface) إلى ملف ثنائي بلغة C++. كما يحافظ المشروع على واجهات خلفية مخصصة لـ CUDA و Apple’s MLX و GGML. ورغم هذا الاستقلال المعماري، فإن الأداء يضاهي llama.cpp، الذي يظل النقطة المرجعية التي تسعى معظم مشاريع الاستدلال المحلية للوصول إليها. هذا التكافؤ تم تحقيقه بشق الأنفس، مما يعني أن تخطيط الذاكرة، وإرسال النواة (kernel dispatch)، وعمليات التنسور (tensor ops) كلها تصمد تحت ضغط العمل الحقيقي.
يغطي دعم النماذج Gemma4 و DiffusionGemma و Qwen3.6. كما يتعامل وقت التشغيل (runtime) مع العمل متعدد الوسائط (multimodal). تعمل مسارات الرؤية والصوت والاستدلال عبر المحرك نفسه. إذا كنت تقوم ببناء نموذج أولي لمساعد سطح مكتب يقرأ لقطات الشاشة ويقبل الأوامر الصوتية، فلن تحتاج إلى دمج ثلاثة أوقات تشغيل منفصلة والدعاء بأن تتناسب بصمات ذاكرتها مع جهازك.
مرونة المنصات وواجهات برمجة التطبيقات (API)
يعمل TensorSharp على Windows و macOS و Linux. وتندمج الواجهة الخلفية الجديدة لـ Vulkan بسلاسة في تلك المصفوفة جنباً إلى جنب مع مسارات CUDA و Metal الموجودة. كما يوفر المحرك توافقاً مع واجهات برمجة تطبيقات OpenAI و Ollama. هذا الخيار يزيل عقبات التكامل؛ حيث يمكنك توجيه كود العميل الحالي إلى خادم TensorSharp محلي دون إعادة كتابة قوالب الأوامر (prompt templates) أو تحليل شكل استجابة جديد. بالنسبة للفرق التي تشغل Ollama داخلياً بالفعل أو تبني تطبيقاتها بناءً على واجهة REST الخاصة بـ OpenAI، فإن الانتقال إلى نسخة TensorSharp محلية هو مجرد مسألة تغيير عنوان URL الأساسي (base URL).
تحسينات مستعارة وفعالة
لا يتعلق الأداء فقط بالواجهة التي تتحدث مع الـ GPU. يدمج TensorSharp العديد من التحسينات التي أثبتت فعاليتها في بيئات الإنتاج في أماكن أخرى.
تقنية Paged KV cache، المستعارة من vLLM، تمنع الذاكرة من التضخم أثناء المحادثات الطويلة. بدلاً من حجز مساحة عمل متصلة واحدة لكل تسلسل، يقوم المحرك بتخصيص صفحات ثابتة الحجم وربطها عند الطلب. يمكنك إبقاء نوافذ السياق (context windows) مفتوحة لفترة أطول دون مراقبة ارتفاع استهلاك ذاكرة الوصول العشوائي (RAM).
Continuous batching, also from vLLM, improves throughput. The engine can slip new requests into active batches instead of waiting for the current group to finish. If one user’s prompt is ten tokens and another’s is two hundred, the hardware stays busier and average latency drops.
For Mixture-of-Experts models, TensorSharp implements an SSD-based cache strategy drawn from oMLX. Frequently accessed expert weights sit ready on fast storage rather than fighting for system RAM. On machines with limited memory but decent NVMe drives, this keeps MoE architectures usable.
Quantization follows the GGUF standard established by llama.cpp. Your quantized 4-bit and 5-bit models load directly without a conversion step.
The Real Takeaway
Vulkan support turns TensorSharp from an interesting C# experiment into a practical inference option for heterogeneous hardware. The roadmap is clear: validate across AMD and Intel discrete silicon, then tighten the implementation with a native Vulkan backend. If you have an AMD card in your workstation or laptop, run the build and share your results. That feedback loop is what hardens experimental code into something you can ship.
You can find the release details on the developer’s write-up. If the project saves you from juggling CUDA toolkits or wrestling with macOS version locks, leave a star on the repository. For ongoing discussion and community testing threads, the Telegram group stays open.
