การพัฒนาใหม่แบบเบาของ inference engine ยอดนิยม vLLM ได้ดึงดูดความสนใจจากชุมชนแมชชีนเลิร์นนิงด้วยประสิทธิภาพที่ดีกว่าในขณะที่ใช้โค้ดน้อยกว่าอย่างมีนัยสำคัญ Nano-vLLM ที่สร้างขึ้นใหม่ตั้งแต่เริ่มต้นด้วย Python ประมาณ 1,200 บรรทัด แสดงให้เห็นว่าบางครั้งน้อยกว่าคือมากกว่าในด้านวิศวกรรมซอฟต์แวร์
โปรเจกต์นี้เกิดขึ้นในช่วงเวลาที่นักพัฒนาเริ่มรู้สึกหงุดหงิดกับ codebase ที่พองตัวของ vLLM และ Docker images ที่บวมขึ้นเกิน 10GB สมาชิกในชุมชนได้ชี้ให้เห็นแนวทางการพัฒนาที่น่าสงสัย รวมถึง CUDA packages ที่ปรากฏหลายครั้งในหลาย layer ต่างๆ ซึ่งส่งผลให้ขนาดเพิ่มขึ้นอย่างมหาศาล
คุณสมบัติทางเทคนิคหลัก
- ขนาด Codebase: ประมาณ 1,200 บรรทัดของ Python
- ชุดเครื่องมือปรับปรุงประสิทธิภาพ: Prefix caching, Tensor Parallelism, Torch compilation, CUDA graph
- ความเข้ากันได้ของ API: เลียนแบบอินเทอร์เฟซของ vLLM โดยมีความแตกต่างเล็กน้อย
- การติดตั้ง:
pip install git+https://github.com/GeeeekExplorer/nano-vllm.git
ประสิทธิภาพที่พูดแทนตัวเอง
ผลการทดสอบแสดงให้เห็นว่า Nano-vLLM ทำได้ 1,434 tokens ต่อวินาที เมื่อเทียบกับ vLLM ที่ทำได้ 1,362 tokens ต่อวินาทีบนฮาร์ดแวร์เดียวกัน การปรับปรุง 5% นี้เกิดขึ้นขณะประมวลผล output tokens จำนวน 133,966 tokens เท่ากัน โดย Nano-vLLM ใช้เวลา 93.41 วินาที เทียบกับ vLLM ที่ใช้เวลา 98.37 วินาที การทดสอบใช้โมเดล Qwen3-0.6B บน RTX 4070 laptop ที่มีหน่วยความจำ 8GB ประมวลผล 256 sequences ที่มีความยาว input และ output ที่แตกต่างกัน
สิ่งที่ทำให้ผลลัพธ์เหล่านี้น่าประทับใจเป็นพิเศษคือการบรรลุผลดังกล่าวด้วย codebase ที่เรียบง่ายลงอย่างมาก การ implementation ที่สะอาดนี้ยังคงรักษาคุณสมบัติการปรับปรุงประสิทธิภาพที่จำเป็นทั้งหมด รวมถึง prefix caching, tensor parallelism, torch compilation และการสนับสนุน CUDA graph
การเปรียบเทียบประสิทธิภาพ
| เมตริก | vLLM | Nano-vLLM |
|---|---|---|
| โทเค็นเอาต์พุต | 133,966 | 133,966 |
| เวลาในการประมวลผล | 98.37วินาที | 93.41วินาที |
| อัตราการประมวลผล | 1,361.84 โทเค็น/วินาที | 1,434.13 โทเค็น/วินาที |
| การเพิ่มขึ้นของประสิทธิภาพ | - | +5.3% |
แอปพลิเคชันในโลกจริงเริ่มปรากฏขึ้น
โปรเจกต์นี้ได้รับความนิยมอย่างรวดเร็วนอกเหนือจากแค่ benchmark นักพัฒนาจากซีรีส์ Dolphin open-source fine-tuning ได้นำ Nano-vLLM มาใช้แล้วสำหรับคุณสมบัติขั้นสูงอย่างการสกัด sample-K logit อย่างมีประสิทธิภาพ เทคนิคนี้ซึ่งอธิบายไว้ในงานวิจัยล่าสุดเกี่ยวกับ sparse logit sampling พิสูจน์แล้วว่าซับซ้อนเกินไปที่จะ implement ใน vLLM ตัวเดิม แต่ตรงไปตรงมาใน Nano-vLLM architecture ที่เรียบง่าย
นักพัฒนาซึ่งรายงานว่ามาจากทีม DeepSeek ได้สร้างสิ่งที่สะท้อนกับความปรารถนาของชุมชนสำหรับเครื่องมือที่เรียบง่ายและดูแลรักษาได้มากขึ้น Codebase ที่อ่านได้ช่วยให้นักพัฒนาสามารถเข้าใจ inference pipeline ทั้งหมดตั้งแต่ต้นจนจบ ซึ่งเป็นสิ่งที่ยากขึ้นเรื่อยๆ กับความซับซ้อนที่เพิ่มขึ้นของ vLLM
การกำหนดค่าการทดสอบ
- ฮาร์ดแวร์: RTX 4070 Laptop (8GB VRAM)
- โมเดล: Qwen3-0.6B
- ขนาดการทดสอบ: 256 ลำดับ
- ความยาว Input: 100-1024 โทเค็น (สุ่มตัวอย่าง)
- ความยาว Output: 100-1024 โทเค็น (สุ่มตัวอย่าง)
มองไปข้างหน้า
ความสำเร็จของ Nano-vLLM ทำให้เกิดคำถามที่น่าสนใจเกี่ยวกับอนาคตของ inference engines เมื่อประสิทธิภาพดังกล่าวสามารถบรรลุได้ด้วยโค้ดน้อยๆ นักพัฒนาเริ่มคาดเดาถึงความเป็นไปได้อย่าง distributed inference ข้ามอุปกรณ์ในขณะที่ยังคงรักษา prefix caches ที่สอดคล้องกัน หรือการออกแบบระบบที่คิดในแง่ของ modular attention scopes แทนที่จะเป็น monolithic graphs
ในตอนนี้ Nano-vLLM เสนอทางเลือกที่น่าสนใจสำหรับนักพัฒนาที่ต้องการประสิทธิภาพเทียบเท่า vLLM โดยไม่มี overhead โปรเจกต์นี้สะท้อน API ของ vLLM ด้วยความแตกต่างเพียงเล็กน้อย ทำให้เป็น drop-in replacement สำหรับหลายกรณีการใช้งาน ในขณะที่ให้ความโปร่งใสและความสามารถในการดูแลรักษาที่ตัวเดิมได้สูญเสียไปตามกาลเวลา
อ้างอิง: Nano-vLLM
