單張 3090 跑 Llama 70B:NTransformer 的工程細節值得看一下
HN 上有個 Show HN 的專案跑到 300 分,我翻了一下,工程細節有幾個地方值得記一下。
NTransformer 是純 C++/CUDA 寫的 LLM 推論引擎,零外部依賴,不需要 PyTorch 也不需要 cuBLAS。核心賣點是在單張 RTX 3090(24GB VRAM)上跑 Llama 3.1 70B。
能跑嗎?能。實際速度呢?70B Q4_K_M 大約 0.3-0.5 tok/s。這個速度一般人大概沒辦法接受,但如果你只是想驗證某個 workflow 在 70B 上的行為,還是可以用。
架構設計是三層快取,根據硬體自動分配:VRAM 放最常用的層、RAM 次之、NVMe 讀其餘的。Llama 70B Q4_K_M 壓縮後大概 44GB,3090 的 VRAM 只有 24GB,差的部分靠 PCIe 從 RAM 或 NVMe 送進去。瓶頸就是 PCIe,Gen3 x8 大概 6.5 GB/s,這個不是 software 能改善的。
比較有趣的是 layer skip。70B 有 80 層,這個實作用 cosine similarity 量每層輸出的相似度,相似度高的層直接跳過,預設跳 20 層。模型有一定的層冗餘性這不是新發現,但有人把它工程化並且量化 speedup,蠻難得的。
真正可用的情境其實是 8B 全裝 VRAM,可以跑到 48.9 tok/s,這個速度夠用。如果你的需求是跑 8B 又不想碰 Python 環境,這個方向有意義。
零外部依賴這件事我覺得被低估了。在一個 CUDA 版本對不上、PyTorch 升級會炸的時代,純 C++ 的可維護性是有其價值的。
作者:鍵盤工人