DeepSeek-R1 凭借其优秀的深度推理能力,一经推出便在 AI 市场掀起热潮。
然而,DeepSeek-R1 包含 671B 的模型参数,基于 FP8 的数据精度,权重显存消耗接近 700GB,单卡 96GB 显存的 GPU 卡,也需要 16 卡进行多卡部署(2 台 ecs.hpcpni3ln.45xlarge 实例),多机推理之间的数据传输效率也面临极大挑战。如何在保证模型性能的前提下,提升部署效率、降低推理成本,成为限制 DeepSeek-R1 大模型规模化部署及应用的关键挑战。
火山引擎 NVIDIA 合作方案:NVIDIA TensorRT-LLM 量化降低推理成本
为应对上述挑战,火山引擎与 NVIDIA 深度协同,推出基于 TensorRT-LLM 推理框架的 DeepSeek-R1 加速优化方案,通过 W4A8 量化技术实现性能突破,在大幅降低模型存储需求和计算复杂度的同时,最大限度的保留了模型精度:
-
4 位权重量化(W4):采用混合精度动态量化算法,在保留模型精度的前提下,将权重存储空间压缩至原来的二分之一左右; -
8 位激活量化(A8):激活参数数据精度选用 FP8,确保模型推理的精度;

基于该 TensorRT-LLM 的 W4A8 优化方案,可以在火山引擎 ecs.hpcpni3ln.45xlarge 实例规格上(包含 8 张 96GB 显存的 GPU)部署 DeepSeek-R1,相比非量化方案,在不影响模型本身效果的情况下(参照 MMLU 和 MATH-500 基准数据对比),量化方案的 Tokens 吞吐提升 100%,所需硬件资源及成本减半。
ECS 部署指引:三步实现高效落地
步骤一:环境准备
在正式部署 DeepSeek-R1 W4A8 模型推理服务前,需要先完成 ECS 云服务器的实例创建及环境准备。首先,进入火山引擎 ECS 控制台创建 ecs.hpcpni3ln.45xlarge 规格的云服务器(邀测实例规格,需开通白名单使用,欢迎联系客户经理申请);
为提高部署效率,系统镜像推荐选择预装 GPU 驱动的镜像(例如:Ubuntu 22.04 with GPU Driver 535.161.08 and doca)。
登录目标实例安装 Docker 等相关容器环境,如果有 Docker 环境可忽略 2~4 步骤;
确认 docker 环境及 runtime 可以根据以下命令,
root@iv-ydt4e4fh1cbw80bh8228:~# docker info | grep -i runtime
Runtimes: io.containerd.runc.v2 nvidia runc
Default Runtime: runc
安装步骤
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://mirrors.ivolces.com/docker/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.ivolces.com/docker/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
curl -s https://mirrors.ivolces.com/nvidia_all/ubuntu2204/x86_64/3bf863cc.pub | sudo apt-key add -
cat <<EOF >/etc/apt/sources.list.d/nvidia.list
deb http://mirrors.ivolces.com/nvidia_all/ubuntu2204/x86_64/ /
EOF
apt update
apt install nvidia-container-toolkit -y
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
docker pull ai-containers-cn-beijing.cr.volces.com/deeplearning/tensorrt-llm:quant_v3
ounter(lineounter(lineounter(linedocker run --gpus all -itd --net=host --shm-size=100g --ulimit memlock=-1 --ulimit stack=67108864 --privileged --ipc=host --security-opt seccomp=unconfined --cap-add=ALL -v /var/run/nvidia-topologyd/:/var/run/nvidia-topologyd/ ${IMAGE} /bin/bash
步骤二:模型量化准备
oniond download model DeepSeek-R1-W4AFP8
❝
oniond 是火山自研模型下载器,可使用 oniond list models 查看当前支持拉取的模型;
❞
a. 执行以下命令,通过 NVIDIA TensorRT Model Optimizer 工具生成 activations 的量化系数;
oniond download model DeepSeek-R1
PATH_OF_DEEPSEEK_R1=/llm-models/DeepSeek-R1/DeepSeek-R1
#安装ModelOpt
git clone https://github.com/NVIDIA/TensorRT-Model-Optimizer/ && cd modelopt
pip install "nvidia-modelopt[all]" -U --extra-index-url https://pypi.nvidia.com
#转化模型精度
python inference/convert.py --hf-ckpt-path $PATH_OF_DEEPSEEK_R1 --save-path ds_r1 --n-experts 256 --model-parallel 8 && cd ..
#准备激活文件
torchrun --nproc-per-node 8 --master_port=12346 ptq.py --model_path DeepSeek-V3/ds_r1 --config DeepSeek-V3/inference/configs/config_671B.json --quant_cfg FP8_DEFAULT_CFG --output_path ds_r1_fp8_per_tensor_calibration
b. 执行以下命令,完成 DeepSeek-R1 模型的权重量化与集成;
#/app/tensrrt_LLm/model.sh
#!/bin/bash
HF_MODEL_DIR=/path/to/DeepSeek-R1/
OUTPUT_DIR=/workspace/ckpt/
#这里act_scales.safetensorscongs从上述模型中获取
ACT_SCALES=/path/to/DeepSeek-R1-W4AFP8/act_scales.safetensors
#也可以从a步骤中获取文件,ACT_SCALES=ds_r1_fp8_per_tensor_calibration
if [ ! -d "convert_logs" ]; then
mkdir convert_logs
fi
pids=()
for i in 0 1 2 3 4 5 6 7
do
python examples/quantization/quantize_mixed_precision_moe.py --model_dir $HF_MODEL_DIR --output_dir $OUTPUT_DIR --act_scales $ACT_SCALES --parts 9 --rank $i > convert_logs/log_$i 2>&1 &
pids+=($!)
done
python examples/quantization/quantize_mixed_precision_moe.py --model_dir $HF_MODEL_DIR --output_dir $OUTPUT_DIR --act_scales $ACT_SCALES --parts 9 --rank 8 > convert_logs/log_8 2>&1
pids+=($!)
for pid in ${pids[@]}; do
wait $pid
done
echo "All processes completed!"
步骤三:性能评估及模型运行
除了 DeepSeek-R1 的模型量化以及部署,W4A8 量化后的模型效果也是我们关注的重点。我们基于 MMLU 和 MATH-500 两个基准测试进行比较,W4A8 量化版 DeepSeek-R1 的性能对比 FP8 数据精度的版本差异在 0.5% 以内;
完成模型以后,可以通过下面命令进行快速验证,证明模型的可用性:
python examples/pytorch/quickstart_advanced.py --model_dir $CKPT_PATH --tp_size 8 --moe_ep_size 8 --moe_tp_size 1
本文以 MMLU 测试集为例介绍了如何进行模型精度评估,执行以下命令下载 MMLU 的测试数据集,并完成模型精度的评测;
#下载数据集
wget https://people.eecs.berkeley.edu/~hendrycks/data.tar && tar -xf data.tar
#精度评估
trtllm-eval --model $CKPT_PATH --backend pytorch --tp_size 8 --ep_size 8 --kv_cache_free_gpu_memory_fraction 0.75 mmlu --dataset_path $PATH_TO_MMLU_DATA
#MMLU weighted average accuracy 86.88(14042)
同时,也可以通过以下命令来完成模型吞吐以及 TTFT、TPOT 等相关指标的性能评测;
#准备数据集
DS_R1_MODEL_PATH=/path/to/DeepSeek-R1
python /app/tensorrt_llm/benchmarks/cpp/prepare_dataset.py
--stdout --tokenizer ${DS_R1_MODEL_PATH}
token-norm-dist
--input-mean 1000 --output-mean 1000
--input-stdev 0 --output-stdev 0
--num-requests 2000 > /tmp/synthetic_1000_1000.txt
cat <<EOF > /workspace/extra-llm-api-config.yml
enable_attention_dp: false
pytorch_backend_config:
enable_overlap_scheduler: true
use_cuda_graph: true
cuda_graph_padding_enabled: trues
print_iter_log: true
EOF
trtllm-bench --model $CKPT_PATH --model_path $CKPT_PATH throughput --backend pytorch --max_batch_size 128 --max_num_tokens 1127 --dataset /tmp/synthetic_1000_1000.txt --tp 8 --ep 8 --kv_cache_free_gpu_mem_fraction 0.8 --extra_llm_api_options /workspace/extra-llm-api-config.yml --concurrency 128 --num_requests 640 --streaming --report_json /workspace/logs/mtp/bench_log_2node_bs128_ep8_tp16_conc128_aa_latency.json
执行以下命令,启动模型在线服务;
trtllm-serve $CKPT_PATH --host localhost --port 8000 --backend pytorch --max_batch_size 128 --max_num_tokens 3627 --tp_size 8 --ep_size 8 --kv_cache_free_gpu_memory_fraction 0.8 --extra_llm_api_options /workspace/extra-llm-api-config.yml
到这里,我们就正式完成了 DeepSeek-R1 模型的量化和部署,可以通过本地 curl 命令调用 API 来使用模型推理服务了。
curl -X POST http://0.0.0.0:8080/v1/chat/completions -H "Content-Type: application/json" -d
"model": "/path/to/model",
"messages": [
{
"role": "user",
"content": "请证明一下黎曼猜想"
}
],
"max_tokens": 100,
"temperature": 0.7
}
通过以上步骤指引,用户可以在火山 GPU 云服务器上实现 W4A8 量化版 DeepSeek-R1 的高效部署,有效降低 DeepSeek-R1 模型的部署门槛,在充分发挥 W4A8 量化技术带来的性能优势的同时,助力火山引擎的用户快速将先进的 AI 模型应用到实际业务中去。
❝
未来,火山引擎也将基于 GPU 云服务器的硬件加速能力,为火山引擎的客户持续提供从数据加载、模型训练和推理以及网络传输的全链路加速方案,助力业务在火山引擎的高速落地和部署加速。
❞