vLLM - 设计 - 与 Hugging Face 的集成
vLLM与Hugging Face集成机制解析:通过vllm serve命令部署模型时,vLLM会从Hugging Face模型库或本地路径加载配置文件(config.json)、分词器和模型权重。核心流程包括检查模型路径、加载配置、确定模型架构、应用必要的配置补丁,并最终初始化模型类。vLLM优先支持safetensors格式权重,同时依赖Hugging Face的AutoConfig和Auto
与 Hugging Face 的集成
本文档介绍了 vLLM 如何与 Hugging Face 库集成。我们会一步步讲解当你运行 vllm serve
时,底层发生了什么。
假设我们要通过运行 vllm serve Qwen/Qwen2-7B
来部署热门的 Qwen 模型。
-
model
参数是Qwen/Qwen2-7B
。vLLM 会检查是否存在对应的配置文件config.json
。实现见 代码片段。流程如下:- 如果
model
参数是本地路径,vLLM 会直接从该路径加载配置文件。 - 如果
model
参数是 Hugging Face 的模型 ID(即用户名+模型名),vLLM 会优先尝试从 Hugging Face 的本地缓存读取配置文件,此时model
作为模型名,--revision
作为版本号。关于 Hugging Face 缓存机制,请参考 官网说明。 - 如果
model
参数是 Hugging Face 的模型 ID,但在缓存中找不到,vLLM 会从 Hugging Face 模型库下载配置文件。实现见 此函数。输入参数包括model
(模型名)、--revision
(版本)、环境变量HF_TOKEN
(访问模型库的 token)。在本例中,vLLM 会下载 config.json。
- 如果
-
确认模型存在后,vLLM 加载其配置文件并转为字典。实现见 代码片段。
-
接下来,vLLM 会检查配置字典中的
model_type
字段,并据此生成要使用的 config 对象。部分model_type
vLLM 直接支持,详见 支持列表。如果model_type
不在列表中,vLLM 会调用 AutoConfig.from_pretrained 加载 config 类,参数包括model
、--revision
和--trust_remote_code
。注意: -
随后 vLLM 会对 config 对象应用一些历史补丁(多与 RoPE 配置相关),实现见 代码片段。
-
最后,vLLM 会定位到要初始化的模型类。vLLM 使用 config 对象中的
architectures
字段确定要初始化的模型类,并在其注册表中查找架构名到模型类的映射。如果未在注册表中找到,则说明 vLLM 不支持该模型架构。对于Qwen/Qwen2-7B
,architectures
字段为["Qwen2ForCausalLM"]
,对应 vLLM 代码中的 Qwen2ForCausalLM 类。此类会根据各种配置初始化自身。
除此之外,vLLM 还依赖 Hugging Face 的两项内容:
-
分词器(Tokenizer):vLLM 使用 Hugging Face 的分词器对输入文本分词。分词器通过 AutoTokenizer.from_pretrained 加载,参数为
model
(模型名)和--revision
(版本)。你也可以通过vllm serve
的--tokenizer
参数指定用其它模型的分词器,相关参数还有--tokenizer-revision
和--tokenizer-mode
。具体含义请查阅 Hugging Face 文档。该逻辑见 get_tokenizer 函数。分词器获取后,vLLM 会在 get_cached_tokenizer 内缓存一些代价较大的属性。 -
模型权重:vLLM 从 Hugging Face 模型库下载模型权重,参数为
model
(模型名)和--revision
(版本)。vLLM 提供--load-format
参数控制下载文件类型。默认优先加载 safetensors 格式权重,若无则回退到 PyTorch bin 格式。你也可以用--load-format dummy
跳过权重下载。- 推荐使用 safetensors 格式,其在分布式推理中高效且不涉及任意代码执行。详见 safetensors 格式文档。实现见 相关代码。注意:
至此 vLLM 与 Hugging Face 的集成过程结束。
总结:vLLM 会从 Hugging Face 模型库或本地目录读取 config.json
配置文件、分词器和模型权重。它使用来自 vLLM、Hugging Face transformers,或模型仓库的 config 类进行配置加载和模型初始化。
原文地址:https://docs.vllm.ai/en/latest/design/huggingface_integration.html
当前更新时间:2025-10-08
更多推荐
所有评论(0)