vLLM框架基础入门与本地私有化部署

对开源大模型来说,虽然模型权重开源,但并不意味着这样的模型就可以开箱即用,而是需要一些框架来支撑其运行和推理。无论哪个公司旗下的模型,现在都在兼容同一个接入规范,即 OpenAI兼容接口,因为这种API规范几乎可以与任何SDK或者客户端无缝集成,所以对大模型部署框架而言,是否兼容OpenAI规范也就成为了衡量一个其是否成熟 、是否可以被广泛使用的重要指标。 所以大家都关注的问题就是:部署与OpenAI API规范兼容模型的最佳框架是什么?

如下所示,目前主流的大模型部署框架以llama.cpp、Ollama和Vllm为主,其各自项目在 Github 上的 Stars 增长曲线如下所示。其中 Ollama 的 Stars 增长曲线是断档式领先,而 llama.cpp 和 Vllm 的 Stars 增长曲线则相对平缓,处于一个稳步增长的趋势。

7186b77ac1db8b85d156ad6e71e72cdf

说明:

  • llama.cpp:纯c/c++实现,无依赖,性能高但上手难度大,适合深度定制优化;
  • Ollama:部署极简,支持多系统一键安装与单命令启动,原生兼容OpenAl APl,门槛极低,适合快速验证;
  • vLLM:聚焦性能与可扩展性,优化内存管理、批处理和张量并行,适用于生产环境高吞吐量场景;

一、vLLM框架整体概览

如果说 Ollama 的优势在于其简洁性,那么Vllm则是一个另辟蹊径、优先考虑性能和可扩展性的大模型部署框架,其核心的优化点在 高效内存管理、持续批处理功能和张量并行性,从而在生产环境中的高吞吐量场景中表现极佳,同时这也是为什么 VIlm 框架是目前最适用于企业真实生产环境部署的根本原因。

vLLM底层是基于Pytorch构建,其 Gtihub 开源地址为: https://github.com/vllm-project/vllm

75D227562D4D5166FAE7DE49B1732D79

从各种基准测试数据来看,同等配置下,使用 vLLM 框架与 Transtormer 等传统推理库相比,其吞吐量可以提高一个数量级,这归功手以下几个特性:

  • 高级GPU优化: 利用CUDA和PyTorch最大限度地提高 GPU 利用率 从而实现更快的推理速度。 Ollama 其实是对 CPU-GPU 的混合应用,但vllm 是针对纯 GPU 的优化。
  • 高级内存管理:通过PagedAttention算法实现对 KV cache 的高效管理,减少内存浪费,从而优化大模型的运行效率。
  • 批处理功能:支持连续批处理和异步处理,从而提高多个并发请求的吞吐量。
  • 安全特性:内置 API 密钥支持和适当的请求验证,不像其他完全跳过身份验证的框架。
  • 易用性: vLLM 与 Hugging Face 模型无缝集成,支持多种流行的大型语言模型,并兼容 OpenAI 的 API 服务器。

以上核心的优化点原理以及应用方法,我们将在接下来的课程进行详细的讲解和实践。本节课程我们需要先进行Vllm框架的私有化部署的学习。

vllm框架主要支持纯文本和多模态两种模式的模型,其中对支持的纯文本类语言模型可以在这里看到:

架构模型HF 模型示例LoRAPP
AquilaForCausalLM Aquila, Aquila2 BAAI/Aquila-7B, BAAI/AquilaChat-7B, etc. ✅︎ ✅︎
ArcticForCausalLM Arctic Snowflake/snowflake-arctic-base, Snowflake/snowflake-arctic-instruct, etc.   ✅︎
BaiChuanForCausalLM Baichuan2, Baichuan baichuan-inc/Baichuan2-13B-Chat, baichuan-inc/Baichuan-7B, etc. ✅︎ ✅︎
BloomForCausalLM BLOOM, BLOOMZ, BLOOMChat bigscience/bloom, bigscience/bloomz, etc.   ✅︎
BartForConditionalGeneration BART facebook/bart-base, facebook/bart-large-cnn, etc.    
ChatGLMModel ChatGLM THUDM/chatglm2-6b, THUDM/chatglm3-6b, etc. ✅︎ ✅︎
CohereForCausalLM, Cohere2ForCausalLM Command-R CohereForAI/c4ai-command-r-v01, CohereForAI/c4ai-command-r7b-12-2024, etc. ✅︎ ✅︎
DbrxForCausalLM DBRX databricks/dbrx-base, databricks/dbrx-instruct, etc.   ✅︎
DeciLMForCausalLM DeciLM Deci/DeciLM-7B, Deci/DeciLM-7B-instruct, etc.   ✅︎
DeepseekForCausalLM DeepSeek deepseek-ai/deepseek-llm-67b-base, deepseek-ai/deepseek-llm-7b-chat etc.   ✅︎
DeepseekV2ForCausalLM DeepSeek-V2 deepseek-ai/DeepSeek-V2, deepseek-ai/DeepSeek-V2-Chat etc.   ✅︎
DeepseekV3ForCausalLM DeepSeek-V3 deepseek-ai/DeepSeek-V3-Base, deepseek-ai/DeepSeek-V3 etc.   ✅︎
ExaoneForCausalLM EXAONE-3 LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct, etc. ✅︎ ✅︎
FalconForCausalLM Falcon tiiuae/falcon-7b, tiiuae/falcon-40b, tiiuae/falcon-rw-7b, etc.   ✅︎
FalconMambaForCausalLM FalconMamba tiiuae/falcon-mamba-7b, tiiuae/falcon-mamba-7b-instruct, etc. ✅︎ ✅︎
GemmaForCausalLM Gemma google/gemma-2b, google/gemma-7b, etc. ✅︎ ✅︎
Gemma2ForCausalLM Gemma 2 google/gemma-2-9b, google/gemma-2-27b, etc. ✅︎ ✅︎
Gemma3ForCausalLM Gemma 3 google/gemma-3-1b-it, etc. ✅︎ ✅︎
GlmForCausalLM GLM-4 THUDM/glm-4-9b-chat-hf, etc. ✅︎ ✅︎
GPT2LMHeadModel GPT-2 gpt2, gpt2-xl, etc.   ✅︎
GPTBigCodeForCausalLM StarCoder, SantaCoder, WizardCoder bigcode/starcoder, bigcode/gpt_bigcode-santacoder, WizardLM/WizardCoder-15B-V1.0, etc. ✅︎ ✅︎
GPTJForCausalLM GPT-J EleutherAI/gpt-j-6b, nomic-ai/gpt4all-j, etc.   ✅︎
GPTNeoXForCausalLM GPT-NeoX, Pythia, OpenAssistant, Dolly V2, StableLM EleutherAI/gpt-neox-20b, EleutherAI/pythia-12b, OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5, databricks/dolly-v2-12b, stabilityai/stablelm-tuned-alpha-7b, etc.   ✅︎
GraniteForCausalLM Granite 3.0, Granite 3.1, PowerLM ibm-granite/granite-3.0-2b-base, ibm-granite/granite-3.1-8b-instruct, ibm/PowerLM-3b, etc. ✅︎ ✅︎
GraniteMoeForCausalLM Granite 3.0 MoE, PowerMoE ibm-granite/granite-3.0-1b-a400m-base, ibm-granite/granite-3.0-3b-a800m-instruct, ibm/PowerMoE-3b, etc. ✅︎ ✅︎
GraniteMoeSharedForCausalLM Granite MoE Shared ibm-research/moe-7b-1b-active-shared-experts (test model) ✅︎ ✅︎
GritLM GritLM parasail-ai/GritLM-7B-vllm. ✅︎ ✅︎
Grok1ModelForCausalLM Grok1 hpcai-tech/grok-1. ✅︎ ✅︎
InternLMForCausalLM InternLM internlm/internlm-7b, internlm/internlm-chat-7b, etc. ✅︎ ✅︎
InternLM2ForCausalLM InternLM2 internlm/internlm2-7b, internlm/internlm2-chat-7b, etc. ✅︎ ✅︎
InternLM3ForCausalLM InternLM3 internlm/internlm3-8b-instruct, etc. ✅︎ ✅︎
JAISLMHeadModel Jais inceptionai/jais-13b, inceptionai/jais-13b-chat, inceptionai/jais-30b-v3, inceptionai/jais-30b-chat-v3, etc.   ✅︎
JambaForCausalLM Jamba ai21labs/AI21-Jamba-1.5-Large, ai21labs/AI21-Jamba-1.5-Mini, ai21labs/Jamba-v0.1, etc. ✅︎ ✅︎
LlamaForCausalLM Llama 3.1, Llama 3, Llama 2, LLaMA, Yi meta-llama/Meta-Llama-3.1-405B-Instruct, meta-llama/Meta-Llama-3.1-70B, meta-llama/Meta-Llama-3-70B-Instruct, meta-llama/Llama-2-70b-hf, 01-ai/Yi-34B, etc. ✅︎ ✅︎
MambaForCausalLM Mamba state-spaces/mamba-130m-hf, state-spaces/mamba-790m-hf, state-spaces/mamba-2.8b-hf, etc.   ✅︎
MiniCPMForCausalLM MiniCPM openbmb/MiniCPM-2B-sft-bf16, openbmb/MiniCPM-2B-dpo-bf16, openbmb/MiniCPM-S-1B-sft, etc. ✅︎ ✅︎
MiniCPM3ForCausalLM MiniCPM3 openbmb/MiniCPM3-4B, etc. ✅︎ ✅︎
MistralForCausalLM Mistral, Mistral-Instruct mistralai/Mistral-7B-v0.1, mistralai/Mistral-7B-Instruct-v0.1, etc. ✅︎ ✅︎
MixtralForCausalLM Mixtral-8x7B, Mixtral-8x7B-Instruct mistralai/Mixtral-8x7B-v0.1, mistralai/Mixtral-8x7B-Instruct-v0.1, mistral-community/Mixtral-8x22B-v0.1, etc. ✅︎ ✅︎
MPTForCausalLM MPT, MPT-Instruct, MPT-Chat, MPT-StoryWriter mosaicml/mpt-7b, mosaicml/mpt-7b-storywriter, mosaicml/mpt-30b, etc.   ✅︎
NemotronForCausalLM Nemotron-3, Nemotron-4, Minitron nvidia/Minitron-8B-Base, mgoin/Nemotron-4-340B-Base-hf-FP8, etc. ✅︎ ✅︎
OLMoForCausalLM OLMo allenai/OLMo-1B-hf, allenai/OLMo-7B-hf, etc.   ✅︎
OLMo2ForCausalLM OLMo2 allenai/OLMo2-7B-1124, etc.   ✅︎
OLMoEForCausalLM OLMoE allenai/OLMoE-1B-7B-0924, allenai/OLMoE-1B-7B-0924-Instruct, etc. ✅︎ ✅︎
OPTForCausalLM OPT, OPT-IML facebook/opt-66b, facebook/opt-iml-max-30b, etc.   ✅︎
OrionForCausalLM Orion OrionStarAI/Orion-14B-Base, OrionStarAI/Orion-14B-Chat, etc.   ✅︎
PhiForCausalLM Phi microsoft/phi-1_5, microsoft/phi-2, etc. ✅︎ ✅︎
Phi3ForCausalLM Phi-4, Phi-3 microsoft/Phi-4-mini-instruct, microsoft/Phi-4, microsoft/Phi-3-mini-4k-instruct, microsoft/Phi-3-mini-128k-instruct, microsoft/Phi-3-medium-128k-instruct, etc. ✅︎ ✅︎
Phi3SmallForCausalLM Phi-3-Small microsoft/Phi-3-small-8k-instruct, microsoft/Phi-3-small-128k-instruct, etc.   ✅︎
PhiMoEForCausalLM Phi-3.5-MoE microsoft/Phi-3.5-MoE-instruct, etc. ✅︎ ✅︎
PersimmonForCausalLM Persimmon adept/persimmon-8b-base, adept/persimmon-8b-chat, etc.   ✅︎
QWenLMHeadModel Qwen Qwen/Qwen-7B, Qwen/Qwen-7B-Chat, etc. ✅︎ ✅︎
Qwen2ForCausalLM QwQ, Qwen2 Qwen/QwQ-32B-Preview, Qwen/Qwen2-7B-Instruct, Qwen/Qwen2-7B, etc. ✅︎ ✅︎
Qwen2MoeForCausalLM Qwen2MoE Qwen/Qwen1.5-MoE-A2.7B, Qwen/Qwen1.5-MoE-A2.7B-Chat, etc.   ✅︎
StableLmForCausalLM StableLM stabilityai/stablelm-3b-4e1t, stabilityai/stablelm-base-alpha-7b-v2, etc.   ✅︎
Starcoder2ForCausalLM Starcoder2 bigcode/starcoder2-3b, bigcode/starcoder2-7b, bigcode/starcoder2-15b, etc.   ✅︎
SolarForCausalLM Solar Pro upstage/solar-pro-preview-instruct, etc. ✅︎ ✅︎
TeleChat2ForCausalLM TeleChat2 Tele-AI/TeleChat2-3B, Tele-AI/TeleChat2-7B, Tele-AI/TeleChat2-35B, etc. ✅︎ ✅︎
TeleFLMForCausalLM TeleFLM CofeAI/FLM-2-52B-Instruct-2407, CofeAI/Tele-FLM, etc. ✅︎ ✅︎
XverseForCausalLM XVERSE xverse/XVERSE-7B-Chat, xverse/XVERSE-13B-Chat, xverse/XVERSE-65B-Chat, etc. ✅︎ ✅︎
Zamba2ForCausalLM Zamba2 Zyphra/Zamba2-7B-instruct, Zyphra/Zamba2-2.7B-instruct, Zyphra/Zamba2-1.2B-instruct, etc.    

注意

当前 ROCm 版本的 vLLM 仅支持 Mistral 和 Mixtral 模型,且上下文长度上限为 4096。

其次是多模态模型,`Vllm`框架目前已经支持文本、图片、视频和音频四种模态的输入输出格式兼容规范,根据模型不同,支持以下模态组合:
  • Text 文本
  • Image 图像
  • Video 视频
  • Audio 音频

支持通过 + 连接的任意模态组合:

  • 例如 T + I 表示模型支持纯文本、纯图像及图文混合输入。

以 / 分隔的模态互斥:

  • 例如 T / I 表示模型支持纯文本或纯图像输入,但不支持图文混合输入。

关于如何传递多模态输入,请参阅此页面

重要信息

要为每个文本提示启用多个多模态项,需设置 limit_mm_per_prompt(离线推理)或 --limit-mm-per-prompt(在线服务)。例如允许每个文本提示传递最多 4 张图像:

离线推理:

llm = LLM(
    model="Qwen/Qwen2-VL-7B-Instruct",
    limit_mm_per_prompt={"image": 4},
)

在线服务:

vllm serve Qwen/Qwen2-VL-7B-Instruct --limit-mm-per-prompt image=4

关于生成式模型的使用详情,请参阅此页面。文本生成 (--task generate)

架构模型输入HF 模型示例LoRAPPV1
AriaForConditionalGeneration Aria T + I+ rhymes-ai/Aria   ✅︎ ✅︎
Blip2ForConditionalGeneration BLIP-2 T + IE Salesforce/blip2-opt-2.7b, Salesforce/blip2-opt-6.7b, etc.   ✅︎ ✅︎
ChameleonForConditionalGeneration Chameleon T + I facebook/chameleon-7b etc.   ✅︎ ✅︎
DeepseekVLV2ForCausalLM^ DeepSeek-VL2 T + I+ deepseek-ai/deepseek-vl2-tiny, deepseek-ai/deepseek-vl2-small, deepseek-ai/deepseek-vl2 etc.   ✅︎ ✅︎
Florence2ForConditionalGeneration Florence-2 T + I microsoft/Florence-2-base, microsoft/Florence-2-large etc.      
FuyuForCausalLM Fuyu T + I adept/fuyu-8b etc.   ✅︎ ✅︎
Gemma3ForConditionalGeneration Gemma 3 T + I+ google/gemma-3-4b-it, google/gemma-3-27b-it, etc. ✅︎ ✅︎ ⚠️
GLM4VForCausalLM^ GLM-4V T + I THUDM/glm-4v-9b, THUDM/cogagent-9b-20241220 etc. ✅︎ ✅︎ ✅︎
H2OVLChatModel H2OVL T + IE+ h2oai/h2ovl-mississippi-800m, h2oai/h2ovl-mississippi-2b, etc.   ✅︎ ✅︎*
Idefics3ForConditionalGeneration Idefics3 T + I HuggingFaceM4/Idefics3-8B-Llama3 etc. ✅︎   ✅︎
InternVLChatModel InternVideo 2.5, InternVL 2.5, Mono-InternVL, InternVL 2.0 T + IE+ OpenGVLab/InternVideo2_5_Chat_8B, OpenGVLab/InternVL2_5-4B, OpenGVLab/Mono-InternVL-2B, OpenGVLab/InternVL2-4B, etc.   ✅︎ ✅︎
LlavaForConditionalGeneration LLaVA-1.5 T + IE+ llava-hf/llava-1.5-7b-hf, TIGER-Lab/Mantis-8B-siglip-llama3 (see note), etc.   ✅︎ ✅︎
LlavaNextForConditionalGeneration LLaVA-NeXT T + IE+ llava-hf/llava-v1.6-mistral-7b-hf, llava-hf/llava-v1.6-vicuna-7b-hf, etc.   ✅︎ ✅︎
LlavaNextVideoForConditionalGeneration LLaVA-NeXT-Video T + V llava-hf/LLaVA-NeXT-Video-7B-hf, etc.   ✅︎ ✅︎
LlavaOnevisionForConditionalGeneration LLaVA-Onevision T + I+ + V+ llava-hf/llava-onevision-qwen2-7b-ov-hf, llava-hf/llava-onevision-qwen2-0.5b-ov-hf, etc.   ✅︎ ✅︎
MiniCPMO MiniCPM-O T + IE+ + VE+ + AE+ openbmb/MiniCPM-o-2_6, etc. ✅︎ ✅︎ ✅︎
MiniCPMV MiniCPM-V T + IE+ + VE+ openbmb/MiniCPM-V-2 (see note), openbmb/MiniCPM-Llama3-V-2_5, openbmb/MiniCPM-V-2_6, etc. ✅︎ ✅︎ ✅︎
MllamaForConditionalGeneration Llama 3.2 T + I+ meta-llama/Llama-3.2-90B-Vision-Instruct, meta-llama/Llama-3.2-11B-Vision, etc.      
MolmoForCausalLM Molmo T + I+ allenai/Molmo-7B-D-0924, allenai/Molmo-7B-O-0924, etc. ✅︎ ✅︎ ✅︎
NVLM_D_Model NVLM-D 1.0 T + I+ nvidia/NVLM-D-72B, etc.   ✅︎ ✅︎
PaliGemmaForConditionalGeneration PaliGemma, PaliGemma 2 T + IE google/paligemma-3b-pt-224, google/paligemma-3b-mix-224, google/paligemma2-3b-ft-docci-448, etc.   ✅︎ ⚠️
Phi3VForCausalLM Phi-3-Vision, Phi-3.5-Vision T + IE+ microsoft/Phi-3-vision-128k-instruct, microsoft/Phi-3.5-vision-instruct, etc.   ✅︎ ✅︎
Phi4MMForCausalLM Phi-4-multimodal T + I+ / T + A+ / I+ + A+ microsoft/Phi-4-multimodal-instruct, etc. ✅︎    
PixtralForConditionalGeneration Pixtral T + I+ mistralai/Mistral-Small-3.1-24B-Instruct-2503, mistral-community/pixtral-12b, etc.   ✅︎ ✅︎
QwenVLForConditionalGeneration^ Qwen-VL T + IE+ Qwen/Qwen-VL, Qwen/Qwen-VL-Chat, etc. ✅︎ ✅︎ ✅︎
Qwen2AudioForConditionalGeneration Qwen2-Audio T + A+ Qwen/Qwen2-Audio-7B-Instruct   ✅︎ ✅︎
Qwen2VLForConditionalGeneration QVQ, Qwen2-VL T + IE+ + VE+ Qwen/QVQ-72B-Preview, Qwen/Qwen2-VL-7B-Instruct, Qwen/Qwen2-VL-72B-Instruct, etc. ✅︎ ✅︎ ✅︎
Qwen2_5_VLForConditionalGeneration Qwen2.5-VL T + IE+ + VE+ Qwen/Qwen2.5-VL-3B-Instruct, Qwen/Qwen2.5-VL-72B-Instruct, etc. ✅︎ ✅︎ ✅︎
UltravoxModel Ultravox T + AE+ fixie-ai/ultravox-v0_5-llama-3_2-1b ✅︎ ✅︎ ✅︎

多模态模型在源码中对模型的集成文件中去匹配:https://github.com/vllm-project/vllm/tree/main/vllm/model_executor/models

模型类别模型名称对应 .py 文件备注
视觉语言 (VLM) LLaVA 系列 llava.py / llava_next.py 开源视觉-语言模型,包含多个变种
视觉语言 (VLM) DeepSeek-VL deepseek_vl2.py DeepSeek 的多模态版本
视觉语言 (VLM) InternVL internvl.py 上海 AI Lab 的多模态模型
视觉语言 (VLM) Qwen-VL qwen2_5_vl.py / qwen2_vl.py 通义千问的视觉多模态版本
视觉语言 (VLM) Phi-3 / Phi-4 phi3v.py / phi4mm.py 微软 Phi 系列的视觉/多模态版本
视觉语言 (VLM) Fuyu fuyu.py Adept 的多模态模型
视觉语言 (VLM) Idefics idefics2_vision_model.py Meta 的多模态模型
视觉语言 (VLM) Gemma gemma3_mm.py Gemma 的多模态扩展
视觉语言 (VLM) Florence-2 florence2.py 📷 微软的多模态模型
视觉语言 (VLM) BLIP blip.py / blip2.py 经典视觉-语言模型
视觉语言 (VLM) CLIP clip.py 经典对比学习模型
视觉语言 (VLM) SigLIP siglip.py Google 的多模态对比学习模型
视觉语言 (VLM) PaLI-Gemma paligemma.py Google 的多模态模型
视觉语言 (VLM) Molmo molmo.py 多模态数据处理模型
视觉语言 (VLM) Aya-Vision aya_vision.py Cohere Labs 的多模态模型
视觉语言 (VLM) GLM-4V glm4v.py GLM-4 的视觉版本
视觉语言 (VLM) H2O h2ovl.py H2O 的视觉-语言模型
视觉语言 (VLM) Skywork-R1V skyworkr1v.py 幻方多模态模型
视觉语言 (VLM) SmolVLM smolvlm.py 轻量级多模态模型
视觉语言 (VLM) Kimi-VL kimi_vl.py Kimi-VL 模型
视觉语言 (VLM) Moonvit moonvit.py 与 Kimi-VL 相关的多模态模型
视觉语言 (VLM) NVLM-D nvlm_d.py NVIDIA 的多模态模型
视觉语言 (VLM) Prithvi-EO prithvi_geospatial_mae.py 🗺️ 地理空间多模态模型 (NASA 合作)
语音语言 (Audio) Whisper whisper.py 🎧 OpenAI 语音-文本模型
语音语言 (Audio) Qwen-Audio qwen2_audio.py 通义千问的音频多模态版本
语音语言 (Audio) Phi-4 Audio phi4mm_audio.py Phi-4 的音频版本
通用多模态 LLaMA-4 mllama4.py 多模态版本的 LLaMA-4

二、Linux 操作系统部署vLLM

首先需要重点说明的是:vLLM框架仅支持Linux操作系统,官方并没有提供Windows的兼容版本。同时除了有操作的限制,对运行的Python版本也要求在Python3.9~ Python3.12 之间。这两个条件限制为部署vLLM的先决条件,即必
须满足才可以顺利使用vLLM启动大模型并提供推理服务。
这个策略非常符合企业级的部署策略,Vllm框架作为目前在实际生产环境中使用最为广泛的框架之一,其对Linux操作系统的支持,以及对Python版本的限制,都是为了确保在生产环境中能够稳定运行,并且能够提供高性能的推理服务。
这里我们采用的Linux操作系统是Ubuntu 24.04.4,同时配置一张4090 显卡来进行Vllm框架的部署和使用

image

查看显卡

image

Vllm工具已经通过编译并上传到PYPI仓库以及主流的包管理平台中,所以可以直接使用如pip、conda等工具进行快速安装。这里我们使用比较常用的conda包版本管理工具进行安装部署。

  • Step 1. 安装conda 包版本管理工具

首先需要检查当前使用的操作系统是否已经安装了conda包版本管理工具,可以通过conda --version命令查看Conda版本,如下图所示:

conda --version

如果出现Conda not found等报错,需要先安装Conda环境,再执行接下来的步骤。

  • Step 2. 创建Python虚拟环境

vllm官方要求的是Python 3.9~Python 3.12之间的版本,这里我们选择Python 3.12版本。执行如下命令进行创建:

conda create --name vllm python=3.12

此时耐心等待安装完成即可。待安装完成后,可以使用pip show vllm 命令查看vllm 框架的安装信息,可以明确看到当前安装的vllm 版本号。如下图所示:

  • Step 3. 激活虚拟环境

创建完虚拟环境后,使用Conda 激活虚拟环境,通过conda activate vllm 命令激活,如下图所示:

conda activate vllm 

接下来,使用pip 安装vllm 框架,执行如下命令:

pip install vllm

此时耐心等待安装完成即可。待安装完成后,可以使用pip show vllm 命令查看vllm 框架的安装信息,可以明确看到当前安装的vllm 版本号。如下图所示:

 

至此,Vllm框架的安装就已经完成了。整个过程就是非常常规的依赖包安装过程,唯一需要注意的就是Python版本的要求。
在安装完成Vllm框架后,就可以开始进行大模型推理服务的启动和调用了。Vllm框架提供了两种启动并调用大模型生成推理服务的方式,分别是离线推理和在线推理。其中:

  • 离线推理: 离线推理类似于使用Pytorch模块一样,当我们需要使用大模型生成推理服务时,先加载模型,然后使用输入数据运行该模型,并获取输出结果。
  • 在线推理: 在线推理类似于有一个服务器,可以先启动大模型,然后等待来自客户端的请求,一旦接收到请求,就会使用大模型生成推理服务,并返回结果,并且可以同时处理多个请求。

这是两种不同推理方式最本质的区别,毫无疑问在线推理是更加符合实际生产环境的。但为了帮助大家更好的理解Vllm框架,这里我们还是先从离线推理开始讲解,然后再重点讲解在线推理。

 

 
 
 
 
 
 

 

posted @ 2026-04-22 15:39  酒剑仙*  阅读(12)  评论(0)    收藏  举报