概述
看到不少人说“Ollama就图一乐,生产环境还得用vLLM”。
本文决定使用docker对vLLM进行部署,并解决模型配置中,IP地址的硬编码问题。
Ollama与vLLM风评比较
查询相关资料,Ollama与vLLM主要特点及对比情况如下[1]:
Ollama:轻量级本地大模型部署工具,面向个人用户和开发者,主打快速部署、低资源消耗和隐私保护。
vLLM:高性能大模型推理框架,由加州大学伯克利分校团队开发,专注生产级高并发、低延迟场景。
对比维度 | Ollama | vLLM |
---|---|---|
模型支持 | 支持Llama2、Mistral等20+主流开源模型,提供量化版本(如q4/q8) | 支持Llama、GPT-3等10+模型,原生适配HuggingFace生态 |
接口类型 | 提供REST API和命令行交互 | 兼容OpenAI API协议,支持gRPC/HTTP批量推理 |
扩展性 | 通过插件支持本地知识库增强 | 支持分布式推理、动态批处理和多GPU并行 |
单请求响应速度 | 中等(7B模型约5-10秒/请求) | 高速(7B模型约1-3秒/请求,PagedAttention优化) |
长文本处理 | 支持最大4K上下文,显存不足时易崩溃 | 支持16K+上下文,通过内存分页避免OOM |
多任务并发 | 单线程为主,多并发时延迟显著增加 | 支持100+并发请求,吞吐量达Ollama的5-24倍 |
资料[2]展示了一个实验数据:使用Qwen2.5–14B-Instruct
模型,vLLM 比 Ollama 取得了 10% 以上的提升(Ollama 约 25 token/sec vs vLLM 约 29 token/sec)
vLLM Docker部署
vLLM 支持源码部署、vllm serve部署、docker部署等多种部署方式。
为方便和其它容器进行统一管理,本文使用docker进行部署。
其它部署方式可参考vLLM文档。
vLLM文档:https://docs.vllm.ai/en/latest/getting_started/installation.html
1.模型下载
Ollama有自己的模型仓库,可以直接下载。vLLM 的模型则需要依托外部 modelscope、huggingface等这类模型仓库。
下面从 huggingface 中下载模型:
huggingface 模型仓库地址:
https://huggingface.co/models
以下载bge-m3
和DeepSeek-R1-Distill-Qwen-1.5B
模型为例,可运行以下的下载脚本:
import os
from huggingface_hub import snapshot_download
# 1. 设置镜像源(国内加速)
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
# 2. 定义模型列表(名称 + 下载路径)
models_to_download = [
{
"repo_id": "BAAI/bge-m3", # Embedding 模型
"local_dir": os.path.expanduser("./models/bge-m3"),
},
{
"repo_id": "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B", # LLM 模型
"local_dir": os.path.expanduser("./models/DeepSeek-R1-1.5B"),
}
]
# 3. 遍历下载所有模型
for model in models_to_download:
while True: # 断点续传重试机制
try:
print(f"开始下载模型: {
model['repo_id']} 到目录: {
model['local_dir']}")
snapshot_download(
repo_id=model["repo_id"],
local_dir=model["local_dir"],
resume_download=True, # 启用断点续传
force_download=False,