在 Nas 的 Docker 里面装 vLLM

本文最后更新于 2025年12月11日 下午

前言

本文初创建于入职百度之前,写作背景为在声网的时候太多的同事咨询日常事务,且从不看文档,正值 RAG 方兴未艾,号称是大模型幻觉的通用解。

因此酷爱尝鲜的我就在本地 4070 上部署了 Ollama 跑了个 Deepseek 32B 蒸馏模型,看它一个个字的蹦,也不失为一种乐趣。

TODO 最近刚入职,太忙了,而且暂时也没钱买 5090D,同时公司的资源够我研究很久了。

后来啊,后来就迷失在 百度 半夜接客户电话的提心吊胆中惶惶不可终日。

再后来就是 “RAG 已死,长上下文窗口和 Agent 编排当立“,正如冒出的各个新技术一样,别的不说, Agent 横空出世直接让之前的 “通用解” 变成了笑话。

当然都是科普安装记录文,谁也别瞧不起谁,就将就挪用了。

当时的家用 PC

  • 操作系统:Ubuntu 24.10
  • CPU: AMD Ryzen 9 5950X 16-Core Processor
  • 内存:32GB
  • 显卡:NVIDIA Corporation AD104 [GeForce RTX 4070] (rev a1)

这是现在公司的电脑

  • 操作系统:fnOS 1.1.4 基于 Debian GNU/Linux 12 (bookworm)
  • CPU: Intel Core i9-14900KF 24核 32 线程
  • 内存:4 条共 64 GB 4200MHz DDR5
  • 显卡:NVIDIA GeForce RTX 4090

安装

操作系统 - fnOS

飞牛OS 是基于 Debian 打造的国产 NAS/桌面一体操作系统,很多的东西都打包好了,直接跑 AI 相关的工程完全胜任,太好用了以至于治好了我操作系统纠结症。

官网见 https://www.fnnas.com/

同理 Ubuntu 或者其他 Linux 发行版自然同理,同时附上老生常谈的: Windows, macOS 用户请自求多福。

显卡驱动集 - Nvidia-Driver-560

登录飞牛后台管理 GUI -> 应用中心 -> 驱动 -> Nvidia-Driver-560

直接在界面上点击安装即可。

Nas 安装驱动

安装完成后 SSH 登录,在 Host 直接运行 nvidia-smi ,能如上图所示识别到显卡信息即为成功。

nvidia-smi 全称是 NVIDIA System Management Interface, 用于监控和查询 GPU 状态。

Docker

如果 Host 没有,请自行安装。

1
2
docker --version
Docker version 28.5.2, build ecc6942

nvidia-container-toolkit

1
2
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

在这个过程中,可能会遇到 https://nvidia.github.io/libnvidia-container/gpgkey 相关的 源迁移而导致报错,请自行查阅 AI 解决。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    docker run --rm --runtime=nvidia --gpus all nvidia/cuda:12.3.0-base-ubuntu22.04 nvidia-smi
Thu Dec 11 02:13:12 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.28.03 Driver Version: 560.28.03 CUDA Version: 12.6 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4090 Off | 00000000:01:00.0 Off | Off |
| 0% 39C P8 8W / 450W | 1MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+

看到 container 里面能成功运行 nvidia-smi 并且和 Host 行为一致,表示着可以在 docker 里面几乎无损的直通驱动了。

关系
安装 nvidia-container-toolkit 会自动安装 libnvidia-container,无需额外关注。

官方 Docker 镜像

飞牛OS 自己的服务已经占用了 host 的 8000 端口,得换一个。

1
2
3
4
5
6
7
8
# 拉取vLLM镜像(适配CUDA 12.x)
sudo docker pull vllm/vllm-openai:latest
# 运行容器(指定GPU、端口、模型,7B模型需至少10GB显存)
sudo docker run --gpus all -p 18000:8000 \
vllm/vllm-openai:latest \
--model lmsys/vicuna-7b-v1.5 \ # 替换为你要运行的模型
--tensor-parallel-size 1 \ # 用几块GPU,按需改
--port 18000

在本地开发机上 curl 进行最简单的请求

1
2
3
4
5
6
7
8
❯ curl http://192.168.31.78:18000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "lmsys/vicuna-7b-v1.5",
"prompt": "Hello vLLM!",
"max_tokens": 50
}'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"id": "cmpl-a5b14ea50b0f422ca76d7200492adc33",
"object": "text_completion",
"created": 1765433551,
"model": "lmsys/vicuna-7b-v1.5",
"choices": [
{
"index": 0,
"text": " I'm sorry, I cannot provide a review of vLLM, beyond what I have already written above. However, if you have any questions about vLLM, or any other LL.M programs, I'd be happy to help",
"logprobs": null,
"finish_reason": "length",
"stop_reason": null,
"prompt_logprobs": null
}
],
"usage": {
"prompt_tokens": 6,
"total_tokens": 56,
"completion_tokens": 50,
"prompt_tokens_details": null
}
}

启动docker

可以看到,实际上打包成了一个 FastAPI 提供接口服务

至此, vLLM 的服务就安装完成,接下来就是直接学习了。

PS: 当前的 4090 显卡可以用更加强力的模型

docker run -d –name vllm-openai –gpus all –runtime=nvidia
-e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=compute,utility
-e HF_HUB_ENABLE_HF_TRANSFER=0
-p 18000:8000
vllm/vllm-openai:v0.6.6
–model deepseek-ai/DeepSeek-R1-Distill-Qwen-32B-AWQ
–quantization awq
–kv-cache-dtype fp8_e4m3
–tensor-parallel-size 1
–max-model-len 4096
–port 8000


在 Nas 的 Docker 里面装 vLLM
https://gou7ma7.github.io/2025/02/24/ai/@2025_nas_docker_vllm/
作者
Roy Lee
发布于
2025年2月24日
许可协议