GPU服务器环境部署与大模型应用部署指南

一、环境准备与GPU驱动安装

1.1 更新系统并安装NVIDIA驱动

sudo apt update
sudo apt install nvidia-driver-535
更新系统库

重启后验证NVIDIA驱动是否安装成功:

nvidia-smi

二、Docker环境安装与配置

2.31 安装NVIDIA Container Toolkit

2.1.1 配置软件源
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
sudo mkdir -p /etc/apt/sources.list.d
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed "s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g" | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
2.1.2 添加GPG密钥
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
2.1.2 安装工具包
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

注意: 安装完成后需要重启系统以加载新的驱动。

sudo reboot

2.2 安装Docker

bash <(wget -qO- https://xuanyuan.cloud/docker.sh)
2.2.1 配置Docker运行时

编辑Docker配置文件 /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://iz027t67q3chj.xuanyuan.run",
    "https://iz027t67q3chj.xuanyuan.dev"
  ],
  "insecure-registries": [
    "iz027t67q3hj.xuanyuan.run",
    "iz027t67q3hj.xuanyuan.dev"
  ],
  "runtimes": {
    "nvidia": {
      "path": "nvidia-container-runtime",
      "runtimeArgs": []
    }
  },
  "default-runtime": "nvidia"
}
2.2.2 重启docker
sudo systemctl restart docker

2.6 验证Docker与GPU支持

sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu18.04 nvidia-smi

四、部署docker运行VLLM部署大模型

4.1 启动vLLM容器.

为了让MaxKB和vLLM能够互相通信,创建一个专用网络:

sudo docker network create maxkb-net

4.1 启动vLLM容器.

sudo docker run -d --gpus all \
  --name vllm \
  --network maxkb-net \
  --shm-size=32g \
  --restart always \
  -p 8000:8000 \
  -v /opt/models:/root/.cache/huggingface \
  -e VLLM_ATTENTION_BACKEND=XFORMERS \
  -e HUGGINGFACE_HUB_CACHE=/root/.cache/huggingface \
  vllm/vllm-openai:latest \
  --model deepseek-ai/DeepSeek-R1-Distill-Qwen-14B \
  --host 0.0.0.0 \
  --port 8000 \
  --tensor-parallel-size 2 \
  --max-model-len 32768 \
  --trust-remote-code \
  --dtype half \
  --gpu-memory-utilization 0.90

🐳 容器基础管理

  • sudo docker run: 创建并启动一个新的容器。
  • -d: 后台运行。容器启动后不会占用你的终端窗口,而是作为守护进程在后台跑。
  • --name vllm: 给容器起个名字叫 vllm。以后管理它(比如停止、查看日志)直接用这个名字就行,不用去查那串长长的 ID。
  • --restart always: 自动重启。如果容器因为报错挂了,或者服务器重启了,Docker 会自动把这个服务拉起来,保证服务一直在线。

🔗 网络配置 (关键点)

  • --network maxkb-net: 加入指定网络
    • 这意味着你的 vLLM 容器和 MaxKB 容器都在同一个叫 maxkb-net 的虚拟局域网里。
    • 好处:MaxKB 可以直接通过 http://vllm:8000 访问它,不需要走公网 IP,速度更快且更安全。
  • -p 8000:8000: 端口映射
    • 把容器内部的 8000 端口映射到服务器(宿主机)的 8000 端口。
    • 这样你不仅能通过内部网络访问,也能通过 http://你的IP:8000 从外部访问。

💾 存储与资源

  • --shm-size=32g: 共享内存大小
    • 设置为 32GB。这对 AI 模型非常重要,因为模型在处理数据时需要大量的共享内存,如果设置太小(默认通常只有 64MB),模型很容易报错崩溃。
  • -v /opt/models:/root/.cache/huggingface: 挂载目录
    • 把服务器上的 /opt/models 文件夹映射到容器里的 /root/.cache/huggingface
    • 作用:你下载的模型文件会保存在服务器的硬盘上。即使你把这个容器删了重建,模型文件还在,不用重新下载。

⚙️ 环境变量

  • -e VLLM_ATTENTION_BACKEND=XFORMERS: 指定使用 XFORMERS 库来加速注意力机制的计算(通常能提升推理速度)。
  • -e HUGGINGFACE_HUB_CACHE=...: 告诉 vLLM 把下载的模型缓存放到刚才挂载的那个目录里。

🧠 模型核心参数 (决定运行效果)

这部分是传给 vLLM 程序的具体指令:

  • --model deepseek-ai/DeepSeek-R1-Distill-Qwen-14B: 指定模型
    • 告诉程序去下载并运行这个具体的模型。
  • --host 0.0.0.0 --port 8000: 监听地址和端口。允许外部访问容器内的服务。
  • --tensor-parallel-size 2: 张量并行
    • 重点:这表示使用了 2 张显卡 来运行这个模型。
    • 如果你的服务器只有 1 张显卡,这里填 1;如果有 2 张或更多,填 2 可以分担显存压力,提高速度。
  • --max-model-len 32768: 上下文长度
    • 限制模型一次能处理的最大文本量(约 32k token)。设置太大容易爆显存,太小则无法处理长文档。
  • --trust-remote-code: 信任远程代码
    • 有些模型(如 DeepSeek)包含自定义的 Python 代码,必须加这个参数才能正常加载,否则启动会报错。
  • --dtype half: 半精度运行
    • 使用 FP16 格式。相比全精度,它能节省一半显存,且速度更快,是目前的主流选择。
  • --gpu-memory-utilization 0.90: 显存占用率
    • 告诉 vLLM 可以占用显卡 90% 的显存来放模型权重。留 10% 给系统和其他任务,防止显存溢出。

4.2 参数说明

  • --gpus all: 启用所有GPU
  • --shm-size=4g: 设置共享内存大小
  • -v /opt/models:/root/.cache/huggingface: 挂载模型缓存目录
  • --tensor-parallel-size 2: 张量并行度
  • --max-model-len 32768: 最大上下文长度
  • --gpu-memory-utilization 0.90: GPU内存利用率

安装完成后,可以使用 curl 命令向容器的 8000 端口发送一个聊天补全请求。

curl http://localhost:8000/v1/chat/completions \
 -H "Content-Type: application/json" \
 -d '{
   "model": "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
    "messages": [
     {"role": "user", "content": "你好,请做个自我介绍。"}
   ],
  "max_tokens": 100
 }'

成功标志:你将收到一个 JSON 格式的响应,其中 choices 字段包含了模型生成的文本内容。这表明整个服务

五、部署MaxKB应用

5.1 启动MaxKB容器

sudo docker run -d \
  --name maxkb \
  --network maxkb-net \
  --restart always \
  -p 8080:8080 \
  -v /opt/maxkb:/var/lib/postgresql/data \
  -e PYTHONUNBUFFERED=1 \
  1panel/maxkb

5.2 访问maxkb添加大模型参数

  • -p 8080:8080: 映射端口
  • -v /opt/maxkb:/var/lib/postgresql/data: 挂载数据目录

六、验证部署

6.1 检查容器运行状态

sudo docker ps

6.2 验证服务可用性

6.3 添加模型

  • URL: http://vllm:8000/v1 (通过第一步命令查到的 IP)
  • Key: sk-123456 (因为你没设密码,随便填个非空字符串即可)
  • 模型: deepseek-ai/DeepSeek-R1-Distill-Qwen-14B

6.4 创建知识库

6.5 创建智能体

七、注意事项

7.1 硬件要求

  • GPU: 推荐使用NVIDIA V100s或更高性能GPU
  • 内存: 至少32GB系统内存
  • 存储: 足够的磁盘空间存放模型文件

7.2 模型下载

首次运行时,模型会自动从HuggingFace下载,需要稳定的网络连接。

7.3 性能优化

  • 根据实际GPU数量调整--tensor-parallel-size参数
  • 根据内存大小调整--gpu-memory-utilization参数
  • 可根据需要调整--max-model-len参数

八、故障排除

8.1 GPU驱动问题

如果nvidia-smi命令无法执行,检查:

  • GPU驱动是否正确安装
  • 系统是否已重启
  • GPU硬件是否正常

8.2 Docker权限问题

如果遇到权限问题,可将用户加入docker组:

sudo usermod -aG docker $USER

8.3 网络连接问题

确保服务器能够访问外网,特别是HuggingFace模型仓库。


Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐