TensorSharp, чистий .NET-двигун для інференсу мовних моделей формату GGUF, тепер став публічно доступним, що дозволяє .NET-розробникам запускати інференс великих мовних моделей (LLM) без розгортання Python-сервера. Проєкт заявляє про продуктивність, порівнянну з широко використовуваним llama.cpp, під час роботи на Windows, macOS та Linux із підтримкою бекендів CPU, CUDA, MLX, Metal та Vulkan.
Чому важливий нативний .NET
Більшість середовищ виконання (runtimes) для LLM написані на C/C++ або покладаються на Python-обгортки, які запускають окремий процес. Для команд, чиї сервіси вже працюють на .NET, цей додатковий рівень означає використання контейнерів, міжпроцесну взаємодію та збільшення поверхні атаки. Збереження інференсу всередині того самого середовища виконання дозволяє розробникам спростити конвеєри CI/CD, зменшити затримки через мережеві запити та скоротити витрати на підтримку середовища Python.
Як побудовано TensorSharp
Автор написав двигун з нуля, а не перевикористав llama.cpp. Бекенд для CPU на 100% написаний на C#, тому Windows та Linux працюють без нативних залежностей. Підтримка GPU забезпечується існуючими графічними API: CUDA для Nvidia, MLX для Apple silicon, Metal для GPU macOS та Vulkan для кросплатформного обладнання. У ядро інтегровані сучасні методи, такі як кеш ключ-значення (KV) із сегментацією (paged), безперервне пакетне оброблення (continuous batching) та спекулятивне декодування для таких моделей, як Qwen та Gemma.
Можливості, доступні «з коробки»
- Сумісність із моделями GGUF — той самий формат, що використовується в останніх релізах open-source LLM.
- Кросплатформність — працює на Windows, macOS та Linux без змін у коді.
- HTTP API, сумісні з OpenAI та Ollama — готова заміна для існуючих клієнтських бібліотек.
- Мультимодальність — можливість обробляти зображення, відео, аудіо та PDF-файли як частину запиту (prompt).
- Виклик інструментів та структуровані відповіді — підтримка патернів виклику функцій, характерних для чат-агентів.
Продуктивність порівняно з llama.cpp
Бенчмарки, надані розробником, показують неоднозначні результати:
- Prefill та час до першого токена (TTFT) — TensorSharp часто перевершує llama.cpp, забезпечуючи меншу затримку для першої відповіді.
- Пропускна здатність декодування — зазвичай подібна до llama.cpp або трохи нижча за неї.
Цифри свідчать про те, що реалізація на чистому C# не поступається у швидкості на найбільш чутливих до затримок етапах, залишаючись конкурентоспроможною за показником кількості токенів на секунду.
Застереження, які слід враховувати
- Реальна продуктивність залежить від архітектури моделі, конфігурації обладнання та структури пам'яті; розробникам варто провести власні бенчмарки перед впровадженням у продакшн.
За чим стежити далі
Канал обговорення проєкту в Telegram є місцем, де перші користувачі можуть ділитися результатами та пропонувати нові функції.
Підсумок: TensorSharp надає .NET-компаніям можливість вбудовувати інференс LLM безпосередньо у свої додатки, усуваючи потребу в окремому стеку Python і забезпечуючи затримку, порівнянну з еталонним показником llama.cpp. Командам, що працюють у продакшні, слід перевірити продуктивність на своєму цільовому обладнанні, проте цей двигун відкриває чіткий шлях для створення нативних AI-сервісів у межах екосистеми .NET.
