【LLM】测试 4 卡 4090D 部署 DeepSeek-R1 32b 模型并发速度

7 天前(已编辑)
/
10
1

【LLM】测试 4 卡 4090D 部署 DeepSeek-R1 32b 模型并发速度

0x00 vLLM 简介

vLLM 是一个快速且易于使用的库,用于 LLM 推理和服务。相比其他 LLM 框架,vLLM 具有更好的吞吐量,能处理大量并发请求。同时 vLLM 也支持了 HuggingFace、ModelScope 等模型站点,可以直接从里面下载模型并运行,部署非常方便。

0x01 环境搭建

通过查看 DeepSeek-R1 32B 模型在 HuggingFace 中整个权重文件的大小,初步判断显存占用在 65.54G 左右,而单卡 4090D 的显存为 24G,启动张量并行要求显卡数量是 2n2^n。因此,我们在 Autodl 上租了一个 4*4090D 的机器,具体配置如下:

GPU:NVIDIA GeForce RTX 4090 D(24GB) * 4
CPU:64 vCPU Intel(R) Xeon(R) Platinum 8481C
内存:320GB
硬盘:70G
运行环境:PyTorch(2.5.1)、Python(3.12)、Ubuntu(22.04)、Cuda(12.4)

Autodl 在租用新实例的时候可以直接选择 PyTorch 2.5.1 的预装环境,我们直接使用它来构建镜像。在创建完成后进入服务器,首先创建一个 vllm 环境:

# 创建一个新的叫 vllm 的环境
conda create -n vllm python=3.12
# 切换到 vllm 环境
conda activate vllm
# 安装 vllm
pip install vllm

vLLM 安装完成后,我们接下来要下载 DeepSeek-R1 32B 模型到服务器中,但是 Autodl 的系统盘很明显无法装下整个 32B 模型,只能放在其他盘中,所以要自定义一下模型的安装位置:

# VLLM_ASSETS_CACHE:缓存模型资产的位置
export VLLM_ASSETS_CACHE=/root/autodl-tmp/
# VLLM_CACHE_ROOT:vLLM 的缓存路径
export VLLM_CACHE_ROOT=/root/autodl-tmp/
# HF_HUB_CACHE:Hugging Face 的模型缓存路径
export HF_HUB_CACHE=/root/autodl-tmp/

0x02 并发量测试

配置完之后直接运行以下命令,vLLM 会自动从 HuggingFace 上下载对应的模型,并在 4 张显卡上启动张量并行运行模型,推荐用 screen 命令单开一个新的后台来运行这个命令:

# 用 screen 创建一个新的窗口命名为 vllm
screen -S vllm
# 在新开的 screen 窗口中切换到 vllm conda 环境
conda activate vllm
# 启动 32B 模型,设置模型最大长度为 100k,不然会出现显存不足的问题
vllm serve "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B" --tensor-parallel-size 4 --max-model-len 100000

用 Claude 3.7 写了一个并行测试脚本,放在 Github 上了:vllm-concurrency-test-script,测试得到 500 并发下结果如下:

======= Test Results =======
Concurrency level: 500
Successful requests: 500/500

Performance Metrics:
  Total time:35.24 seconds
  Average latency: 21.34 seconds
  Average token speed: 6.33 tokens/second
  Overall token generation speed: 1419.03 tokens/second
  P50 latency: 21.45 seconds
  P95 latency: 35.19 seconds
  P99 latency: 35.19 seconds
  Total output tokens: 50000

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...