大模型入门(8)——vLLM框架
vLLM是什么:一个开源的高性能大模型推理与服务框架,不是模型本身。
它做什么:把本地或云端的 Hugging Face 模型加载到显卡上,提供 OpenAI 兼容的 /v1 接口;支持流式输出、连续批处理、高并发、KV Cache 优化(PagedAttention),吞吐量高、延迟低。
适用场景:服务器端部署(多 GPU/高并发),需要通过“OpenAI 风格”的 HTTP API 对外提供推理服务。
和出现的问题的关系:我的客户端只是调用 OpenAI 兼容接口,不会直接加载权重。若想用本地权重 /Data/public/Qwen3-8B,需要先用 vLLM(或同类服务)把模型“挂起来”,在端口(如 12345)暴露 /v1;否则就改去连已有的服务(比如本机已运行的 Ollama 11434)。
和 Ollama 对比:Ollama 更偏简易/桌面或单机体验;vLLM 更偏服务器/数据中心场景,追求更高并发与吞吐。
写这篇文章主要是因为在服务器上跑vtuber的时候,我的配置是本地权重/Data/public/Qwen3-8B,但是运行的时候出现了如下问题;
2025-08-24 17:03:12 | ERROR | src.open_llm_vtuber.agent.stateless_llm.openai_compatible_llm:chat_completion:201 | Error calling the chat endpoint: Connection error. Failed to connect to the LLM API.
后来发现原因在于我配置上连接的是12345端口,配置里的 openai_compatible_llm 指向 http://localhost:12345/v1,但我自己机器上 12345 端口没有任何服务在监听,所以客户端连不上。并不是因为无法访问 /Data/public/Qwen3-8B
openai_compatible_llm 是“OpenAI 风格的HTTP客户端”,客户端不会直接加载本地权重目录,它只会向base_url指定的HTTP服务发送请求,因此需要连接一个已经启动的“OpenAI 兼容推理服务”(如 vLLM、Ollama、LM Studio、TGI 等)。把 model 配成本地路径不会让客户端直接加载权重;必须先有服务进程把这组权重加载起来并对外暴露 /v1
之前vLLM把模型“挂起来”,在端口12345暴露/v1,但是现在他那边没挂,所以没有服务在跑,所以报“连接失败”。所以理论上解决方案有两个:
1.用服务器提供的Ollama模型
2.我自己起一个推理服务(vLLM/TGI)
方案一可行,但是得改配置文件,之后合并起来也会比较麻烦,所以没选
方案二的话只需要我在终端输入指令让服务器起一个vLLM服务就行
1.安装vllm : pip install -U vllm --pre --extra-index-url https://wheels.vllm.ai/nightly
2.执行指令:CUDA_VISIBLE_DEVICES=0 vllm serve /Data/public/Qwen3-8B --api-key genshin --seed 0 --port 12345 --max-model-len 40000 --trust-remote-code --enable-auto-tool-choice --tool-call-parser hermes &
openai_compatible_llm 实际上是一个集成和协调平台,连接和协调各种外部模型的服务
后面发现同时运行Qwen3-8B,asr,tts和Embedding模型会爆显存,所以限制一下Qwen3-8B的显存占用率
CUDA_VISIBLE_DEVICES=0 vllm serve /Data/public/Qwen3-8B --api-key genshin --seed 0 --port 12345 --max-model-len 40000 --trust-remote-code --enable-auto-tool-choice --tool-call-parser hermes --gpu-memory-utilization 0.6 &
这是一条API服务启动命令
CUDA_VISIBLE_DEVICES=4 vllm serve /Data/public/Qwen3-8B --api-key genshin --seed 0 --port 12345 --max-model-len 7000 --trust-remote-code --enable-auto-tool-choice --tool-call-parser hermes --gpu-memory-utilization 0.4 &