# Pico-vLLM：从零手写的工业级LLM推理引擎实现

> 一个个人学习项目如何完整复现vLLM和SGLang的核心技术栈，在单卡RTX 5070上实现97 tok/s的推理速度，并通过Prefix Caching和PD分离达到工业级性能。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-05-30T12:33:35.000Z
- 最近活动: 2026-05-30T12:50:26.196Z
- 热度: 143.7
- 关键词: LLM推理, vLLM, PagedAttention, Prefix Caching, Triton, CUDA优化, 分布式推理, Qwen, 学习项目
- 页面链接: https://www.zingnex.cn/forum/thread/pico-vllm-llm
- Canonical: https://www.zingnex.cn/forum/thread/pico-vllm-llm
- Markdown 来源: ingested_event

---

# Pico-vLLM：从零手写的工业级LLM推理引擎实现

在大型语言模型（LLM）推理领域，vLLM和SGLang代表了当前工业界的两大主流技术路线。vLLM以其PagedAttention架构闻名，而SGLang则通过RadixAttention实现了更细粒度的前缀缓存。对于希望深入理解这些系统内部机制的开发者来说，阅读源码往往难以建立完整的认知图景。Pico-vLLM项目正是为了解决这一痛点而生——它是一个从零手写的推理引擎，完整复现了vLLM和SGLang的核心技术栈，让学习者能够真正理解每一行代码背后的设计思想。

## 原作者与来源

- **原作者/维护者**: Koas-W
- **来源平台**: GitHub
- **原始标题**: Pico-vLLM
- **原始链接**: https://github.com/Koas-W/Pico-vLLM
- **发布时间**: 2026年5月30日
- **项目博客**: https://koas-w.github.io/

## 项目背景与定位

Pico-vLLM的定位非常明确——这是一个面向教学目的的个人学习项目。作者并非要打造一个取代vLLM的生产级产品，而是通过从零实现的方式，帮助开发者理解现代LLM推理引擎的核心组件是如何协同工作的。项目目标模型为Qwen2.5-1.5B（bfloat16），这是一个在中文社区广泛使用的开源模型，具有良好的代表性。

与许多仅停留在概念验证的项目不同，Pico-vLLM在性能上达到了令人惊讶的高度。在RTX 5070单卡上，它实现了97 tok/s的解码吞吐量，带宽利用率达到78%，甚至略微超过了vLLM在相同硬件配置下的95 tok/s表现。这一成绩证明了作者对底层优化技术的深刻理解。

## 核心技术架构解析

### 1. 模型实现层：全手写Qwen2.5架构

Pico-vLLM没有依赖Hugging Face的transformers库来加载模型，而是完全手写了Qwen2.5-1.5B的模型架构实现。这包括：

- **RoPE（旋转位置编码）**: 手动实现了位置编码的旋转计算
- **GQA（分组查询注意力）**: 支持多组查询共享键值对
- **SwiGLU激活函数**: 当前大模型主流的激活函数选择
- **RMSNorm归一化**: 替代LayerNorm的更高效归一化方案

在算子层面，项目实现了多项关键的kernel fusion优化，包括QKV融合、gate_up融合、以及rotate_half的原地计算。这些优化减少了内存访问次数，是达到高性能的关键。

### 2. Kernel层：基于Triton的自定义算子

项目使用Triton编写了全套自定义CUDA kernel，这是性能优化的核心战场：

- **PagedAttention Prefill Kernel**: 处理输入序列的并行计算
- **PagedAttention Decode Kernel**: 优化自回归生成的逐token计算
- **Fused RoPE + KV Cache Store**: 将位置编码与缓存存储融合
- **Fused RMSNorm + Residual Add**: 归一化与残差连接的融合
- **SwiGLU Fused**: 激活函数的融合实现

这些kernel的实现参考了Flash Attention系列工作的核心思想，通过减少HBM访问和最大化Tensor Core利用率来提升效率。

### 3. 调度与缓存：Continuous Batching与Prefix Caching

Pico-vLLM实现了工业级的请求调度系统：

**Continuous Batching（连续批处理）** 允许引擎在批次中动态添加新请求，而不必等待当前批次全部完成。配合FCFS（先来先服务）调度器，这显著提高了GPU利用率。

**Prefix Caching（前缀缓存）** 是项目的一大亮点。作者在vLLM的block级BlockManager基础上，实现了SGLang风格的token级radix tree索引。这种混合架构兼顾了存储效率和查找精度。

具体来说，项目实现了双层引用计数模型（lock_ref + logical_ref_count），将驱逐策略与实际缓存释放时机解耦。采用LRU驱逐策略配合lazy deletion机制，在2000-token共享前缀的测试场景下，实现了平均2.56倍、峰值3.45倍的TTFT（首token时间）加速。

### 4. 分布式推理：Tensor Parallelism与PD分离

项目支持完整的分布式推理能力：

**Tensor Parallelism（张量并行）** 通过NCCL后端实现多卡间的张量分片计算，支持同步和异步两种通信模式。

**PD分离（Prefill-Decode分离）** 是更高级的特性。作者实现了异构并行度组合（如P阶段TP=2、D阶段TP=1，或相反配置），并解决了跨并行度的KV head重映射问题。通过PD分离，ITL（token间延迟）从约10ms降低到约2ms，实现了5.2倍的提升；尾部延迟从约50ms降低到约2ms，改善达25倍。

## 性能数据深度分析

### 消费级硬件表现

在RTX 5070（PCIe接口，bfloat16精度）上的测试显示：

| 指标 | Pico-vLLM | vLLM（同硬件） |
|------|-----------|---------------|
| 解码吞吐量 | 97 tok/s | 95 tok/s |
| 带宽利用率 | 78% | 77% |

这一结果表明，即使是学习项目，在充分优化后也能达到甚至超越成熟框架的性能。

### H200上的详细对比

在更高端的H200 GPU上，作者进行了与vLLM的全面对比测试。测试采用Flash Decode + Prefill优化，并发数为1，每个数据点取3次运行的最优值。

**解码吞吐量对比**（Pico-vLLM / vLLM）：

在输入长度64-512 token、输出长度16-1024 token的主流场景下，Pico-vLLM实现了1.05-1.12倍的吞吐量提升。只有在输入长度达到8192 token时，由于预填充阶段的优化差异，vLLM表现更优。

**首token延迟（TTFT）对比**：

| 输入长度 | Pico-vLLM | vLLM | 比值 |
|---------|-----------|------|------|
| 64 | 10.1ms | 8.5ms | 1.19x |
| 512 | 10.3ms | 8.5ms | 1.20x |
| 2048 | 14.9ms | 11.7ms | 1.28x |
| 8192 | 73.8ms | 44.8ms | 1.65x |

TTFT的差距主要源于预填充kernel的优化策略差异，这也是作者未来计划重点改进的方向。

## 开发工具与工程实践

Pico-vLLM不仅关注核心算法，也重视工程实践。项目包含：

**分层CI系统**：从环境检查、算子测试到单卡/多卡推理的完整测试链路，支持CPU-only环境的部分测试。

**标准Benchmark框架**：支持与vLLM、SGLang的端到端性能对比，输出统一的JSONL/CSV/Markdown/PNG报告。

**Profiling工具**：完整的nsys性能分析支持，以及跨硬件（5070 PCIe vs B200 NVLink）的对比数据。在Qwen2.5-1.5B模型约2000 token请求长度下，CPU开销仅占总执行时间的6%，显示了良好的CPU-GPU协同效率。

## 未来路线图

作者规划了清晰的发展路线：

- **TP通信异步化 + 层间通算重叠**：进一步降低通信延迟
- **PD传输后端替换为NIXL**：采用更高效的传输层
- **Scheduler的Chunked Prefill策略**：优化长输入的处理
- **Prefix共享block的写时复制（COW）**：提升缓存效率
- **GPU和CPU间的Offload驱逐策略**：支持更大规模的模型

## 总结与启示

Pico-vLLM项目向我们展示了一个重要的学习方法论：真正理解一个复杂系统，最好的方式是从零实现它。作者通过手写数万行代码，不仅完整复现了vLLM和SGLang的核心技术，还在某些场景下达到了超越原版的性能。

对于希望入门LLM系统开发的读者，Pico-vLLM提供了一个绝佳的学习路径。项目的代码结构清晰，文档完善，且每个组件都可以独立运行和测试。无论是想理解PagedAttention的工作原理，还是学习如何编写高性能Triton kernel，这个项目都值得深入研究。

更重要的是，Pico-vLLM证明了个人学习项目也能达到工业级水准。在AI基础设施领域，深入理解底层原理比单纯调用API更有长远价值。
