本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。
本文介绍如何使用vLLM+DeepSeek+OpenWebUI搭建自己的智能助手,实现简单的问答和推理任务。前面已经介绍过基本环境的配置:GPU驱动的安装、NVLink&NVSwitch配置、容器化环境配置、模型权重下载等,本篇介绍模型的部署,这里以DeepSeek-R1-Distill-Qwen-32B模型为例。
vLLM是一个专注于LLM的高性能推理和服务框架,通过创新的PagedAttention机制和深度优化等技术,帮助用户高效的部署和运行大语言模型。
vLLM的安装有两种方式:pip安装和docker安装,这里以docker安装为例。
1、拉取vLLM镜像
docker pull vllm/vllm-openai
如果没有配置docker镜像加速,可能拉取失败:
配置docker镜像加速:
vi /etc/docker/daemon.json
可以看到拉取速度很慢,原因是镜像文件有21G,所以等待即可。
下载完21G:
这里需要注意拉取vLLM的版本和CUDA版本的对应关系:
| vLLM 镜像 TAG | 所需 CUDA 版本 |
|---|---|
| v0.9.2 | CUDA ≥ 12.8 |
| v0.8.2 | CUDA ≥ 12.4 |
CUDA版本是向后兼容的,但是不能跨大版本运行。
2、启动vLLM容器并加载模型
运行docker命令启动vLLM容器,
docker run -d \
--gpus all \
--restart unless-stopped \
--name deepseek-container \
--network host \
-v /data/DeepSeek/DeepSeek-R1-Distill-Qwen-32B:/model \
--ipc=host \
vllm/vllm-openai:latest \
--model /model \
--served-model-name deepseek-r1 \
--dtype half \
--api-key OPENWEBUI123 \
--tensor-parallel-size 8 \
--gpu-memory-utilization 0.8 \
--enable-prefix-caching \
--max-num-batched-tokens 2048 \
--max-model-len 131072
参数解释:
-d: 在后台运行容器。
--gpus all: 使用所有可用的 GPU。
--restart unless-stopped: 重启策略为除非手动停止,否则总是重启容器。
--network host:使用主机网络,等同在主机网络里面启动容器。
--name deepseek-container: 给容器命名为 deepseek-container
-v /data/DeepSeek/DeepSeek-R1-Distill-Qwen-32B:/model : 将主机上的模型目录挂载到容器内的 /model路径。
vllm/vllm-openai:latest: 使用的 Docker 镜像名称和标签。
-- ipc=host: 允许容器访问host的共享内
--model /model: 指定在容器内部使用的模型路径。
--served-model-name deepseek-r1: 设置对外提供服务时的模型名称。
--dtype half: 使用 float16数据类型,我的显卡必须添加这个。
--api-key OPENWEBUI123: 设置 API 密钥。
--tensor-parallel-size 8:Tensor 并行的数量,当多 GPU 分布式推理时使用,建议和GPU的数量一致。
--gpu-memory-utilization 0.8:显存使用率 推荐 0.8~0.95
--enable-prefix-caching:启用前缀缓存减少重复计算。
--max-num-batched-tokens 2048:限制单次批处理的总token数量。
--max-model-len 131072:支持的最大上下文长度 不要超过模型训练长度,定义模型可以处理的最大输入 + 输出 token 数量,该参数越大占用显存越大.
可以使用docker logs -f deepseek-container查看启动过程,如果启动失败,可以看到具体的报错信息,便于分析排查:
3、部署后测试
vLLM容器启动之后,可以使用curl命令来获取model信息:
测试一下推理问答:
同时容器日志里也能看到token的吞吐以及KV Cache的使用:
模型加载启动之后,可以看到GPU使用情况:
4、部署Open-WebUI
Open WebUI是一个开源的、可扩展的、功能丰富的自托管AI平台,旨在完全离线运行。它主要设计用于与大型语言模型(LLMs)进行交互,支持多种模型和API,提供了直观的图形用户界面,使得用户可以更方便地管理和运行模型。
Github 地址:
4.1 open-webui镜像拉取
docker pull
ghcr.io/open-webui/open-webui:cuda
4.2 服务启动
docker run -d \
-p 3000:8080 \
--name openwebui-container \
--network host \
--gpus all \
-e OPENAI_API_BASE_URL=http://localhost:8000/v1 \
-e OPENAI_API_KEYS=OPENWEBUI123 \
-e USE_CUDA_DOCKER=true \
ghcr.io/open-webui/open-webui:cuda
启动后,可以通过浏览器访问Open-WebUI:
4.3 模型配置
创建账号:
进入对话界面:
创建完,进入之后,模型已经自动连接:
可以直接进行对话:
进入管理员页面,进行配置:
如果没有自动连接,可以手动连接模型:
将 OpenAI API 和 Ollama API 关闭,前提如果你有这两个连接的话,可以开启。然后保留 直接连接 的开启
然后再次点击左下角进入设置:
模型ID 可以留空,会自动从 /v1/models 接口中获取。
保存后,点击左上角 新对话 , 即可看到默认选择了 DeepSeek-R1 模型
总结:
本文详细介绍了使用vLLM部署DeepSeek-R1-Distill-Qwen-32B模型,以及结合Open-WebUI对接模型,提供交互的图像界面,至此一个开源模型的本地化部署完成。
学习资源推荐
如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。
本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。