支持的模型#
vLLM 支持 HuggingFace Transformers 中的各种生成式 Transformer 模型。以下是 vLLM 当前支持的模型架构列表。在每个架构旁边,我们还列出了一些使用该架构的流行模型。
仅解码器语言模型#
架构 |
模型 |
示例 HuggingFace 模型 |
|
---|---|---|---|
|
Aquila & Aquila2 |
|
✅︎ |
|
Arctic |
|
|
|
Baichuan & Baichuan2 |
|
✅︎ |
|
BLOOM, BLOOMZ, BLOOMChat |
|
|
|
ChatGLM |
|
✅︎ |
|
Command-R |
|
|
|
DBRX |
|
|
|
DeciLM |
|
|
|
EXAONE-3 |
|
✅︎ |
|
Falcon |
|
|
|
Gemma |
|
✅︎ |
|
Gemma2 |
|
✅︎ |
|
GPT-2 |
|
|
|
StarCoder, SantaCoder, WizardCoder |
|
✅︎ |
|
GPT-J |
|
|
|
GPT-NeoX,Pythia,OpenAssistant,Dolly V2,StableLM |
|
|
|
InternLM |
|
✅︎ |
|
InternLM2 |
|
|
|
Jais |
|
|
|
Jamba |
|
✅︎ |
|
Llama 3.1,Llama 3,Llama 2,LLaMA,Yi |
|
✅︎ |
|
MiniCPM |
|
|
|
Mistral,Mistral-Instruct |
|
✅︎ |
|
Mixtral-8x7B,Mixtral-8x7B-Instruct |
|
✅︎ |
|
MPT,MPT-Instruct,MPT-Chat,MPT-StoryWriter |
|
|
|
Nemotron-3,Nemotron-4,Minitron |
|
✅︎ |
|
OLMo |
|
|
|
OPT,OPT-IML |
|
|
|
Orion |
|
|
|
Phi |
|
✅︎ |
|
Phi-3 |
|
|
|
Phi-3-Small |
|
|
|
Phi-3.5-MoE |
|
|
|
Persimmon |
|
|
|
Qwen |
|
|
|
Qwen2 |
|
✅︎ |
|
Qwen2MoE |
|
|
|
StableLM |
|
|
|
Starcoder2 |
|
|
|
Xverse |
|
备注
目前,vLLM 的 ROCm 版本仅支持 Mistral 和 Mixtral,上下文长度最高为 4096。
多模态语言模型#
架构 |
模型 |
模态 |
示例 HuggingFace 模型 |
|
---|---|---|---|---|
|
BLIP-2 |
图像E |
|
|
|
Chameleon |
图像 |
|
|
|
Fuyu |
图像 |
|
|
|
InternVL2 |
图像E+ |
|
|
|
LLaVA-1.5 |
图像E+ |
|
|
|
LLaVA-NeXT |
图像E+ |
|
|
|
LLaVA-NeXT-Video |
视频 |
|
|
|
MiniCPM-V |
图像+ |
|
|
|
PaliGemma |
图像E |
|
|
|
Phi-3-Vision, Phi-3.5-Vision |
图像E+ |
|
|
|
Pixtral |
图像+ |
|
|
|
Qwen-VL |
图像E+ |
|
|
|
Qwen2-VL(参见说明) |
图像+ / 视频+ |
|
|
|
Ultravox |
音频E+ |
|
备注
对于 openbmb/MiniCPM-V-2
,官方仓库目前尚不可用,因此我们目前需要使用一个分支(HwwwH/MiniCPM-V-2
)。有关更多详细信息,请参见:vllm-project/vllm#4087
备注
对于 LLaVA-NeXT-Video
和 Qwen2-VL
,最新版本的 huggingface/transformers
目前尚不可用,因此我们目前需要使用开发人员版本(21fac7abba2a37fae86106f87fcf9974fd1e3830
)。可以通过运行以下命令安装它:
pip install git+https://github.com/huggingface/transformers.git@21fac7abba2a37fae86106f87fcf9974fd1e3830
如果你的模型使用上述模型架构之一,你可以无缝地使用 vLLM 运行你的模型。否则,请参考 添加新模型 和 启用多模态输入 获取有关如何实现对你的模型的支持的说明。或者,你可以在我们的 GitHub 项目上提出问题。
小技巧
检查你的模型是否受支持的最简单方法是运行以下程序:
from vllm import LLM
llm = LLM(model=...) # Name or path of your model
output = llm.generate("Hello, my name is")
print(output)
如果 vLLM 成功生成文本,则表明你的模型受支持。
小技巧
要使用来自 ModelScope 的模型而不是 HuggingFace Hub,请设置环境变量:
$ export VLLM_USE_MODELSCOPE=True
并使用 trust_remote_code=True
。
from vllm import LLM
llm = LLM(model=..., revision=..., trust_remote_code=True) # Name or path of your model
output = llm.generate("Hello, my name is")
print(output)
模型支持策略#
在 vLLM,我们致力于促进第三方模型在我们生态系统中的集成和支持。我们的方法旨在平衡对鲁棒性的需求和支持广泛模型的实际限制。以下是我们管理第三方模型支持的方式:
社区驱动支持: 我们鼓励社区为添加新模型做出贡献。当用户请求对新模型的支持时,我们欢迎来自社区的拉取请求 (PR)。这些贡献主要根据它们生成的输出的合理性进行评估,而不是严格一致性,例如 transformers 中的实现。呼吁贡献: 来自模型供应商的 PR 将受到高度赞赏!
尽力保持一致性: 虽然我们旨在在 vLLM 中实现的模型与 transformers 等其他框架之间保持一定程度的一致性,但并非总是可行。加速技术和使用低精度计算等因素可能会导致差异。我们的承诺是确保实现的模型是功能性的,并产生合理的结果。
Issue Resolution and Model Updates: Users are encouraged to report any bugs or issues they encounter with third-party models. Proposed fixes should be submitted via PRs, with a clear explanation of the problem and the rationale behind the proposed solution. If a fix for one model impacts another, we rely on the community to highlight and address these cross-model dependencies. Note: for bugfix PRs, it is good etiquette to inform the original author to seek their feedback.
问题解决和模型更新: 我们鼓励用户报告他们在使用第三方模型时遇到的任何错误或问题。建议的修复方案应通过 PR 提交,并清楚地解释问题以及所提议解决方案的理由。如果一个模型的修复会影响另一个模型,我们依靠社区来突出显示并解决这些跨模型依赖关系。注意:对于 bug 修复 PR,良好的礼仪是通知原始作者以征求他们的反馈。
监控和更新: 对特定模型感兴趣的用户应监控这些模型的提交历史记录(例如,通过跟踪 main/vllm/model_executor/models 目录中的更改)。这种主动方法有助于用户了解可能影响他们使用的模型的更新和更改。
选择性关注: 我们的资源主要用于对用户兴趣和影响力较大的模型。使用频率较低的模型可能获得较少的关注,我们依靠社区在维护和改进方面发挥更积极的作用。
通过这种方式,vLLM 营造了一个协作环境,核心开发团队和更广泛的社区共同为我们生态系统中支持的第三方模型的稳健性和多样性做出贡献。
请注意,作为推理引擎,vLLM 不会引入新的模型。因此,vLLM 支持的所有模型在这方面都是第三方模型。