vLLM2.md
一、引言vLLM V1 是 vLLM 团队基于 V0 的实践经验并参考工业界其它相关工作提出的最新架构,从 vLLM 0.8.x 版本开始,V1 Engine 将作为 vLLM 启动时的默认选项。 相比于 V0,vLLM V1 具有以下优势: 可读性:代码更加简洁易懂、更加模块化; 高性能:提供更好的推理性能,使用双进程异步处理不同的 CPU 操作,极大地降低了推理的时延和开销; 易扩展:可以轻松集成多样化的特性; 易用性:简化了配置,会默认开启一些特性,以提供更好的性能和体验。 下面,本文将揭秘 vLLM V1 从接收请求到算子执行的推理全流程(附超长流程图,画图不易,欢迎点赞 & 收藏~)。 二、整体概览在深入具体细节之前,让我们先从整体上认识下 V1 Engine 的推理流程。 下面是 vLLM 官方博客中提供的 V1 Engine 在线推理架构图。在 V1 中,vLLM 将不同类型的 CPU 密集型操作拆分到了两个相互独立的进程中,以便能够异步执行不同的 CPU 操作,减少了不同步骤之间相互等待的时间,因此能够更好地压榨硬件的计算性能。 Process 0...
vLLM1
一、引言vLLM 是目前最流行的大模型推理框架之一,凭借着 PagedAttention 等核心技术在工业界广泛落地。然而,作为一个高速迭代的大型开源项目,vLLM 的代码库庞大、模块繁多,对新贡献者来说上手成本极高——光是读懂一个 Feature 的实现路径,往往就需要数天时间。 随着 Coding Agent 越来越普及,在参与 vLLM 社区开发的过程中,我开始尝试使用 Claude Code 来辅助日常工作:读代码、写测试、做 Code Review、分析 Issue 等,发现效果还不错。相比于纯“古法编程”,我的工作效率确实提升了不少。 因此,我整理了自己平时在 vLLM 社区工作的 Workflow 以及一些常用的 Skill,放到了 vllm-dev-skills 这个仓库中,分享给同样想做 or 正在做 vLLM 社区贡献的朋友。 注意:从这里开始,以下内容都是 AI 生成的(Co-authored-by: Calude Code)。_(:3 ⌒゙)_ 二、项目介绍这个仓库按开发流程将 10 个 Skill 分为三大类: 123vllm-dev-skills/...
reStructuredText 学习笔记
reStructuredText 学习笔记官方网站 Sphinx Sphinx 文档配置 sphinx_rtd_theme Read the Docs 入门教程 Learn reStructureText sphinx 文档规范与模板 赵子清技术文章 环境搭建安装依赖: 123456Sphinxsphinx-autobuildsphinx-rtd-themerecommonmarksphinxext-remoteliteralincludesphinx-copybutton 执行命令: 12sphinx-quickstartmake html 双击 build 目录下的 index.html 即可以在浏览器中查看效果。 也可以在 VSCode 中实时预览 .rst 文件,需要添加以下配置: 1234{ "esbonio.sphinx.confDir": "conf.py文件所在的文件夹", "restructuredtext.linter.run": "off"}...
SO PRs
SO PRsPR1: platform 重构interface.py: 1234567class Platform: @classmethod def supports_structured_output(cls) -> bool: """ Returns whether the current platform can support structured output. """ return False cpu.py / cuda.py / hpu.py / neuron.py / rocm.py / xpu.py: return True tpu.py: 12345class TPUPlatform: @classmethod def supports_structured_output(cls) -> bool: logger.warning("Structured output is not s...
SHM
SHMShared Memory = 多个进程/设备可以“直接访问同一块内存”的机制。 普通进程通信(非 SHM):进程 A → 拷贝 → 内核 → 拷贝 → 进程 B(数据被复制多次); Shared Memory:进程 A ↔ 同一块内存 ↔ 进程 B(没有中间 copy)。 SHM 在不同层的含义: 操作系统:POSIX / System V SHM。OS 分配一块内存,映射到多个进程的虚拟地址空间。特点:零拷贝(进程间)、需要同步机制(锁、信号量)。比如:from multiprocessing import shared_memory; GPU / CUDA:GPU SM 内部的片上共享内存,给 thread block 用。特点:超快(比 global memory 快很多)。比如:__shared__ float buf[256]; 容器 / Docker:是一个 tmpfs(内存文件系统),用来做进程间共享内存。比如 docker run --shm-size=8g,对应 /dev/shm。 在 vLLM ...
SGLang EPD
SGLang EPDMooncake Transfer EngineMooncakeTransferEngine: 封装 from mooncake.engine import TransferEngine 的 API: 初始化; 内存注册; 数据传输。 通过 engine = init_mooncake_transfer_engine() 对外暴露初始化接口。 EPD using mooncake: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104# encoder_transfer_backend == "mooncake"class MMEncoder: def __init__(...):...
Reasoning Output
Reasoning Output基本概念Reasoning Models推理模型,顾名思义指具备推理能力的大语言模型(如:DeepSeek-R1),目前业内有“Understanding Reasoning LLMs”、“Reasoning models”、“Reasoning LLMs”等多种说法。 两大特点: 复杂任务/场景适应性强:推理模型尤其擅长将复杂问题/任务分解后,高度还原人类的思维过程(如尝试和验证不同的方法,直至找到最佳解决方案,输出结果),这种方式可能导致推理时间延长,但在理解和处理复杂的任务场景时,成功率和精准度却能成倍增长。而且通过多场景的强化学习,大模型在新问题中的泛化能力和鲁棒性也更好; 可解释性更强:相比以往直接输出答案,推理模型还会详细、分步骤给出推理过程,用来解释为什么会给出这样的答案。虽然最终的答案可能和通用大模型直接生成的答案类似,但因为推理过程公开透明,使得一定程度上能打破大众对大模型“黑盒”问题的顾虑,推理模型生成的答案,可信度与可解释性也因此大幅增强。此外,即便输出结果有偏差,通过检查和纠正推理步骤,也能更快发现问题...
RDMA
RDMA基本原理RDMA 本质:“zero-copy + 远程内存访问”。 zero-copy? 指数据从源头到目的地,中间不经过 CPU 内存的“中转拷贝”。 传统路径:GPU A -copy-> CPU 内存 -socket send-> 内核 buffer -网络-> 对端内核 buffer -> CPU 内存 -copy-> GPU B; zero-copy:GPU A memory -> GPU B memory,数据不经过 CPU 内存,CPU 只负责“发指令”,数据由 DMA / RDMA NIC / GPU copy engine 直接搬运。 zero-copy 并不是“完全没有 copy”,而是:copy 仍然发生,但不经过 CPU 和额外 buffer。 DMA(Direct Memory Access):Device 直接读写内存,不经过 CPU(CPU 不参与数据搬运); RDMA(Remote Direct Memory Access):机器 A 内存 -> 机器 B 内存,绕过 CP...
Profiling 分析指南
Profiling 分析指南Ascend NPU + MindStudio Insight关键文件: trace_view.jsonkernel_details.csvop_stastic.csv kernel_details.csv 分析指南: 冻结首行,start time 排序,只看一个 layer 的数据。数量比较多的 stream id 就是“主流”,其它的是通信流、共享专家流(实现计算通信并行)。静态/动态算子。Duration(优化目标):尽量让算子达到计算 bound,减少访存 bound -> 判断优化方向。判断性能瓶颈:每个算子的时间除以整个 layer 的时间,再转换为百分比的形式 -> 判断优化重点。 trace_view.json 分析指南: 一般不用关注 CANN 这一层。算子的实际执行时间主要看 Ascend Hardware 这一层。AI Core Freq:当芯片温度比较高时,可能会出现降频,导致计算性能下降。 CV 并行:cube 和 vector 是相互独立的计算单元,可以放到两条流上并行计算(但是会争访存带宽)。 bu...
LLM 学习项目
LLM 学习项目KuiperLLama 采用最新的 C++ 20 标准去写代码,统一、美观的代码风格,良好的错误处理; 优秀的项目管理形式,我们采用 CMake + Git 的方式管理项目,接轨大厂; 授人以渔,教大家怎么设计一个现代 C++ 项目,同时教大家怎么用单元测试和 Benchmark 去测试验证自己的项目; CPU 算子和 CUDA 双后端实现,对时新的大模型(LLama3 和 Qwen 系列)有非常好的支持。 项目地址:https://github.com/zjhellofss/KuiperLLama。 lightllm推荐用 lightllm 这个项目学习 Triton for LLM,它是一个纯 python 的 LLM 推理服务框架,用 Triton 实现了各类 LLM 需要的 layer。 项目地址:https://github.com/ModelTC/lightllm。 Material for gpu-mode lectures如何系统地学习CUDA?这个课程算是比较全面的,像 profile、triton、cutlass、FlashAttention...