TensorSharp, un moteur d'inférence purement .NET pour les modèles de langage GGUF, est désormais disponible publiquement, permettant aux développeurs .NET d'exécuter l'inférence de grands modèles de langage (LLM) sans avoir à lancer un serveur Python. Le projet revendique des performances comparables à l'omniprésent llama.cpp tout en fonctionnant sur Windows, macOS et Linux, et en prenant en charge les back-ends CPU, CUDA, MLX, Metal et Vulkan.

Pourquoi le .NET natif est important

La plupart des environnements d'exécution (runtimes) de LLM sont écrits en C/C++ ou reposent sur des wrappers Python qui exposent un processus distinct. Pour les équipes dont les services fonctionnent déjà sous .NET, cette couche supplémentaire ajoute des conteneurs, de la communication inter-processus et une surface d'attaque plus large. Maintenir l'inférence au sein du même runtime permet aux développeurs de simplifier les pipelines CI/CD, de réduire la latence liée aux sauts réseau et de diminuer le coût de maintenance d'un environnement Python.

Comment TensorSharp est construit

L'auteur a écrit le moteur de zéro au lieu de réutiliser llama.cpp. Le backend CPU est écrit à 100 % en C#, de sorte que Windows et Linux fonctionnent sans dépendances natives. La prise en charge du GPU provient des API graphiques existantes : CUDA pour Nvidia, MLX pour les puces Apple silicon, Metal pour les GPU macOS, et Vulkan pour le matériel multiplateforme. Des techniques modernes telles qu'un cache clé-valeur (KV) paginé, le batching continu (continuous batching) et le décodage spéculatif pour des modèles comme Qwen et Gemma sont intégrées au cœur du système.

Fonctionnalités incluses dès le départ

  • Compatibilité avec les modèles GGUF – le même format utilisé par les récentes versions de LLM open-source.
  • Fonctionnement multiplateforme – s'exécute sur Windows, macOS et Linux sans modification de code.
  • API HTTP compatibles OpenAI et Ollama – un remplacement direct pour les bibliothèques clientes existantes.
  • Gestion multimodale – peut ingérer des images, de la vidéo, de l'audio et des PDF dans un prompt.
  • Appel d'outils (tool calling) et sortie structurée – prend en charge les modèles d'appel de fonctions courants dans les agents conversationnels.

Performances par rapport à llama.cpp

Les benchmarks partagés par le mainteneur montrent des résultats mitigés :

  • Prefill et temps jusqu'au premier jeton (TTFT) – TensorSharp bat souvent llama.cpp, offrant une latence plus faible pour la réponse initiale.
  • Débit de décodage – généralement similaire ou légèrement inférieur à celui de llama.cpp.

Les chiffres suggèrent que l'implémentation pure en C# ne sacrifie pas la vitesse dans les phases les plus sensibles à la latence, tout en restant compétitive en termes de débit brut de jetons par seconde.

Précautions à prendre en compte

  • Les performances en conditions réelles varient selon l'architecture du modèle, la configuration matérielle et l'agencement de la mémoire ; les développeurs devraient effectuer leurs propres benchmarks avant un passage en production.

À suivre

Le canal de discussion du projet sur Telegram offre un espace aux premiers utilisateurs pour partager leurs résultats et demander de nouvelles fonctionnalités.

À retenir : TensorSharp offre aux entreprises utilisant .NET un moyen d'intégrer l'inférence de LLM directement dans leurs applications, éliminant le besoin d'une pile Python distincte et offrant une latence comparable à la référence de facto qu'est llama.cpp. Les équipes de production devraient valider les performances sur leur matériel cible, mais le moteur ouvre une voie claire pour les services d'IA natifs au sein de l'écosystème .NET.