- 文档首页
GPU云服务器
GPU云服务器
最佳实践
AIGC实践
DeepSeek系列模型
HPC-单机部署DeepSeek-R1的W4A8方案
DeepSeek系列模型
HPC-单机部署DeepSeek-R1的W4A8方案
HPC-单机部署DeepSeek-R1的W4A8方案
本文主要介绍云平台与NVIDIA合作推出的针对DeepSeek-R1的优化方案以及在GPU云服务器上的部署指引,以降低部署成本、提升效率。
DeepSeek-R1凭借其优秀的深度推理能力,一经推出便在AI市场掀起热潮。然而,DeepSeek-R1包含671B的模型参数,基于FP8的数据精度,权重显存消耗接近700GB,即便使用单卡96GB显存的GPU卡,也需要16张卡进行多卡部署(2台ecs.hpcpni3ln.45xlarge实例),多机推理之间的数据传输效率也面临极大挑战。如何在保证模型性能的前提下,提升部署效率、降低推理成本,成为限制DeepSeek-R1大模型规模化部署及应用的关键挑战。
为应对上述挑战,云平台与NVIDIA深度协同,推出基于TensorRT-LLM推理框架的DeepSeek-R1加速优化方案,通过W4A8量化技术实现性能突破,在大幅降低模型存储需求和计算复杂度的同时,最大限度的保留了模型精度:
- 4位权重量化(W4):采用混合精度动态量化算法,在保留模型精度的前提下,将权重存储空间压缩至原来的二分之一左右。
- 8位激活量化(A8):激活参数数据精度选用FP8,确保模型推理的精度。
通过以下步骤指引,您可以在GPU云服务器上实现W4A8量化版DeepSeek-R1的高效部署,有效降低DeepSeek-R1模型的部署门槛,既充分展现W4A8量化技术具备的性能优势,又有助于将先进的AI模型应用于实际业务场景。
- 计算规格:ecs.hpcpni3ln.45xlarge
- 镜像:Ubuntu 22.04 with GPU Driver 535.161.08 and doca
docker info | grep -i runtime
- 若返回Runtime相关信息,表明已安装Docker,您可跳过安装和配置步骤,直接执行步骤f(拉取容器镜像并启动容器镜像服务)。
-
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 install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
- 执行以下命令,安装NVIDIA Container Toolkit。
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/ /
apt install nvidia-container-toolkit -y
- 执行以下命令配置Docker,使容器可以使用实例的GPU资源。
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
docker 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
方式一:直接通过Oniod工具下载量化后的模型文件
方式二:手动生成DeepSeek-R1的W4A8量化模型
为了提高部署效率,云平台已经完成了模型量化,并将量化后的模型预置到Oniond模型库,您可以直接通过Oniond工具执行以下命令快速下载模型文件。
Oniond是云平台自研的模型下载器,可使用oniond list models查看当前支持拉取的模型。
curl -fsSL https://mirrors.ivolces.com/extra-tools/ubuntu/GPG-KEY-system | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/volc-extra-tools.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/trusted.gpg.d/volc-extra-tools.gpg] http://mirrors.ivolces.com/extra-tools/ubuntu jammy main" > /etc/apt/sources.list.d/volctools.list && apt update && apt install -y onion-ai-data
oniond download model DeepSeek-R1-W4AFP8
您也可以通过以下步骤生成DeepSeek-R1的W4A8量化模型。
curl -fsSL https://mirrors.ivolces.com/extra-tools/ubuntu/GPG-KEY-system | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/volc-extra-tools.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/trusted.gpg.d/volc-extra-tools.gpg] http://mirrors.ivolces.com/extra-tools/ubuntu jammy main" > /etc/apt/sources.list.d/volctools.list && apt update && apt install -y onion-ai-data
- 执行以下命令,通过NVIDIA TensorRT Model Optimizer工具生成activations的量化系数。
oniond download model DeepSeek-R1
PATH_OF_DEEPSEEK_R1=/llm-models/DeepSeek-R1/DeepSeek-R1
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
- 执行以下命令,完成DeepSeek-R1模型的权重量化与集成。
HF_MODEL_DIR=/path/to/DeepSeek-R1/
OUTPUT_DIR=/workspace/ckpt/
ACT_SCALES=/path/to/DeepSeek-R1-W4AFP8/act_scales.safetensors
if [ ! -d "convert_logs" ]; then
for i in 0 1 2 3 4 5 6 7
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 &
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
for pid in ${pids[@]}; do
echo "All processes completed!"
DeepSeek-R1模型除了量化以及部署,W4A8量化后的模型效果也是需要关注的重点。本文基于MMLU和MATH-500两个基准测试进行比较,W4A8量化版DeepSeek-R1的性能对比FP8数据精度的版本差异在0.5%以内。
- 完成模型部署后,可以执行参考以下内容进行快速验证。
说明
下述命令中的$CKPT_PATH需替换为实际的模型存储路径。
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
- 同时,也可以通过以下命令来完成模型吞吐以及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} \
--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
enable_overlap_scheduler: false
cuda_graph_padding_enabled: true
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",
最近更新时间:2025.07.08 17:09:42