支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


火山引擎:单机部署 DeepSeek-R1 的 W4A8 方案,部署成本减半

发布日期:2025-06-09 14:30:48 浏览次数: 1534 作者:字节跳动技术团队
推荐语

火山引擎携手NVIDIA,推出DeepSeek-R1的高效部署方案,实现成本与效率的双重突破。

核心内容:
1. DeepSeek-R1模型参数与部署挑战概述
2. TensorRT-LLM推理框架的W4A8量化技术解析
3. ECS部署指南:三步快速实现DeepSeek-R1模型推理服务

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

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 部署指引:三步实现高效落地

步骤一:环境准备

1.创建 GPU 云服务器

在正式部署 DeepSeek-R1 W4A8 模型推理服务前,需要先完成 ECS 云服务器的实例创建及环境准备。首先,进入火山引擎 ECS 控制台创建 ecs.hpcpni3ln.45xlarge 规格的云服务器(邀测实例规格,需开通白名单使用,欢迎联系客户经理申请);

为提高部署效率,系统镜像推荐选择预装 GPU 驱动的镜像(例如:Ubuntu 22.04 with GPU Driver 535.161.08 and doca)。

2.执行如下命令,安装配置 Docker 环境;

登录目标实例安装 Docker 等相关容器环境,如果有 Docker 环境可忽略 2~4 步骤;

确认 docker 环境及 runtime 可以根据以下命令,

root@iv-ydt4e4fh1cbw80bh8228:~# docker info | grep -i runtimeRuntimes: io.containerd.runc.v2 nvidia runcDefault Runtime: runc

安装步骤

sudo apt updatesudo apt install ca-certificates curl gnupg lsb-releasesudo mkdir -p /etc/apt/keyringscurl -fsSL https://mirrors.ivolces.com/docker/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgecho "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/nullsudo apt updatesudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
3.执行如下命令,安装 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.listdeb http://mirrors.ivolces.com/nvidia_all/ubuntu2204/x86_64/ /EOFapt updateapt install nvidia-container-toolkit -y
4.执行如下命令配置 Docker,使容器可以使用实例的 GPU 资源;
sudo nvidia-ctk runtime configure --runtime=dockersudo systemctl restart docker
5.分别执行如下命令,拉取容器镜像并启动容器镜像服务;
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

步骤二:模型量化准备

1.为了提高部署效率,我们已经完成了模型量化,并将量化后的模型预置到 oniond 模型库,您可以直接通过 oniond 工具执行以下命令快速下载模型文件;
oniond download model DeepSeek-R1-W4AFP8

oniond 是火山自研模型下载器,可使用 oniond list models 查看当前支持拉取的模型;

2.您也可以通过如下步骤生成 DeepSeek-R1 的 W4A8 量化模型(可选,若您直接通过 oniond 工具下载模型文件,则无需执行步骤 2);

a. 执行以下命令,通过 NVIDIA TensorRT Model Optimizer 工具生成 activations 的量化系数;

oniond download model DeepSeek-R1
PATH_OF_DEEPSEEK_R1=/llm-models/DeepSeek-R1/DeepSeek-R1
#安装ModelOptgit clone https://github.com/NVIDIA/TensorRT-Model-Optimizer/ && cd modeloptpip 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/bashHF_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_logsfi
pids=()for i in 0 1 2 3 4 5 6 7do    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>&1pids+=($!)
for pid in ${pids[@]}do    wait $piddone
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-R1python /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.ymlenable_attention_dp: falsepytorch_backend_config:  enable_overlap_scheduler: true  use_cuda_graph: true  cuda_graph_padding_enabled: trues  print_iter_log: trueEOF
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 云服务器的硬件加速能力,为火山引擎的客户持续提供从数据加载、模型训练和推理以及网络传输的全链路加速方案,助力业务在火山引擎的高速落地和部署加速。


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询