#H800
DeepSeek研究員1200行程式碼復刻vLLM,H800硬體實測性能反超原版
僅用不到1200行程式碼,實現最小化且完全可讀的vLLM!DeepSeek研究員俞星凱搞了個開放原始碼專案引得大夥拍手叫絕。項目名為Nano-vLLM(奈米級-vLLM),有三大特點:快速離線推理:推理速度可與vLLM相媲美可讀性強的程式碼庫:基於不到1200行Python程式碼實現,簡潔乾淨最佳化套件:包含前綴快取、Torch compilation 、CUDA graph等下面是vLLM與Nano-vLLM在不同硬體和模型配置下的基準測試情況。在RTX 4070硬體、Qwen3-0.6B模型環境中,設定了256個序列的總請求數,輸入和輸出長度均在100-1024個 token間隨機採樣。測試結果be like:vLLM略微領先。二者輸出token量相同,vLLM耗時98.95秒、吞吐量為1353.86 tokens/s,Nano-vLLM耗時101.90秒、吞吐量1314.65tokens/s。接著在H800硬體、Qwen3-8B模型環境中,總請求數為1024個序列,輸入輸出長度同樣隨機採樣。此時Nano-vLLM甚至反超原框架。二者輸出token量依舊相同,vLLM耗時98.67秒、吞吐量5916.89 tokens/s ,Nano-vLLM耗時86.73秒、吞吐量 6731.42 tokens/s。這一成果來自於DeepSeek研究員俞星凱。他2021年獲得南京大學電腦科學與技術系學士學位,同年又被南京大學免試錄取為碩士研究生,在校他同時也是由周志華教授領導的LAMDA團隊的成員。vLLM是什麼?vLLM是一款專為LLM推理與部署最佳化的高性能框架,最初由加州大學伯克利分校的Sky Computing Lab開發,現已發展成為一個匯聚學界與業界貢獻的社區驅動項目。該項目在GitHub目前已累計49.5k+ Star。其核心技術靈感源自作業系統虛擬記憶體分頁機制。此前LLM服務系統因採用連續記憶體儲存KV快取,導致內部/外部碎片化嚴重,且無法有效共用記憶體,極大限制了批處理規模。針對這一問題,團隊提出PagedAttention演算法,允許將連續的鍵(key)值(value)對儲存在非連續記憶體空間中,通過將KV快取劃分為固定大小的塊(Block),利用塊表動態對應邏輯塊與物理塊地址。在注意力計算過程中,PagedAttention核心會分別識別和獲取不同的KV塊。下面是一個示例,鍵和值向量分佈在三個塊中,且這三個塊在實體記憶體中並不連續。基於PagedAttention演算法,團隊建構了vLLM服務系統,其架構下圖所示:vLLM採用集中式調度器來協調分佈式GPU工作節點的執行。借助PagedAttention,KV快取管理器以分頁方式有效管理KV快取。具體而言,KV快取管理器通過集中式調度器傳送的指令來管理GPU工作節點上的物理KV快取記憶體。vLLM實現了KV快取記憶體近乎零浪費,請求內及請求間KV快取的靈活共享進一步降低記憶體使用。評估顯示,與FasterTransformer和Orca等此前最先進系統相比,vLLM在相同延遲水平下將流行LLM的吞吐量提升2-4倍,且在更長序列、更大模型和更複雜解碼演算法場景中改進更為顯著。總結來說,vLLM靈活且易於使用,具備以下特點:與流行的Hugging Face模型無縫整合,包括類Transformer模型、混合專家模型、嵌入模型、多模態模型;支援通過各種解碼演算法實現高吞吐量服務,包括平行採樣、波束搜尋等;支援張量平行和pipeline平行,以實現分佈式推理;支援流式輸出;相容OpenAI的API伺服器;支援NVIDIA GPU、AMD CPU和GPU、Intel CPU和GPU、PowerPC CPU、TPU以及AWS Neuron;支援前綴快取;支援多LoRA。值得一提的是,在實現層面,vLLM前端基於FastAPI,後端是基於GPU的推理引擎。vLLM引擎由8500行Python程式碼和2000行C++/CUDA程式碼構成。而這次DeepSeek研究員僅用不到1200行程式碼就實現了輕量級vLLM,性能和原版相媲美。參考連結:[1]https://github.com/GeeeekExplorer/nano-vllm/tree/main[2]]https://www.lamda.nju.edu.cn/yuxk/[3]https://arxiv.org/pdf/2309.06180[4]https://github.com/vllm-project/vllm (量子位)