dotLLM 研究筆記¶
資料來源¶
| 項目 | 連結 |
|---|---|
| 部落格文章 | Introducing dotLLM |
| GitHub Repo | kkokosa/dotLLM |
| 官網 | dotllm.dev |
作者: Konrad Kokosa — .NET 效能專家
專案狀態: ⭐ 183 stars · C# · GPLv3 · v0.1.0-preview.2 · 實驗性專案
專案概述¶
dotLLM 是一個完全用純 C#/.NET 10 原生實作的 LLM 推論引擎——不是 llama.cpp 的包裝器,不依賴 Python。從 GGUF 模型載入、tokenization、attention、sampling 到 CPU/GPU compute 全部用 C# 實作。
同時也是一個 AI 輔助開發實驗:大量使用 Claude Code、Gemini、Codex 等 coding agent,探索人類領域專家主導下 AI 工具能把系統級專案推進到什麼程度。
技術架構¶
┌─────────────────────────────────────────┐
│ DotLLM.Server │ ASP.NET OpenAI-compatible API
├─────────────────────────────────────────┤
│ DotLLM.Engine │ KV-cache, scheduler, samplers
├──────────┬──────────┬───────────────────┤
│ DotLLM. │ DotLLM. │ DotLLM.Cpu/Cuda │ GGUF, BPE/SPM, SIMD/CUDA
│ Models │Tokenizers│ │
├──────────┴──────────┴───────────────────┤
│ DotLLM.Core │ Interfaces, tensor types
└─────────────────────────────────────────┘
效能亮點¶
| 技術 | 說明 |
|---|---|
| Zero-GC 推論 | NativeMemory.AlignedAlloc(64-byte 對齊),hot path 零 GC |
| SIMD 向量化 | AVX2/AVX-512 處理量化矩陣乘法、RMSNorm、RoPE |
| Memory-mapped | GGUF 模型毫秒級載入 |
| 量化 | FP16、Q8_0、Q4_K_M |
| Paged KV-cache | PagedAttention + prefix caching + copy-on-write |
| Speculative decoding | draft-verify-accept + KV-cache rollback |
| Structured output | FSM/PDA-based 約束解碼,保證合法 JSON/Schema/regex |
| CUDA backend | PTX kernels + CUDA Driver API,CPU/GPU 混合 offloading |
快速開始¶
# .NET 全域工具安裝
dotnet tool install -g DotLLM.Cli --prerelease
# 下載模型
dotllm model pull QuantFactory/SmolLM-135M-GGUF
# 單次生成
dotllm run QuantFactory/SmolLM-135M-GGUF -p "The capital of France is" -n 64
# 互動聊天
dotllm chat QuantFactory/SmolLM-135M-GGUF
# OpenAI-compatible API + Web UI
dotllm serve QuantFactory/SmolLM-135M-GGUF # http://localhost:8080
支援模型:Llama、Mistral、Phi、Qwen、DeepSeek
目前限制 / 注意事項¶
- 實驗性質 — 明確標示不適合生產環境,預期有 breaking changes
- GPLv3 授權 — 商業整合有傳染性授權限制
- 吞吐量不及 llama.cpp — 差距在縮小但仍落後
- CUDA 效能未成熟 — 小模型因 launch overhead 反而比 CPU 慢
- 模型支援有限 — 僅 5 個架構家族
- 需要 .NET 10 — 相當新的 runtime
- Speculative decoding 僅 greedy mode
研究價值與啟示¶
關鍵洞察¶
-
「用你最熟悉的語言從零打造」是最好的學習方式。 Kokosa 是 .NET 效能專家,用 C# 而非 Python 重寫 LLM 推論——這迫使他理解每個底層細節(記憶體對齊、SIMD 指令、CUDA kernel),而不是靠 PyTorch 抽象層。
-
Zero-GC 推論展示了 C# 的系統級能力。 用
NativeMemory+Span<T>+stackalloc達到接近 C/C++ 的效能——打破了「.NET 不適合做系統程式」的偏見。 -
AI 輔助開發系統級專案的真實案例。 整個專案大量使用 Claude Code 和 Codex——不是寫 CRUD,而是寫 CUDA kernel 和 SIMD 向量化。這為「AI 能否寫複雜系統」提供了正面數據。
與其他專案的關聯¶
- vs Gemma 4 / Local LLM(筆記庫中): Gemma 是跑在別人引擎上的模型,dotLLM 是引擎本身。如果你想了解 LLM 推論的底層運作,dotLLM 的原始碼比讀論文更直觀。
- vs AI Engineering from Scratch: 那是「教你 AI」的課程,dotLLM 是「用 AI 幫你寫 AI 引擎」的實戰案例。Phase 10(LLMs from Scratch)的終極實踐版。