
好意思团搜推团队 投稿量子位 | 公众号 QbitAI
满血版DeepSeek R1部署A100,基于INT8量化,比拟BF16罢了50%模糊提高
好意思团搜推机器学习团队最新开源,罢了对DeepSeek R1模子基本无损的INT8精度量化。
要知说念,DeepSeek R1原生版块的模子权重为FP8数据局势,对GPU芯片类型有严格限度,仅能被新式GPU救济(如Ada、Hopper架构芯片),其他型号GPU(如A100)无法成功部署。
现在,量化代码还是合入到了开源LLM推理框架SGLang,量化模子还是发布到了Hugging Face社区,浅薄用户使用。
INT8: 友好的“平替”
左证DeepSeek最新发布的技巧论说,V3/R1打破性的覆按本钱收敛主要依托FP8精度覆按决策。FP8是一种典型的模子量化技巧,相较于业界常用的BF16精度,FP8精度通过将数据位宽减半权贵裁汰了单次筹商支出,但也会带来一定的精度蚀本。
在现实中,DeepSeek R1剿袭了夹杂精度覆按机制有用缓解了精度蚀本问题。
为了不竭保捏高模糊性能,技巧团队遴荐了和FP8精度等位宽的INT8精度。同期,INT8精度被平日硬件原生救济,基于INT8精度可以极大拓展DeepSeek模子的硬件部署畛域。以硬件友好的INT8精度为中心,好意思团技巧团队运行探索FP8“平替”的落地决策。

量化技巧的探索
具体来说,分块量化(Block-wise Quantization)是DeepSeek V3/R1裁汰量化蚀本的要道技巧之一。分块量化通过对权重矩阵的细粒度切分,将量化操作的畛域收敛在[128, 128]的矩阵内,减少了分散分散的出现概率,从而很好地收敛了每次量化经过中的蚀本。
好意思团技巧团队延续了DeepSeek覆按的量化计谋,通常在[128, 128]的矩阵内进行分块量化操作,保证覆按和推理的一致性。在量化目的的选型上,INT8的上风在于其与FP8享有疏通的位宽,且大部分硬件都对INT8的数据筹商原生救济。
在现实中,由于DeepSeek官方并莫得提供半精度浮点型(BF16)的权重,因此开端需要将原生的FP8模子权重反量化成BF16,再分块量化成INT8类型。另外皮推理经过中,为了匹配权重的分块量化,激活值剿袭在线逐token-group的量化时势,即每个token的镶嵌向量分为多个组,逐组进行量化。分块量化的激活值和权重的乘法经过如下左图所示。
除了上述的分块量化外,好意思团技巧团队还探索了更高效的通说念量化(Channel-wise Quantization),即权重的每列为一组进行量化。
通说念量化在践诺完INT8的矩阵乘法后,只需进行一次反量化筹商,筹商支出更低。在具体现实中,通常地先将原生FP8的模子权重反量化成BF16,之后逐通说念量化成INT8类型。同期,对激活值剿袭在线逐token量化,最猛进程地减少activation的量化蚀本。通说念量化的激活值和权重的乘法经过如下右图所示。
现在,两种INT8量化权重均已开源到Hugging Face。
INT8量化模子精度
差别欺诈上述的两种量化门径,对开源的DeepSeek R1模子进行了INT8量化惩处,并在GSM8K和MMLU两个数据集上对量化后的模子进行了精度评估。评估末端如下表所示,比拟基线的BF16和FP8模子,两种INT8量化模子的精度基本无损。

注:表中的精度末端是屡次测试的均值。
INT8量化模子推理模糊
在盛名开源推理框架SGLang上,对上述两种INT8量化门径进行了推理救济,并进行了推理模糊评估。SGLang是刻下SOTA的开源LLM推理框架,在DeepSeek系列模子上有着最优的推感性能,被业界平日使用。
在A100 GPU上对两种INT8模子和BF16模子进行推理模糊评估。成绩于更低的显存条目,INT8量化模子仅需要16张A100 GPU即可推理,然则BF16模子需要32张A100 GPU。为了比较的平正性,合股在32张A100 GPU上进行模糊测试。末端如下表所示,分块量化的INT8推理比拟BF16可以提高33%的模糊;通说念量化的INT8推理可以进一步达到50%的模糊提高。

INT8量化模子部署
以双节点各8张A100 GPU为例,开垦者需要在双部署节点装配最新版块的SGLang,然后差别践诺底下呐喊:
# 分块量化INT8推理# 主节点python3 -m sglang.launch_server \\--model meituan/DeepSeek-R1-Block-INT8 --tp 16 --dist-init-addr \\HEAD_IP:5000 --nnodes 2 --node-rank 0 --trust-remote --enable-torch-compile --torch-compile-max-bs 8# 副节点python3 -m sglang.launch_server \\--model meituan/DeepSeek-R1-Block-INT8 --tp 16 --dist-init-addr \\HEAD_IP:5000 --nnodes 2 --node-rank 1 --trust-remote --enable-torch-compile --torch-compile-max-bs 8
# 通说念量化INT8推理# 主节点python3 -m sglang.launch_server \\--model meituan/DeepSeek-R1-Channel-INT8 --tp 16 --dist-init-addr \\HEAD_IP:5000 --nnodes 2 --node-rank 0 --trust-remote --enable-torch-compile --torch-compile-max-bs 8 \\ --quantization w8a8_int8# 副节点python3 -m sglang.launch_server \\--model meituan/DeepSeek-R1-Channel-INT8 --tp 16 --dist-init-addr \\HEAD_IP:5000 --nnodes 2 --node-rank 1 --trust-remote --enable-torch-compile --torch-compile-max-bs 8 \\ --quantization w8a8_int8
底下是一些意旨的case:
深度想考能力展示
这里以curl为例发送一条恳求:
curl -X POST 'http://HEAD_IP:5000/v1/chat/completions' \\--header 'Content-Type: application/json' \\ -d '{ \"model\": \"deepseek-r1\", \"messages\": [{\"role\": \"user\",\"content\": \"下列选项中,找出平地一声雷的一个:1.铝 2.锡 3.钢 4.铁 5.铜\" } ] }'
在INT8 R1的恢复中(由于篇幅限度不祥部老实容),能看到其作风特有的反想:
不外,我需要说明这少许是否正确。比如,有莫得可能其他选项中也有合金?比如,锡巧合刻会和其他金属夹杂使用,但锡自己是纯金属。通常,铝、铁、铜都是纯金属。是以钢行为合金,应该是一个要道的不同点。另外,可以酌量其他属性,比如它们的用途、物感性质或化学性质。举例,导电性:银是最佳的导体,但这里莫得银,而铜的导电性也很好,铝也可以,铁和钢的导电性相对差一些。但这么分类的话,可能难以细目哪一个不同。……不外回到领先的分类,钢是独一的合金,而其他都是纯金属,这少许可能更为基础。因此谜底应该是3.钢。不外需要再考据一下这个论断是否正确。
最终谜底亦然正确的:
谜底:3.钢
模拟海量小球通顺
参考其他LLM测试的prompts行为输入,对比INT8(上)和FP8(下)输出代码的运行成果,INT8皆备不逊于FP8。
write a script for 100 bouncing balls within a sphere, make sure to handle collision detection properly. make the sphere slowly rotate. make sure balls stays within the sphere. implement it in p5.js


回顾与瞻望
综上,连络团队在DeepSeek R1上进行了INT8量化技巧的探索,并基于SGLang框架进行了推理能力的救济,在保证量化后模子精度的前提下,让DeepSeek R1可以在如A100等老型号GPU上进行部署,况兼提高了推理模糊。咱们但愿开源的代码和权重可以让更多用户和业务方受益,也接待全球积极交流关联技巧,共同成就、回馈开源社区。
交流邮箱:search.platform@meituan.com
参考文件[1] 技巧论说:Liu A, Feng B, Xue B, et al. Deepseek-v3 technical report[J]. arXiv preprint arXiv:2412.19437, 2024.[2] Hugging Face:https://huggingface.co/meituan/DeepSeek-R1-Block-INT8,https://huggingface.co/meituan/DeepSeek-R1-Channel-INT8[3] 推理救济:Block-wise INT8 DeepSeek R1救济(https://github.com/sgl-project/sglang/pull/3730)、Channel-wise INT8 DeepSeek R1救济(https://github.com/sgl-project/sglang/pull/3888)[4] 其他LLM测试:https://qwenlm.github.io/blog/qwq-max-preview/
