当前位置: 首页 > news >正文

【Ragflow】18.更好的推理框架:vLLM的docker部署方式

概述

看到不少人说“Ollama就图一乐,生产环境还得用vLLM”。

本文决定使用docker对vLLM进行部署,并解决模型配置中,IP地址的硬编码问题。

Ollama与vLLM风评比较

查询相关资料,Ollama与vLLM主要特点及对比情况如下[1]:

Ollama:轻量级本地大模型部署工具,面向个人用户和开发者,主打快速部署、低资源消耗和隐私保护。

vLLM:高性能大模型推理框架,由加州大学伯克利分校团队开发,专注生产级高并发、低延迟场景。

对比维度OllamavLLM
模型支持支持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-m3DeepSeek-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,  

相关文章:

  • Golang Event Bus 最佳实践:使用 NSQite 实现松耦合架构
  • JDBC与MyBatis全面解析:从基础到比较
  • 如何优雅的关闭线程池
  • 深度学习常见模块实现001
  • 为什么 Transformer 要使用多头注意力机制?
  • Log4j2远程命令执行(CVE-2021-44228)复现
  • 智能 GitHub Copilot 副驾驶® 更新升级!
  • Spring JDBC 与数据访问:从性能优化到事务协同
  • 如何实现一个构造函数继承另一个构造函数的属性和方法?给出ES5和ES6两种方式
  • 软件研发过程中的技术债
  • (Matlab)自动驾驶仿真 设计驾驶场景、配置传感器并生成合成 数据
  • #Liunx内存管理# 页面分配器是按照什么方向来扫描zone的?
  • 第一期第10讲
  • ShellScript脚本编程
  • C语言 - 深拷贝与浅拷贝详解
  • 【扩散模型连载 · 第 2 期】逆向扩散建模与神经网络的角色
  • Object.create(null)`和`{}`创建的对象有什么区别?
  • git提交规范
  • Linux的应用领域,测试与Linux,Linux的介绍,VirtualBox和Ubuntu的安装,VMware的安装和打开虚拟机CentOS
  • 密码学(二)流密码
  • 做品牌文化的网站/互联网销售平台
  • 自建网站怎么做后台管理系统/网站收录查询站长工具
  • 怎么在悉尼做网站/小红书如何引流推广
  • 网页设计与制作做网站/关键词优化和seo
  • 微信开发在哪能看/百度seo优化多少钱
  • 会员管理系统免费版官方下载/抖音关键词优化排名