TensorSharp، یک موتور استنتاج (inference engine) خالص .NET برای مدلهای زبانی GGUF، اکنون بهصورت عمومی در دسترس است و به توسعهدهندگان .NET اجازه میدهد بدون نیاز به راهاندازی یک سرور Python، استنتاج مدلهای زبانی بزرگ (LLM) را انجام دهند. این پروژه ادعا میکند که عملکرد آن در سیستمعاملهای Windows، macOS و Linux، در حالی که از بکاندهای CPU، CUDA، MLX، Metal و Vulkan پشتیبانی میکند، با llama.cpp که بسیار پرکاربرد است، قابل مقایسه است.
چرا .NET بومی (native) اهمیت دارد
اکثر محیطهای زمان اجرای (runtime) مدلهای LLM با C/C++ نوشته شدهاند یا به پوششهای (wrappers) پایتون متکی هستند که یک فرآیند مجزا را ایجاد میکنند. برای تیمهایی که سرویسهایشان از قبل روی .NET اجرا میشود، این لایه اضافی باعث اضافه شدن کانتینرها، ارتباط بینفرآیندی (inter-process communication) و افزایش سطح حمله (attack surface) میشود. نگه داشتن استنتاج در همان محیط اجرا، به توسعهدهندگان اجازه میدهد خط لولههای CI/CD را سادهتر کنند، تأخیر (latency) ناشی از گامهای شبکه را کاهش دهند و هزینهی نگهداری محیط پایتون را کم کنند.
TensorSharp چگونه ساخته شده است
نویسنده این موتور را بهجای استفاده مجدد از llama.cpp، از ابتدا نوشته است. بکاند CPU کاملاً با C# نوشته شده است، بنابراین در Windows و Linux بدون هیچ وابستگی بومی (native dependency) اجرا میشود. پشتیبانی از GPU از طریق APIهای گرافیکی موجود انجام میشود: CUDA برای Nvidia، MLX برای تراشههای Apple silicon، Metal برای پردازندههای گرافیکی macOS و Vulkan برای سختافزارهای چندپلتفرمی. تکنیکهای مدرن مانند حافظه پنهان کلید-مقدار (KV) صفحهبندیشده، دستهبندی مداوم (continuous batching) و رمزگشایی حدسی (speculative decoding) برای مدلهایی مانند Qwen و Gemma در هسته اصلی آن قرار دارند.
ویژگیهایی که توسعهدهندگان بهصورت آماده دریافت میکنند
- سازگاری با مدلهای GGUF – همان فرمتی که در نسخههای اخیر مدلهای LLM متنباز استفاده میشود.
- عملکرد چندپلتفرمی – بدون نیاز به تغییر کد، روی Windows، macOS و Linux اجرا میشود.
- رابطهای برنامهنویسی HTTP سازگار با OpenAI و Ollama – جایگزینی مستقیم برای کتابخانههای کلاینت موجود.
- مدیریت چندوجهی (Multimodal) – میتواند تصاویر، ویدیو، صدا و فایلهای PDF را بهعنوان بخشی از یک پرامپت (prompt) دریافت کند.
- فراخوانی ابزار و خروجی ساختاریافته – از الگوهای فراخوانی تابع (function-calling) که در عوامل (agents) مبتنی بر چت رایج است، پشتیبانی میکند.
عملکرد در مقابل llama.cpp
بنچمارکهای منتشر شده توسط نگهدارنده پروژه نتایج متفاوتی را نشان میدهند:
- Prefill و زمان تا اولین توکن (TTFT) – TensorSharp اغلب از llama.cpp پیشی میگیرد و تأخیر کمتری برای پاسخ اولیه ارائه میدهد.
- نرخ پردازش رمزگشایی (Decode throughput) – معمولاً مشابه یا کمی کندتر از llama.cpp است.
اعداد نشان میدهند که پیادهسازی خالص C# در حساسترین مراحل نسبت به تأخیر، از سرعت چشمپوشی نمیکند، در حالی که در خروجی خامِ توکن در ثانیه، رقابتی باقی میماند.
نکات احتیاطی که باید در نظر داشت
- عملکرد در دنیای واقعی بسته به معماری مدل، پیکربندی سختافزار و چیدمان حافظه متفاوت است؛ توسعهدهندگان باید پیش از استفاده در محیط عملیاتی (production)، بنچمارکهای خود را اجرا کنند.
آنچه در آینده باید منتظر آن بود
کانال بحث پروژه در تلگرام، مکانی برای کاربران اولیه است تا نتایج خود را به اشتراک بگذارند و درخواست ویژگیهای جدید بدهند.
نتیجهگیری: TensorSharp به کسبوکارهای مبتنی بر .NET راهی میدهد تا استنتاج LLM را مستقیماً در برنامههای خود بگنجانند، نیاز به یک پشته (stack) جداگانه پایتون را از بین میبرد و تأخیری مشابه با معیار اصلی یعنی llama.cpp ارائه میدهد. تیمهای عملیاتی باید عملکرد را روی سختافزار هدف خود تأیید کنند، اما این موتور مسیر روشنی را برای سرویسهای هوش مصنوعی بومی در اکوسیستم .NET باز میکند.
