91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探討DeepSeek-R1滿血版的推理部署與優(yōu)化策略

OSC開(kāi)源社區(qū) ? 來(lái)源:OSC開(kāi)源社區(qū) ? 2025-02-14 10:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

TL;DR

春節(jié)假期開(kāi)始, 好像很多人都在開(kāi)始卷DeepSeek-R1的推理了. 渣B也被兄弟團(tuán)隊(duì)帶著一起卷了一陣, 其實(shí)推理中還有很多約束, 比較認(rèn)同的是章老師的一個(gè)觀點(diǎn): “推理框架很有可能就此走向兩種極致分化的方向.“ 本文來(lái)做一個(gè)詳細(xì)的闡述, 從一些亂七八糟的benchmark開(kāi)始, 然后談?wù)劀y(cè)試方法, 推理系統(tǒng)的各種約束, 推理框架的區(qū)別, 并行策略的區(qū)別,然后再解構(gòu)一下DeepSeek的原廠方案.

1. 前情回顧
2. 推理性能指標(biāo)概述
3. 推理系統(tǒng)性能約束
3.1 用戶SLA的約束
3.2 內(nèi)存的約束
4.約束帶來(lái)的分叉
5. 私有化部署
5.1 基于SGLang
5.2 基于vLLM
5.3 并行策略選擇
6. 平臺(tái)部署
6.1 PD分離技術(shù)
6.2 Prefill階段
6.3 Decode階段
7. 未來(lái)優(yōu)化的方向和對(duì)開(kāi)源生態(tài)的建議

1. 前情回顧

比較現(xiàn)實(shí)的是兩個(gè)極端, 一方面是各種平臺(tái)的測(cè)評(píng), 例如公眾號(hào)“CLUE中文語(yǔ)言理解測(cè)評(píng)基準(zhǔn)”的

《DeepSeek-R1 網(wǎng)頁(yè)端穩(wěn)定性首測(cè):12家第三方平臺(tái)真實(shí)測(cè)評(píng)》

另一方面是尤洋老師在微博的一個(gè)評(píng)論MaaS的商業(yè)模式和平臺(tái)推理虧損, 這里提到了4臺(tái)H800的總吞吐量

c0375d46-e9e3-11ef-9310-92fbcf53809c.png

另一方面是各種私有化部署的需求, 例如小紅書(shū)上最近經(jīng)常刷到還有章明星老師的KTransformer可以在單卡的4090 24GB上配合Intel CPU的AMX部署Q4的量化版本. 通過(guò)將Routed Expert放置在CPU上運(yùn)行來(lái)降低內(nèi)存的使用量.

還有直接ollama找一個(gè)1TB內(nèi)存的CPU實(shí)例就開(kāi)跑的方案.

然后Benchmark的定義上,一會(huì)兒20 Tokens/s, 一會(huì)兒又是幾千Tokens/s的benchmark滿天飛, 到底是怎么回事? 其實(shí)有很多認(rèn)知的問(wèn)題, 讓渣B回憶起剛畢業(yè)入職工作的時(shí)候做運(yùn)營(yíng)商級(jí)的電話信令網(wǎng)關(guān)時(shí), 天天測(cè)性能算Erlang模型的日子...

2. 推理性能指標(biāo)概述

推理是一個(gè)在線業(yè)務(wù), 因此對(duì)第一個(gè)Token出來(lái)的延遲(Time To First Token,TTFT)和后續(xù)token產(chǎn)生的延遲(Time Per output Token,TPOT)都會(huì)對(duì)用戶體感產(chǎn)生影響.

c066e7d2-e9e3-11ef-9310-92fbcf53809c.png

通常會(huì)使用測(cè)試工具生成如下一個(gè)報(bào)告, 具體數(shù)據(jù)就不多說(shuō)了.

c08523b4-e9e3-11ef-9310-92fbcf53809c.png

影響這個(gè)報(bào)告的因素很多, 例如測(cè)試工具是采用vllm的benchmark_serving還是采用sglang.bench_serving, 常用的參數(shù)是按照多少Request per seconds(RPS)測(cè)試或者按照多少并發(fā)量進(jìn)行測(cè)試, 但是DeepSeek-R1的推理Reasoning時(shí)間很長(zhǎng), 通常都會(huì)選擇并發(fā)數(shù)進(jìn)行約束.測(cè)試在一定的并發(fā)數(shù)量下的吞吐/延遲等指標(biāo). 測(cè)試命令如下所示:

###vLLM的bench測(cè)試
python3~/vllm/benchmarks/benchmark_serving.py--backendvllm
--model~/deepseek-R1--port8000
--dataset-namerandom
--random-input1234
--random-output2345
--random-range-ratio0.8
--dataset-path~/ShareGPT_V3_unfiltered_cleaned_split.json
--max-concurrency16
--num-prompts64

###sglangM的bench測(cè)試
python3-msglang.bench_serving--backendvllm
--model~/deepseek-R1--port8000
--dataset-name=random--random-input=1234
--random-output=2345
--max-concurrency=64
--num-prompts=128
--random-range-ratio0.9
--dataset-path~/ShareGPT_V3_unfiltered_cleaned_split.json

除了并發(fā)數(shù)max-concurrency以外, 另兩個(gè)比較重要的參數(shù)是input多少token和output多少token, 這也是非常影響測(cè)試結(jié)果的. DeepSeek-R1作為一個(gè)Reasoning模型, 輸出Thinking階段的token也挺多的, 所以要根據(jù)實(shí)際的業(yè)務(wù)需要來(lái)進(jìn)行分析.

因?yàn)橐郧伴L(zhǎng)期做運(yùn)營(yíng)商級(jí)的呼叫信令網(wǎng)關(guān), 對(duì)于請(qǐng)求到達(dá)是否按照Poisson過(guò)程, 對(duì)于結(jié)果的影響也很大, 這是一個(gè)非常重要的點(diǎn), sglang的bench例如并發(fā)128時(shí), 就是128個(gè)請(qǐng)求一起發(fā)出去了, 然后大家一起Prefill, 然后一起decode,這樣可能導(dǎo)致TTFT偏長(zhǎng). 而vllm的測(cè)試是如果設(shè)置并發(fā)時(shí)是按照Poisson過(guò)程請(qǐng)求的. 但是似乎做的也不太符合真實(shí)的情況.

3. 推理系統(tǒng)性能約束

主要的約束有幾個(gè)方面:

3.1 用戶SLA的約束

通常我們可以根據(jù)實(shí)際業(yè)務(wù)的需求獲得平均輸入Token數(shù)和輸出Token數(shù)以及方差, 然后根據(jù)企業(yè)員工的數(shù)量或者承載用戶的DAU計(jì)算出一個(gè)平均請(qǐng)求到達(dá)間隔, 然后根據(jù)一些SLA的約束, 例如TTFT首Token時(shí)間要小于4s, TPOT即用戶感知的每秒token輸出速度, 例如要大于20Token/S(TPS).然后再來(lái)估計(jì)用戶平均對(duì)一個(gè)請(qǐng)求的整體持續(xù)時(shí)間, 通過(guò)Erlang模型建模.

但是很多時(shí)候性能和成本之間會(huì)有一些取舍, 例如是否在一個(gè)低成本方案中,放寬對(duì)TTFT和TPOT的要求, 慢一點(diǎn)但是足夠便宜就好, 或者是另一方面例如袁老師的硅基流動(dòng), Pro版本就能夠嚴(yán)格保證用戶的SLA, 也就是夏Core講的, 穩(wěn)定保持TPOT > 20TPS、

但是為了保證API平臺(tái)的SLA, 通常需要采用更復(fù)雜的并行策略, 降低延遲提高吞吐, 例如DeepSeek論文提到的EP320的 40臺(tái)機(jī)器的集群方案.

3.2 內(nèi)存的約束

對(duì)于較長(zhǎng)的Context,KVCache對(duì)顯存的占用也特別大, 雖然單機(jī)的H20顯存也能放得下滿血版的671B模型,但是剩余的顯存也會(huì)約束到模型的并發(fā)能力. 通常有些提供API的廠家會(huì)配置一個(gè)截?cái)? 例如最大長(zhǎng)度就8192個(gè)Tokens. 通常在這種場(chǎng)景下為了提高并發(fā), 最小配置都會(huì)用2臺(tái)以上的H20, 或者一些MI300的實(shí)例, 國(guó)外還有一些會(huì)采用H200的實(shí)例.

4.約束帶來(lái)的分叉

正如前一章節(jié)所屬, 兩個(gè)約束帶來(lái)了分叉. 一方面用戶希望低成本的私有化部署,帶來(lái)了一些小型化部署的機(jī)會(huì), 例如小紅書(shū)上看到的, 200w如何私有化部署滿血版. 另一方面是大規(guī)模的云平臺(tái)提供服務(wù)的時(shí)候保障SLA.

這兩者直接決定了部署上的區(qū)別:

私有化部署: 2臺(tái)4臺(tái)并行小規(guī)模滿足成本的需求, 而不太在意TTFT和TPOT的需求, 能夠滿足企業(yè)內(nèi)并發(fā)需求即可,甚至是季宇老師提到的一個(gè)極端的情況,就只做一個(gè)并發(fā)時(shí), 如何用最低成本的硬件實(shí)現(xiàn)大概10~20TPS.

平臺(tái)部署: 最小320卡到最大數(shù)千數(shù)萬(wàn)卡并行的需求, 這種需求下并發(fā)的請(qǐng)求數(shù)量, KVCache的用量和累計(jì)整個(gè)集群的TFTT和TPOT的約束都非常大, 因此需要在并行策略上進(jìn)行更多的考慮, 例如EP并行還有PD分離等.

很多較小的提供商通常只有開(kāi)源軟件sglang和vllm的部署能力, 然后并行策略上只有非常局限的TP/PP選擇, 因此只有2~4臺(tái)機(jī)器并行一組的方式提供服務(wù), 自然就會(huì)遇到一些成本過(guò)高,吞吐過(guò)低無(wú)法通過(guò)token收費(fèi)掙錢(qián)的情況. 這也就是所謂的夾在中間非常難受的一個(gè)例子.

因此章明星老師講的這兩種部署帶來(lái)的推理系統(tǒng)分叉將會(huì)成為一個(gè)必然趨勢(shì).

5. 私有化部署

通常的做法是買(mǎi)兩臺(tái)H20或者在云上租用2臺(tái)H20構(gòu)建一個(gè)最小部署集, 然后自建的方式來(lái)部署.

5.1 基于SGLang

基于Sglang的部署方式如下, 兩臺(tái)機(jī)器安裝sglang

pipinstallsgl-kernel--force-reinstall--no-deps
pipinstall"sglang[all]>=0.4.2.post3"--find-linkshttps://flashinfer.ai/whl/cu124/torch2.5/flashinfer/

第一臺(tái)機(jī)器執(zhí)行時(shí), nnodes=2, node-rank=0, dist-init-addr都是第一臺(tái)機(jī)器的IP地址.

python3-msglang.launch_server
--model-path~/deepseek-R1/
--tp16--dist-init-addr1.1.1.1:20000
--nnodes2--node-rank0
--trust-remote-code--host0.0.0.0--port8000

第二臺(tái)機(jī)器執(zhí)行時(shí),--nnodes 2 --node-rank 1

python3-msglang.launch_server
--model-path~/deepseek-R1/
--tp16--dist-init-addr1.1.1.1:20000
--nnodes2--node-rank1
--trust-remote-code--host0.0.0.0--port8000

需要注意的是,現(xiàn)階段Sglang只支持TP并行, PP并行在未來(lái)幾周可能會(huì)支持.

5.2 基于vLLM

vLLM需要基于Ray部署, 如下圖所示:

c0c36dd6-e9e3-11ef-9310-92fbcf53809c.jpg

首先需要安裝Ray

pip3installray

然后第一臺(tái)機(jī)器配置

raystart--head--dashboard-host0.0.0.0

第二個(gè)機(jī)器根據(jù)第一個(gè)機(jī)器的提示輸入加入集群

raystart--address=':6379'

然后檢查集群狀態(tài)

raystatus
========Autoscalerstatus:2025-02-071906.335568========
Nodestatus
---------------------------------------------------------------
Active:
1node_50018fxxxxx
1node_11cc6xxxxx
Pending:
(nopendingnodes)
Recentfailures:
(nofailures)

Resources
---------------------------------------------------------------
Usage:
0.0/256.0CPU
0.0/16.0GPU
0B/1.59TiBmemory
0B/372.53GiBobject_store_memory

Demands:
(noresourcedemands)

然后兩臺(tái)機(jī)器都安裝vllm, 注意需要安裝最新版的vllm 0.7.2性能有很大提升.

pip3installvllm

最后在第一臺(tái)機(jī)器上開(kāi)啟服務(wù)即可, 然后需要根據(jù)容忍的最大輸入和模型輸出調(diào)整max-num-batched-tokens和max-model-len

vllmserve~/deepseek-R1
--tensor-parallel-size16
--enable-reasoning
--reasoning-parserdeepseek_r1
--max-num-batched-tokens8192
--max-model-len16384
--enable-prefix-caching
--trust-remote-code
--enable-chunked-prefill
--host0.0.0.0

單個(gè)輸入的測(cè)試腳本如下

#test.py
fromopenaiimportOpenAI

#ModifyOpenAI'sAPIkeyandAPIbasetousevLLM'sAPIserver.
openai_api_key="EMPTY"
openai_api_base="http://localhost:8000/v1"

client=OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)

models=client.models.list()
model=models.data[0].id

#Round1
messages=[{"role":"user","content":"whatisthepresheaf?andhowtoproveyonedalemma?"}]
response=client.chat.completions.create(model=model,messages=messages)

reasoning_content=response.choices[0].message.reasoning_content
content=response.choices[0].message.content

print("reasoning_content:",reasoning_content)
print("content:",content)

5.3 并行策略選擇

如果選擇sglang,當(dāng)前只有TP并行策略, 因此需要為每個(gè)GPU配置400Gbps網(wǎng)卡構(gòu)成雙機(jī)3.2Tbps互聯(lián), 這是一筆不小的開(kāi)銷(xiāo). 當(dāng)然TP并行理論上說(shuō)在Token generate的速度上會(huì)有優(yōu)勢(shì), 但事實(shí)上和vLLM新版本的PP并行差距并不大. 相反TP并行的SGlang在Prefill階段的性能還是有很大問(wèn)題的, TTFT比起PP并行的vLLM很多場(chǎng)景下慢了一倍.

而vLLM更推薦PP并行, 主要是壓根就不需要RDMA網(wǎng)絡(luò), 就CPU上插一張網(wǎng)卡即可, 同時(shí)KV Cache的容量和吞吐都有提升. 特別是KVCache, 比起TP并行省了很多, 對(duì)于私有化部署提高并發(fā)很有好處.

有一篇關(guān)于vLLM 0.7.2優(yōu)化的分析文章[1]其中提到

c0e5f91e-e9e3-11ef-9310-92fbcf53809c.png

c0f81342-e9e3-11ef-9310-92fbcf53809c.png

具體分析一下兩種并行方式, PP并行也就是在模型的中間按層分開(kāi), 按照一個(gè)Token hidden-dim 7168和FP8計(jì)算, 如果每秒吞吐為1000個(gè)token, 則累積的帶寬需求為7MB/s 即便是Prefill階段需要5000tokens/s的能力,也就35MB/s, 一般一張100Gbps的網(wǎng)卡就夠了.

而TP并行在Sglang中的實(shí)現(xiàn)是采用了對(duì)MLA進(jìn)行DP并行, 每張卡維護(hù)不同Seq的KVCache, 并分別通過(guò)DP worker完成prefill/decode一類(lèi)的任務(wù), 從而相對(duì)于TP并行節(jié)省KVCache開(kāi)銷(xiāo), 然后再進(jìn)行一次allgather 讓不同的卡都拿到hidden-state進(jìn)行MoE的計(jì)算.

c111a4ba-e9e3-11ef-9310-92fbcf53809c.png

但是官方的文檔[2]似乎并沒(méi)有開(kāi)啟這種模式, 而是采用標(biāo)準(zhǔn)的TP并行, 這樣每個(gè)卡都要有全量的kvcache.

綜合來(lái)看, 從私有化部署的成本來(lái)考慮, 選擇vLLM或者未來(lái)支持pp并行的Sglang是一個(gè)更好的選擇. 性能差距很小的情況下,省掉了一個(gè)專(zhuān)用的GPU RDMA網(wǎng)絡(luò)的成本還是非常好的, 而且也適合企業(yè)部署, 隨便找個(gè)機(jī)柜放兩臺(tái), CPU的網(wǎng)卡接交換機(jī)上即可,無(wú)需特別的維護(hù). 另一方面伴隨著兩三個(gè)星期以后兩個(gè)框架都支持了MTP, 應(yīng)該整體性能還有進(jìn)一步的提升.

另外針對(duì)這樣的小規(guī)模兩機(jī)部署,通常會(huì)采用Chunk-Prefill的技術(shù), 將Prefill的計(jì)算拆分成chunk穿插在Decode任務(wù)中, 來(lái)避免同一個(gè)卡運(yùn)行Prefill和Decode時(shí), 兩階段的資源爭(zhēng)搶干擾會(huì)導(dǎo)致TTFT和TPOT都很難達(dá)到SLA的標(biāo)準(zhǔn).

c1216954-e9e3-11ef-9310-92fbcf53809c.png

6. 平臺(tái)部署

平臺(tái)部署,更多的就要參考Deepseek-V3的論文了. DeepSeek首先采用了PD分離的技術(shù).

6.1 PD分離技術(shù)

當(dāng)Prefill和Decode兩個(gè)階段在同一個(gè)卡上運(yùn)行時(shí), 兩階段的資源爭(zhēng)搶干擾會(huì)導(dǎo)致TTFT和TPOT都很難達(dá)到SLA的標(biāo)準(zhǔn). 例如突然來(lái)一個(gè)很長(zhǎng)的prompt的請(qǐng)求需要大量的計(jì)算資源來(lái)進(jìn)行prefill運(yùn)算, 同時(shí)也需要大量的顯存來(lái)存儲(chǔ)這個(gè)請(qǐng)求的KV Cache.針對(duì)Prefill Compute-Bound計(jì)算和Decode Memory-bound計(jì)算的特點(diǎn), 以及不同卡的算力差異, 出現(xiàn)了Prefill-Decode分離的架構(gòu), 即用高算力的卡做Prefill, 低算力的卡做Decode, 并且Prefill節(jié)點(diǎn)在完成計(jì)算傳輸KV Cache給Decode節(jié)點(diǎn)后就可以free掉本地顯存.

c13cc244-e9e3-11ef-9310-92fbcf53809c.png

分離后的延遲和性能(來(lái)自論文DistServe), 可以看到在滿足SLA的條件下, 分離后的性能會(huì)更好.

c153b986-e9e3-11ef-9310-92fbcf53809c.png

在PD分離架構(gòu)下, 可以分別針對(duì)Compute-bound和Memory-bound進(jìn)行有針對(duì)性的優(yōu)化. 例如對(duì)請(qǐng)求的batch處理, Prefill階段由于每個(gè)token都要計(jì)算,當(dāng)batch中的總token數(shù)達(dá)到計(jì)算瓶頸門(mén)限后, 吞吐率就趨于平緩了. 而在Decode階段隨著batchsize增大可以顯著的增加吞吐率

c1689400-e9e3-11ef-9310-92fbcf53809c.png

6.2 Prefill階段

預(yù)填充階段的最小部署單元由4個(gè)節(jié)點(diǎn)和32個(gè)GPU組成。

Attention block 采用4路張量并行(TP4)與序列并行(SP)結(jié)合,并輔以8路數(shù)據(jù)并行(DP8)。其較小的TP尺寸為4,限制了TP通信的開(kāi)銷(xiāo)。

對(duì)于MoE部分,使用32路專(zhuān)家并行(EP32),確保每個(gè)專(zhuān)家處理足夠大的批量大小,從而提升計(jì)算效率。對(duì)于MoE的all-to-all通信,采用與訓(xùn)練時(shí)相同的方法:首先通過(guò)InfiniBand(IB)在節(jié)點(diǎn)間傳輸token,然后通過(guò)NVLink在節(jié)點(diǎn)內(nèi)的GPU之間轉(zhuǎn)發(fā)。

特別地,在最開(kāi)始三層的 Dense MLP中使用1路張量并行,以節(jié)省TP通信開(kāi)銷(xiāo)。

為了實(shí)現(xiàn)MoE部分中不同專(zhuān)家之間的負(fù)載均衡,需要確保每個(gè)GPU處理大致相同數(shù)量的token。為此,引入了冗余專(zhuān)家的部署策略,通過(guò)復(fù)制高負(fù)載專(zhuān)家并冗余部署它們來(lái)達(dá)到這一目的。高負(fù)載專(zhuān)家是基于在線部署期間收集的統(tǒng)計(jì)數(shù)據(jù)檢測(cè)出來(lái)的,并會(huì)定期調(diào)整(例如每10分鐘一次)。在確定冗余專(zhuān)家集合后,會(huì)根據(jù)觀察到的負(fù)載,在節(jié)點(diǎn)內(nèi)的GPU之間精心重新安排專(zhuān)家,盡可能在不增加跨節(jié)點(diǎn)alltoall通信開(kāi)銷(xiāo)的情況下,實(shí)現(xiàn)GPU之間的負(fù)載均衡。在DeepSeek-V3的部署中,為預(yù)填充階段設(shè)置了32個(gè)冗余專(zhuān)家。對(duì)于每個(gè)GPU,除了其原本負(fù)責(zé)的8個(gè)專(zhuān)家外,還會(huì)額外負(fù)責(zé)一個(gè)冗余專(zhuān)家。

此外,在預(yù)填充階段,為了提高吞吐量并隱藏alltoall和TP通信的開(kāi)銷(xiāo),采用了兩個(gè)計(jì)算量相當(dāng)?shù)膍icro-batches,將一個(gè)micro ba t ch的Attention和MoE計(jì)算與另一個(gè)microbatch的Disptach和Combine操作overlap。

另外,論文還提到了他們正在探索動(dòng)態(tài)的專(zhuān)家冗余策略, 即每個(gè)GPU負(fù)責(zé)更多的專(zhuān)家(例如16個(gè)專(zhuān)家),但在每個(gè)推理步驟中只激活其中的9個(gè)。在每一層的AlltoAll操作開(kāi)始之前,動(dòng)態(tài)計(jì)算全局最優(yōu)的路由方案.

6.3 Decode階段

在Decode階段, 將Shared Expert和其它Routed Expert一視同仁. 從這個(gè)角度來(lái)看,每個(gè)token在路由時(shí)會(huì)選擇9個(gè)專(zhuān)家,其中共享專(zhuān)家被視為一個(gè)高負(fù)載專(zhuān)家,始終會(huì)被選中。解碼階段的最小部署單元由40個(gè)節(jié)點(diǎn)和320個(gè)GPU組成。注意力部分采用TP4與SP結(jié)合,并輔以DP80,而MoE部分則使用EP320。在MoE部分,每個(gè)GPU僅負(fù)責(zé)一個(gè)專(zhuān)家,其中64個(gè)GPU專(zhuān)門(mén)用于托管冗余專(zhuān)家和共享專(zhuān)家。

需要注意的是, dispatch和combine部分的AlltoAll通信通過(guò)IB的直接點(diǎn)對(duì)點(diǎn)傳輸實(shí)現(xiàn),以降低延遲。此外,還利用IBGDA技術(shù)進(jìn)一步最小化延遲并提升通信效率,即直接利用GPU構(gòu)建RDMA隊(duì)列和控制網(wǎng)卡doorbell

c183d5d0-e9e3-11ef-9310-92fbcf53809c.png

與Prefill階段類(lèi)似, 基于在線服務(wù)的統(tǒng)計(jì)專(zhuān)家負(fù)載,定期確定冗余專(zhuān)家的集合。然而,由于每個(gè)GPU僅負(fù)責(zé)一個(gè)專(zhuān)家,因此不需要重新安排專(zhuān)家的位置。同時(shí)也在探索解碼階段的動(dòng)態(tài)冗余策略。不過(guò),這需要對(duì)計(jì)算全局最優(yōu)路由方案的算法以及與Dispatch Kernel的融合進(jìn)行更細(xì)致的優(yōu)化,以減少開(kāi)銷(xiāo)。

此外,為了提高吞吐量并隱藏AlltoAll通信的開(kāi)銷(xiāo),還在探索在解碼階段同時(shí)處理兩個(gè)計(jì)算工作量相似的microbatch。與預(yù)填充階段不同,解碼階段中Attention計(jì)算占據(jù)了更大的時(shí)間比例。因此,需要將一個(gè)Microbatch的注意力計(jì)算與另一個(gè)microbatch的Dispatch+MoE+Combine操作Overlap。

在Decode階段,每個(gè)專(zhuān)家的批量大小相對(duì)較?。ㄍǔT?56個(gè)token以?xún)?nèi)),瓶頸在于內(nèi)存訪問(wèn)而非計(jì)算。由于MoE部分只需加載一個(gè)專(zhuān)家的參數(shù),內(nèi)存訪問(wèn)開(kāi)銷(xiāo)極小,因此使用較少的SM不會(huì)顯著影響整體性能。因此,為了避免影響Attention block的計(jì)算速度,可以?xún)H為Dispatch+MoE+Combine分配一小部分SMs。

其實(shí)DeepSeek的工作已經(jīng)做的非常細(xì)致了, 例如Prefill階段通過(guò)兩個(gè)microbatch來(lái)隱藏attention和MoE的A2A和TP通信開(kāi)銷(xiāo). 并且通過(guò)冗余專(zhuān)家來(lái)降低Alltoall開(kāi)銷(xiāo), 而在Decode階段并沒(méi)采用原來(lái)的訓(xùn)練中那樣的PXN方式, 而是采用了直接p2p IB通信的方式, 并啟用了IBGDA降低延遲. 對(duì)于一個(gè)大集群來(lái)看, 使用這些優(yōu)化比起尤洋老師估計(jì)的每臺(tái)機(jī)器400tokens/s的量, 應(yīng)該起碼高出20~50倍.

7. 未來(lái)優(yōu)化的方向和對(duì)開(kāi)源生態(tài)的建議

私有化部署和平臺(tái)部署將會(huì)帶來(lái)推理生態(tài)的分叉, 在雙機(jī)部署或者未來(lái)大內(nèi)存的單機(jī)部署下, 可能更多的是考慮片上網(wǎng)絡(luò)如何高效的互聯(lián), 例如帶AMX的CPU來(lái)做MoE而輔助一些TensorCore做Attention Block, 例如GB200 NVL4這樣的單機(jī)推理平臺(tái)

或者就是極致的,像Apple M4那樣的Unified Memory, 帶一些NPU, 或者例如Project Digits那樣的GB10的chip, 然后做到大概10萬(wàn)人民幣能夠完成滿血版671B的部署, 這些單U的服務(wù)器或許也逐漸會(huì)成為云服務(wù)提供商的主力機(jī)型. 另一方面最近在做一些R1-Zero的復(fù)現(xiàn)和算法分析相關(guān)的事情, 覺(jué)得似乎這樣的一些小規(guī)模集群對(duì)于強(qiáng)化學(xué)習(xí)RLFT也可能成為一個(gè)很好融合的機(jī)會(huì). 例如4臺(tái)~8臺(tái)的小規(guī)模集群做一些垂域的模型蒸餾等, 這個(gè)市場(chǎng)會(huì)逐漸打開(kāi).

對(duì)于這些小機(jī)器, 內(nèi)存通常受限的, 是否可以做一個(gè)雙向加載?例如論文《Compute or Load KV Cache? Why not both?》采用了雙向fill的機(jī)制, 從最后一個(gè)token開(kāi)始倒著向前讀取KV-Cache, 然后前向從第一個(gè)Token開(kāi)始進(jìn)行KVCache計(jì)算, 直到兩個(gè)過(guò)程交匯.

c1b3a71a-e9e3-11ef-9310-92fbcf53809c.png

而另一個(gè)方向, 是大集群的MaaS/SaaS服務(wù)提供, 通信和計(jì)算的Overlap,計(jì)算集群的負(fù)載均衡等, 當(dāng)然首先還是要一些開(kāi)源生態(tài)先去把一些EP并行框架的問(wèn)題解決了才有后續(xù), 當(dāng)然我個(gè)人是一直比較看好vLLM+Ray的部署的, Ray本身和計(jì)算節(jié)點(diǎn)的負(fù)載以及內(nèi)存的ojbect抽象其實(shí)蠻好的, 其實(shí)在看《Infinite-LLM: Efficient LLM Service for Long Context with DistAttention and Distributed KVCache》的工作, 在多個(gè)實(shí)例間共享內(nèi)存實(shí)現(xiàn)分布式的KV-Cache存儲(chǔ).

c1cd9170-e9e3-11ef-9310-92fbcf53809c.png

還有一些很細(xì)致的內(nèi)存管理的工作, 例如GMLake/vTensor等...進(jìn)一步解決它的一些通信延遲后, 可能和其它在線業(yè)務(wù)融合是一個(gè)蠻大的優(yōu)勢(shì).而另一方面Sglang也非常厲害, 前期性能超過(guò)vLLM很多.

更進(jìn)一步,作為PaaS的基于SLA的調(diào)度還有很多工作和機(jī)會(huì)可以去做. 例如KVCache的存儲(chǔ)和優(yōu)化. 其實(shí)每個(gè)做推理的PaaS或許都應(yīng)該下場(chǎng)參與到開(kāi)源生態(tài)中, 例如當(dāng)年的Spark.

當(dāng)然還有一些更細(xì)節(jié)的內(nèi)容涉密就不多說(shuō)了, 宏觀說(shuō)幾點(diǎn)吧....從算子層來(lái)看, Group GEMM的細(xì)粒度打滿TensorCore, Warp specialization的處理, 如何統(tǒng)一ScaleUP和ScaleOut network, 如何更加容易的融入到現(xiàn)在的在線鏈路上? 然后這些RL模型是否可以逐漸做到按天的夜間FineTune白天上線快速迭代等?

最最后一條, 當(dāng)前MoE性能的優(yōu)化主要還是在AlltoAll, 優(yōu)化的方式并不是說(shuō), ok, 因?yàn)檠舆t敏感需要一個(gè)更低延遲的網(wǎng)絡(luò)通信, 而是如何通過(guò)一些microbatch等調(diào)度策略, 保證在一定通信延遲門(mén)限下能夠足夠的隱藏延遲.

舉個(gè)例子吧, DeepSeek為什么Decode階段要采用P2P直接RDMA通信,而不是像訓(xùn)練那樣采用PXN呢? 其實(shí)在一定的SLA約束下, ScaleUP的帶寬和延遲并不是那么極致的需求, 相反如何scaleOut, 才是關(guān)鍵. 這樣就會(huì)導(dǎo)致一個(gè)潛在的問(wèn)題, 例如采用Multi-Rail或者Rail-Only的組網(wǎng),可能由于Expert的放置和過(guò)載, 需要跨越不同機(jī)器的不同Rank通信. IBGDA可能只是一個(gè)暫時(shí)的方案, 是否會(huì)因?yàn)檫@些新的需求, 又回到傳統(tǒng)的CLOS架構(gòu), 放棄Rail-based部署呢? 特別是Decode階段的延遲問(wèn)題處理上, 假設(shè)未來(lái)部署的集群專(zhuān)家并行規(guī)模大幅度提升呢? 這就成為一個(gè)軟硬件協(xié)同的很有趣的問(wèn)題了, 建議算法團(tuán)隊(duì)和一些有硬件能力的團(tuán)隊(duì)更加緊密的合作, 算法對(duì)硬件妥協(xié), 硬件進(jìn)一步解鎖...

再進(jìn)一步, 正如DeepSeek論文所示, Dynamic Routing, Experts placement也是一個(gè)很有趣的話題. 而DeepSeek對(duì)于未來(lái)硬件的建議也非常清楚的擺在那里了, 后面隨著推理的規(guī)模上量, 各個(gè)云之間卷推理成本而提高性能的事情

結(jié)論: 加大一些開(kāi)源生態(tài)的投入吧:) 自己卷, 卷不過(guò)生態(tài)的.

參考資料 [1]

Enhancing DeepSeek Models with MLA and FP8 Optimizations in VLLM: https://neuralmagic.com/blog/enhancing-deepseek-models-with-mla-and-fp8-optimizations-in-vllm/

[2]

deepseek-v3-sglang: https://github.com/sgl-project/sglang/tree/main/benchmark/deepseek_v3#example-serving-with-2-h208

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • DeepSeek
    +關(guān)注

    關(guān)注

    2

    文章

    836

    瀏覽量

    3280

原文標(biāo)題:談?wù)凞eepSeek-R1滿血版推理部署和優(yōu)化

文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    DeepSeek R1 MTP在TensorRT-LLM中的實(shí)現(xiàn)與優(yōu)化

    。我們?cè)谥暗牟┛蚚1] 中介紹了 DeepSeek-R1 模型實(shí)現(xiàn)超低推理延遲的關(guān)鍵優(yōu)化措施。本文將深入探討 TensorRT-LLM 中
    的頭像 發(fā)表于 08-30 15:47 ?4469次閱讀
    <b class='flag-5'>DeepSeek</b> <b class='flag-5'>R1</b> MTP在TensorRT-LLM中的實(shí)現(xiàn)與<b class='flag-5'>優(yōu)化</b>

    速看!EASY-EAI教你離線部署Deepseek R1大模型

    1.Deepseek簡(jiǎn)介DeepSeek-R1,是幻方量化旗下AI公司深度求索(DeepSeek)研發(fā)的推理模型。DeepSeek-R1采用
    的頭像 發(fā)表于 07-25 15:22 ?1388次閱讀
    速看!EASY-EAI教你離線<b class='flag-5'>部署</b><b class='flag-5'>Deepseek</b> <b class='flag-5'>R1</b>大模型

    【「DeepSeek 核心技術(shù)揭秘」閱讀體驗(yàn)】--全書(shū)概覽

    講解Deepseek的使用方法 第三章 深入剖析Deepseek-V3的模型架構(gòu)、訓(xùn)練框架、推理階段優(yōu)化、后訓(xùn)練優(yōu)化等關(guān)鍵技術(shù) 第四章關(guān)于
    發(fā)表于 07-21 00:04

    【「DeepSeek 核心技術(shù)揭秘」閱讀體驗(yàn)】書(shū)籍介紹+第一章讀后心得

    相對(duì)策略優(yōu)化**(GRPO)算法、獎(jiǎng)勵(lì)模型**等關(guān)鍵技術(shù)的深入剖析,可以幫助讀者了解 DeepSeek 在強(qiáng)化學(xué)習(xí)領(lǐng)域的創(chuàng)新性探索。對(duì)DeepSeek-R1 的訓(xùn)練過(guò)程和
    發(fā)表于 07-17 11:59

    信而泰×DeepSeek:AI推理引擎驅(qū)動(dòng)網(wǎng)絡(luò)智能診斷邁向 “自愈”時(shí)代

    DeepSeek-R1:強(qiáng)大的AI推理引擎底座DeepSeek是由杭州深度求索人工智能基礎(chǔ)技術(shù)研究有限公司開(kāi)發(fā)的新一代AI大模型。其核心優(yōu)勢(shì)在于強(qiáng)大的推理引擎能力,融合了自然語(yǔ)言處理(
    發(fā)表于 07-16 15:29

    Arm Neoverse N2平臺(tái)實(shí)現(xiàn)DeepSeek-R1滿血部署

    頗具優(yōu)勢(shì)。Arm 攜手合作伙伴,在 Arm Neoverse N2 平臺(tái)上使用開(kāi)源推理框架 llama.cpp 實(shí)現(xiàn) DeepSeek-R1 滿血版的部署,目前已可提供線上服務(wù)。
    的頭像 發(fā)表于 07-03 14:37 ?1255次閱讀
    Arm Neoverse N2平臺(tái)實(shí)現(xiàn)<b class='flag-5'>DeepSeek-R1</b><b class='flag-5'>滿血</b>版<b class='flag-5'>部署</b>

    NVIDIA Blackwell GPU優(yōu)化DeepSeek-R1性能 打破DeepSeek-R1在最小延遲場(chǎng)景中的性能紀(jì)錄

    本文將探討 NVIDIA TensorRT-LLM 如何基于 8 個(gè) NVIDIA Blackwell GPU 的配置,打破 DeepSeek-R1 在最小延遲場(chǎng)景中的性能紀(jì)錄:在 GTC 2025
    的頭像 發(fā)表于 07-02 19:31 ?3303次閱讀
    NVIDIA Blackwell GPU<b class='flag-5'>優(yōu)化</b><b class='flag-5'>DeepSeek-R1</b>性能 打破<b class='flag-5'>DeepSeek-R1</b>在最小延遲場(chǎng)景中的性能紀(jì)錄

    【書(shū)籍評(píng)測(cè)活動(dòng)NO.62】一本書(shū)讀懂 DeepSeek 全家桶核心技術(shù):DeepSeek 核心技術(shù)揭秘

    的基礎(chǔ)。對(duì) DeepSeek-R1-Zero 的組相對(duì)策略優(yōu)化**(GRPO)算法、獎(jiǎng)勵(lì)模型**等關(guān)鍵技術(shù)的深入剖析,可以幫助讀者了解 DeepSeek 在強(qiáng)化學(xué)習(xí)領(lǐng)域的創(chuàng)新性探索。對(duì)
    發(fā)表于 06-09 14:38

    【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】CPU部署DeekSeek-R1模型(1B和7B)

    優(yōu)化:動(dòng)態(tài)分配計(jì)算資源至關(guān)鍵token 中文優(yōu)化:在Wudao Corpus等中文數(shù)據(jù)集上強(qiáng)化訓(xùn)練 技術(shù)突破: 相比傳統(tǒng)LLM,DeepSeek-R1通過(guò)以下創(chuàng)新實(shí)現(xiàn)低資源部署: Mo
    發(fā)表于 04-21 00:39

    南京市政務(wù)云基于華為云Stack成功部署DeepSeek滿血版大模型

    近期,南京市政務(wù)云基于華為云Stack成功部署上線滿血DeepSeek-R1-671B,實(shí)現(xiàn)了“南京+DeepSeek滿血版”的人工智能政
    的頭像 發(fā)表于 03-31 09:30 ?1017次閱讀

    【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】DeepSeek 部署及測(cè)試

    的 AI 對(duì)話體驗(yàn),并引起廣泛關(guān)注。經(jīng)過(guò)多次技術(shù)迭代與優(yōu)化,DeepSeek-R1 的性能已經(jīng)可以媲美 ChatGPT,甚至在某些方面有所超越。更多信息可查看官方資料 。 DeepSeek R
    發(fā)表于 03-21 19:31

    沐曦加速DeepSeek滿血版單卡C500異構(gòu)推理

    近日,基于開(kāi)源KTransformers架構(gòu)的 CPU/GPU 異構(gòu)推理能力,沐曦在曦云C500單卡GPU上成功實(shí)現(xiàn)DeepSeek-R1-671B滿血版單并發(fā)解碼吞吐16.5 tokens/s的優(yōu)異成績(jī),相比社區(qū)官方數(shù)據(jù)提升2
    的頭像 發(fā)表于 03-20 15:52 ?2271次閱讀

    如何使用OpenVINO運(yùn)行DeepSeek-R1蒸餾模型

    DeepSeek-R1在春節(jié)期間引發(fā)了全球科技界的熱度,DeepSeek-R1 是由 DeepSeek 開(kāi)發(fā)的開(kāi)源推理模型,用于解決需要邏輯推理
    的頭像 發(fā)表于 03-12 13:45 ?2393次閱讀
    如何使用OpenVINO運(yùn)行<b class='flag-5'>DeepSeek-R1</b>蒸餾模型

    在英特爾哪吒開(kāi)發(fā)套件上部署DeepSeek-R1的實(shí)現(xiàn)方式

    隨著人工智能技術(shù)的快速發(fā)展,企業(yè)對(duì) AI 模型的部署方式有了更多選擇。本地部署 DeepSeek-R1 模型具有以下顯著優(yōu)勢(shì),使其成為許多企業(yè)和開(kāi)發(fā)者的首選。
    的頭像 發(fā)表于 03-12 13:38 ?1147次閱讀
    在英特爾哪吒開(kāi)發(fā)套件上<b class='flag-5'>部署</b><b class='flag-5'>DeepSeek-R1</b>的實(shí)現(xiàn)方式

    DeepSeek-R1:別被它的光環(huán)迷了眼,這些能力局限你得知道!

    作者:算力魔方創(chuàng)始人/英特爾創(chuàng)新大使劉力 最近,DeepSeek-R1 可是火遍了全網(wǎng),號(hào)稱(chēng)“超越人類(lèi)專(zhuān)家”,數(shù)學(xué)競(jìng)賽奪冠、代碼能力碾壓人類(lèi)開(kāi)發(fā)者……聽(tīng)起來(lái)是不是很厲害?但別急著被這些光環(huán)迷了眼
    的頭像 發(fā)表于 03-11 17:19 ?1042次閱讀
    <b class='flag-5'>DeepSeek-R1</b>:別被它的光環(huán)迷了眼,這些能力局限你得知道!