立志写出纯夏都能看懂的 nano-vllm 学习。
0. 环境配置
本篇作为 nano-vllm 学习讲解第 0 节,首先当然得把代码跑起来,不然纯粹白忙活。
我们选择使用 uv 作为环境搭建,uv 的安装就不多费口舌了,跟随官网文档很快搞定。
uv 配置搭建环境
1 | git clone git@github.com:GeeeekExplorer/nano-vllm.git |
先把代码 git clone 下来,uv 创建虚拟环境
1 | uv venv --python 3.10 |
然后先不要着急 uv sync ,注意下 pyproject.toml 文件,里面依赖了 flash-attn ,建议各位决定并安装好自己的 torch + cuda 版本后,去这个 prebuild wheels 里找到对应下载你想要的版本,然后自行安装,不然版本报错挺烦人的。
比如,我这里打算用 torch 2.10 + cuda 12.8,那么,先把 toml 中 flash-attn 注释掉,并在文件末尾加入相关的依赖,最终文件如下:
1 | [build-system] |
然后,uv sync 安装依赖,再在上面 prebuild wheels 中找到对应的 flash-attn 版本,这里是我们使用的是 2.8.3:
1 | uv pip install https://github.com/mjun0812/flash-attention-prebuild-wheels/releases/download/v0.7.16/flash_attn-2.8.3+cu128torch2.10-cp310-cp310-linux_x86_64.whl |
如此一来,整个环境就搭建完成了,接下来我们使用 Qwen3-0.6B 做一个简单的测试,权重下载方法:
1 | uv pip install huggingface_hub |
简单测试
打开 example.py ,把 path 修改成上面你下载的路径,
1 | def main(): |
然后,python main.py 就可以了。
还没那么简单,哈哈,由于 transformers 库 api 更新的原因,如果你直接 python example.py 是会看到下面报错的:
1 | [rank0]: File "Project/vllm/nano-vllm/nanovllm/models/qwen3.py", line 54, in __init__ |
想解决很简单,找到 /nanovllm/config.py ,在 AutoConfig 后把 rope_scaling 设置成 None ,即可,具体代码如下:
1 | import os |
这下再, python main.p 就真的 Okay 了。

说些什么吧!