TensorSharp ซึ่งเป็นเอนจินการอนุมาน (inference engine) แบบ pure-.NET สำหรับโมเดลภาษา GGUF เปิดให้ใช้งานแบบสาธารณะแล้ว ช่วยให้นักพัฒนา .NET สามารถรันการอนุมานโมเดลภาษาขนาดใหญ่ (LLM) ได้โดยไม่ต้องเปิดเซิร์ฟเวอร์ Python โครงการนี้อ้างว่ามีประสิทธิภาพเทียบเท่ากับ llama.cpp ที่ใช้กันอย่างแพร่หลาย โดยสามารถรันบน Windows, macOS และ Linux พร้อมรองรับ back-ends อย่าง CPU, CUDA, MLX, Metal และ Vulkan

ทำไม native .NET ถึงมีความสำคัญ

Runtime ของ LLM ส่วนใหญ่เขียนด้วย C/C++ หรือต้องพึ่งพา Python wrappers ซึ่งแยกกระบวนการทำงานออกมา สำหรับทีมที่บริการของตนรันบน .NET อยู่แล้ว เลเยอร์ที่เพิ่มขึ้นมานั้นหมายถึงการต้องจัดการกับ container, การสื่อสารระหว่างกระบวนการ (inter-process communication) และการเพิ่มช่องโหว่ในการโจมตี (attack surface) การเก็บการอนุมานไว้ภายใน runtime เดียวกันช่วยให้นักพัฒนาสามารถลดความซับซ้อนของ CI/CD pipelines, ลดความหน่วง (latency) จากการรับส่งข้อมูลผ่านเครือข่าย และลดค่าใช้จ่ายในการดูแลสภาพแวดล้อมของ Python

TensorSharp ถูกสร้างขึ้นอย่างไร

ผู้เขียนเขียนเอนจินนี้ขึ้นมาใหม่ทั้งหมดแทนที่จะนำ llama.cpp มาใช้ซ้ำ โดย CPU backend เขียนด้วย C# แบบ 100% ทำให้รันบน Windows และ Linux ได้โดยไม่ต้องมี native dependencies ส่วนการรองรับ GPU นั้นมาจาก graphics APIs ที่มีอยู่แล้ว ได้แก่ CUDA สำหรับ Nvidia, MLX สำหรับ Apple silicon, Metal สำหรับ GPU บน macOS และ Vulkan สำหรับฮาร์ดแวร์แบบ cross-platform นอกจากนี้ยังมีเทคนิคสมัยใหม่ เช่น paged key-value (KV) cache, continuous batching และ speculative decoding สำหรับโมเดลอย่าง Qwen และ Gemma บรรจุอยู่ในแกนหลักของระบบ

ฟีเจอร์ที่นักพัฒนาจะได้รับทันที

  • ความเข้ากันได้กับโมเดล GGUF – รูปแบบเดียวกับที่ใช้ในโมเดล LLM แบบ open-source รุ่นล่าสุด
  • การทำงานแบบ cross-platform – รันบน Windows, macOS และ Linux ได้โดยไม่ต้องแก้ไขโค้ด
  • HTTP APIs ที่เข้ากันได้กับ OpenAI และ Ollama – สามารถนำมาใช้แทนที่ client libraries เดิมได้ทันที
  • การจัดการแบบ Multimodal – สามารถรับข้อมูลรูปภาพ, วิดีโอ, เสียง และ PDF เป็นส่วนหนึ่งของ prompt ได้
  • การเรียกใช้เครื่องมือ (Tool calling) และการแสดงผลแบบมีโครงสร้าง (structured output) – รองรับรูปแบบ function-calling ที่ใช้กันทั่วไปใน chat-based agents

ประสิทธิภาพเมื่อเทียบกับ llama.cpp

ผลการทดสอบประสิทธิภาพ (Benchmarks) ที่ผู้ดูแลโครงการแบ่งปันแสดงให้เห็นผลลัพธ์ที่หลากหลาย:

  • Prefill และ time-to-first-token (TTFT) – TensorSharp มักจะทำได้ดีกว่า llama.cpp โดยให้ความหน่วงที่ต่ำกว่าสำหรับการตอบสนองครั้งแรก
  • Decode throughput – โดยปกติจะใกล้เคียงกับหรือช้ากว่า llama.cpp เล็กน้อย

ตัวเลขเหล่านี้บ่งชี้ว่าการเขียนด้วย C# แบบ pure implementation ไม่ได้ทำให้เสียความเร็วในขั้นตอนที่อ่อนไหวต่อความหน่วงมากที่สุด ในขณะที่ยังคงความสามารถในการแข่งขันในด้านจำนวน token ต่อวินาที (token-per-second)

ข้อควรระวังที่ต้องคำนึงถึง

  • ประสิทธิภาพในการใช้งานจริงจะแตกต่างกันไปตามสถาปัตยกรรมของโมเดล, การกำหนดค่าฮาร์ดแวร์ และการจัดวางหน่วยความจำ (memory layout) นักพัฒนาควรทำการทดสอบประสิทธิภาพด้วยตนเองก่อนนำไปใช้งานจริง (production)

สิ่งที่น่าติดตามต่อไป

ช่องทางสนทนาของโครงการบน Telegram เป็นพื้นที่สำหรับผู้ใช้งานกลุ่มแรก (early adopters) ในการแบ่งปันผลลัพธ์และร้องขอฟีเจอร์ใหม่ๆ

สรุป: TensorSharp ช่วยให้กลุ่มผู้ใช้งาน .NET มีวิธีฝังการอนุมาน LLM ลงในแอปพลิเคชันของตนได้โดยตรง โดยไม่ต้องใช้ Python stack แยกต่างหาก และให้ความหน่วงที่เทียบเท่ากับมาตรฐานอย่าง llama.cpp ทีมงานที่ดูแลระบบ production ควรตรวจสอบประสิทธิภาพบนฮาร์ดแวร์เป้าหมายของตนเอง แต่เอนจินนี้ได้เปิดเส้นทางที่ชัดเจนสำหรับบริการ AI แบบ native ภายในระบบนิเวศของ .NET