自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析 原創(chuàng) 精華

發(fā)布于 2025-4-21 11:21
瀏覽
0收藏

編者按: 這篇技術(shù)解析詳細(xì)闡述了 DeepSeek-V3-Base 的預(yù)訓(xùn)練階段所采用的關(guān)鍵技術(shù)。

文章重點(diǎn)介紹了三項(xiàng)核心技術(shù):Document Packing 技術(shù)有效解決了輸入序列長度差異導(dǎo)致的資源浪費(fèi)問題;Fill-in-the-Middle(FIM)采用 PSM 框架和特殊 tokens,使模型具備上下文感知的中間內(nèi)容生成能力;基于 YaRN 的長上下文窗口擴(kuò)展技術(shù)則通過頻率插值策略解決了位置編碼的擴(kuò)展挑戰(zhàn)。

隨后,文章詳細(xì)描述了 DeepSeek-V3-Base 的預(yù)訓(xùn)練過程,包括數(shù)據(jù)構(gòu)建、訓(xùn)練策略和評(píng)估結(jié)果。

評(píng)估顯示,這些技術(shù)組合使 DeepSeek-V3 每訓(xùn)練 1T token 僅需 180K NVIDIA H800 GPU 小時(shí)數(shù),并在“大海撈針”測(cè)試中展現(xiàn)卓越的長文本理解能力,為后續(xù) RL 階段奠定了優(yōu)質(zhì)基座。

作者 | Shirley Li

編譯 | 岳揚(yáng)

這是 DeepSeek 系列文章的第五篇,也是首篇聚焦 DeepSeek-V3 [1, 2] 訓(xùn)練流程的文章。

如下圖所示,DeepSeek-V3 的訓(xùn)練分為多個(gè)階段:

  • 產(chǎn)出 DeepSeek-V3-Base 基礎(chǔ)模型的預(yù)訓(xùn)練階段
  • 基于 DeepSeek-V3-Base,通過大規(guī)模強(qiáng)化學(xué)習(xí)(RL)分別訓(xùn)練出 DeepSeek-R1-Zero(無需監(jiān)督式微調(diào)冷啟動(dòng))和 DeepSeek-R1(含有監(jiān)督式微調(diào))
  • 利用 DeepSeek-R1 生成推理數(shù)據(jù),用于 DeepSeek-V3 的監(jiān)督式微調(diào)(SFT),接著是未在圖中展示的 RL 階段。

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

圖 1. DeepSeek-V3 訓(xùn)練流程示意圖(由原文作者繪制)

本文將重點(diǎn)關(guān)注產(chǎn)出 DeepSeek-V3-Base 的預(yù)訓(xùn)練階段,闡述該階段實(shí)現(xiàn)高效預(yù)訓(xùn)練的關(guān)鍵技術(shù)。后續(xù)文章將涵蓋:

  • 群組相對(duì)策略優(yōu)化(GRPO)[7]
  • DeepSeek-R1-Zero 和 DeepSeek-R1 的訓(xùn)練細(xì)節(jié)
  • DeepSeek-V3 的后訓(xùn)練階段(監(jiān)督式微調(diào)與 RL 階段)

目錄

  • 技術(shù)背景:解析 DeepSeek-V3 預(yù)訓(xùn)練階段的相關(guān)技術(shù),包括 Document Packing,F(xiàn)ill-in-Middle 和 long context extension。
  • 預(yù)訓(xùn)練階段:詳解如何構(gòu)建預(yù)訓(xùn)練數(shù)據(jù)、強(qiáng)調(diào)一些關(guān)鍵的訓(xùn)練策略,并回顧評(píng)估結(jié)果。
  • 總結(jié)
  • 參考文獻(xiàn)

01 技術(shù)背景

本節(jié)將介紹預(yù)訓(xùn)練 DeepSeek-V3 過程中使用的幾種技術(shù),包括 document packing、Fill-in-the-Middle(FIM)和基于 YaRN 的長上下文窗口擴(kuò)展技術(shù)。

1.1 Document Packing

要理解為什么需要 document packing,我們首先需要回顧一下 Transformer 模型是如何構(gòu)建輸入序列 tokens 的。

Transformer 模型默認(rèn)情況下需要固定長度的 token 序列作為輸入,然而同一 batch 的文本輸入往往長度不同。為了適應(yīng)這種情況,文本輸入通常需要經(jīng)過以下預(yù)處理步驟:

  • 將所有原始文本輸入分詞為 token 序列
  • 將 token 序列截?cái)嗷蛱畛涞筋A(yù)定義的固定長度(max_seq_len):若原始序列過長則截?cái)啵駝t用特殊 [PAD] token 進(jìn)行填充
  • 生成掩碼 IDs 使模型在訓(xùn)練時(shí)能忽略填充的 token

為了更清晰地展示這個(gè)過程,以下這個(gè)示例我們將使用 GPT-2 [10]的分詞器處理兩個(gè)句子:

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

運(yùn)行上述腳本后,會(huì)得到如下輸出,其中:

  • 第一句話被填充了 4 個(gè)額外的 padding token,體現(xiàn)在 input_ids 和 mask_ids 中;
  • 第二句被截?cái)?,因此無需添加 padding token。

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

圖 2. 填充操作示例(此圖由作者繪制)

上述截?cái)嗪吞畛浞椒m然能讓模型處理不同長度的輸入,但當(dāng)輸入序列長度差異過大時(shí)(這在 LLM 訓(xùn)練中非常常見)會(huì)引發(fā)一系列問題:

  • 對(duì)超長序列,截?cái)嗫赡軐?dǎo)致有用信息丟失
  • 對(duì)較短的序列,填充過多 token 會(huì)造成計(jì)算資源浪費(fèi)

因此,LLM 訓(xùn)練通常采用 document packing 技術(shù)來處理輸入序列。

更具體地說,如果給定若干長度不同的文檔,我們首先將其分割為較小的塊(chunk),如下圖所示(用不同顏色代表不同文檔):

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

圖 3. 文檔分割(圖片改編自文獻(xiàn)[3])

隨后,我們將不同文檔的塊(chunk)進(jìn)行拼接,以避免對(duì)長文檔進(jìn)行截?cái)嗪蛯?duì)短文檔進(jìn)行填充:

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

圖 4. 傳統(tǒng)拼接方式(圖片改編自文獻(xiàn)[3])

在上例中:

  • 第一個(gè)輸入(譯者注:圖 4 第一行)僅包含文檔 1 的 tokens
  • 第二個(gè)輸入(譯者注:圖 4 第二行)拼接自文檔 1 和文檔 2 的 tokens
  • 第三個(gè)輸入(譯者注:圖 4 第三行)拼接自文檔 2 和文檔 3 的 tokens
  • 第四個(gè)輸入(譯者注:圖 4 第四行)拼接自文檔3、4、5 的 tokens

這種方法雖能在一定程度上避免進(jìn)行填充和截?cái)?,但由于僅按數(shù)據(jù)中的相對(duì)順序拼接來自不同文檔的塊(chunks),無法控制最終輸入序列的構(gòu)建方式。 例如:文檔 3(紫色)被不必要地分割為兩部分,盡管其實(shí)際長度小于 max_seq_len,可以完整放入。

為了解決這個(gè)問題,文獻(xiàn) [3] 提出了 Best-fit Packing 技術(shù),通過兩個(gè)步驟完全消除不必要的分割:

  • Step 1:將每個(gè)文檔分割為更小的塊。
  • Step 2:以一種智能的方式將這些塊(chunks)分組為訓(xùn)練序列,確保在不進(jìn)一步分割任何塊(chunks)的前提下生成最少量的序列。

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

圖 5. Best-fit packing技術(shù)(此圖改編自文獻(xiàn)[3])

1.2 Fill-in-the-Middle(FIM)

在傳統(tǒng)的自回歸生成中,只能以從左到右的方式訓(xùn)練模型,即模型只能根據(jù)前面的 tokens 預(yù)測(cè)下一個(gè) token。然而在實(shí)際應(yīng)用中,模型常需根據(jù)上下文生成中間缺失的內(nèi)容。 尤其在代碼生成場(chǎng)景中 —— 我們常會(huì)給定輸入/輸出和部分代碼片段,要求模型填充中間邏輯,如下例所示:

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

為了適配此類需求,文獻(xiàn) [4] 提出了一種簡(jiǎn)單有效的方法,稱為 “fill-in-the-middle”:即將文檔隨機(jī)切分為 prefix、middle 和 suffix 三部分,然后將 middle 部分移至末尾:

由于數(shù)據(jù)組織形式為 "Prefix-Suffix-Middle",該方法常被稱為 PSM 框架。實(shí)際實(shí)現(xiàn)時(shí)通過添加特殊 token 來標(biāo)記各部分的邊界:

其中:

  • <|fim_begin|>和<|fim_hole|>標(biāo)記 prefix 部分
  • <|fim_hole|>和<|fim_end|>標(biāo)記 suffix 部分
  • <|fim_end|>和<|eos_token|>標(biāo)記 middle 部分

以如下輸入為例:

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

若需模型預(yù)測(cè)第二行代碼,可將該行作為 middle 部分,并構(gòu)造 FIM 輸入如下:

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

圖 6. PSM 框架示意圖(此圖由作者繪制)

此時(shí)模型的預(yù)期輸出應(yīng)為:

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

1.3 基于 YaRN 的長上下文窗口擴(kuò)展技術(shù)

現(xiàn)代 LLM 常需處理極長的提示詞(如整個(gè)代碼倉庫),但直接使用 128K 等長上下文窗口進(jìn)行預(yù)訓(xùn)練并不現(xiàn)實(shí)。多數(shù) LLM 采用分階段漸進(jìn)式擴(kuò)展策略:先在較小的上下文窗口進(jìn)行預(yù)訓(xùn)練,再分多個(gè)階段逐步擴(kuò)展到更長的上下文窗口,從而大大降低訓(xùn)練成本。

例如,在 DeepSeek-V3 中,模型首先使用 4K 的上下文窗口完成預(yù)訓(xùn)練,然后再分兩階段擴(kuò)展到 128K:

  • 第一階段:從 4K 到 32K(1000 steps)
  • 第二階段:從 32K 到 128K(再 1000 steps)

需特別指出的是,這種擴(kuò)展不能通過簡(jiǎn)單調(diào)大上下文窗口實(shí)現(xiàn),而需借助基于旋轉(zhuǎn)位置編碼(RoPE)改進(jìn)的 YaRN(Yet another RoPE extensioN)技術(shù)對(duì)位置編碼進(jìn)行修改。

關(guān)于 RoPE 的詳細(xì)介紹,請(qǐng)參閱我們之前的文章《「DeepSeek-V3 技術(shù)解析」:多頭潛在注意力機(jī)制(MLA)》。

RoPE 是一種相對(duì)位置編碼方法,其核心思想是通過使用復(fù)雜的旋轉(zhuǎn)嵌入修改 Query 和 Key,使得二者的內(nèi)積依賴于它們的相對(duì)位置:

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

然而,由于余弦函數(shù)和正弦函數(shù)是周期性的,(pos_i, pos_j) 之間的內(nèi)積可能看起來與 (pos_i, pos_k) 之間的內(nèi)積相似,因此在固定 θ 的情況下,僅使用 1K tokens(即位置索引 1~1000) 進(jìn)行預(yù)訓(xùn)練的模型在測(cè)試時(shí)可能會(huì)混淆,因?yàn)闇y(cè)試時(shí)遇到的位置索引(如 5K 或 10K)可能遠(yuǎn)遠(yuǎn)超出了預(yù)訓(xùn)練時(shí)的上下文窗口。

下圖展示了這種現(xiàn)象:當(dāng) 32K 上下文窗口的預(yù)訓(xùn)練模型在超出該窗口的位置測(cè)試時(shí),困惑度(Perplexity)急劇上升

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

圖 7. 困惑度與上下文窗口的關(guān)系(此圖由作者繪制)

那么,YaRN 是如何應(yīng)對(duì)這一挑戰(zhàn)的呢?

既然外推法(extrapolate)效果欠佳,YaRN 轉(zhuǎn)而采用插值頻率(interpolate the frequency)的策略。

假設(shè)我們有一個(gè)在 4 個(gè) token 長度的輸入上訓(xùn)練的模型,希望將其擴(kuò)展到 8 個(gè) token,且基礎(chǔ)頻率 θ=0.5。

對(duì)于原始 RoPE,直接使用 cos(θ×pos) 和 sin(θ×pos) 對(duì) Query 和 Key 進(jìn)行旋轉(zhuǎn)即可。

而對(duì)于 YaRN:

  • 首先,計(jì)算擴(kuò)展后的上下文長度與原始長度的比值作為縮放因子,本例中為 2。
  • 然后,生成新頻率 θ' = θ / 2 = 0.25。
  • 再使用新頻率對(duì) Query 和 Key 進(jìn)行旋轉(zhuǎn),即 cos(θ'×pos) 和 sin(θ'×pos)。

下圖對(duì)比了 RoPE 與 YaRN 的 cos 和 sin 值:

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

圖 8. YaRN 工作原理示意圖(此圖由作者繪制)

通過該圖可觀察到:

  • 在 RoPE 中,cos 和 sin 值會(huì)隨位置索引的增加而快速振蕩,導(dǎo)致擴(kuò)展到更長的上下文時(shí)出現(xiàn)問題。
  • 而在 YaRN 中,原始的余弦和正弦函數(shù)通過頻率縮放被插值到擴(kuò)展后的上下文長度(如藍(lán)色高亮區(qū)域所示),實(shí)現(xiàn)了更平滑的過渡,使得模型能夠更有效地處理長序列。

下圖展示了 DeepSeek-V3 在"大海撈針"(Needle In A Haystack,NIAH)測(cè)試中的表現(xiàn),表明其在 128K 以下的上下文窗口長度中均表現(xiàn)出色:

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

圖 9. DeepSeek-V3 的"大海撈針"測(cè)試結(jié)果(引自文獻(xiàn)[2])

02 預(yù)訓(xùn)練階段

本節(jié)將介紹 DeepSeek-V3-Base 的訓(xùn)練方法,重點(diǎn)解析數(shù)據(jù)構(gòu)建流程,并強(qiáng)調(diào)預(yù)訓(xùn)練階段中的一些關(guān)鍵策略。

2.1 數(shù)據(jù)構(gòu)建

數(shù)據(jù)規(guī)模與質(zhì)量對(duì) LLM 訓(xùn)練至關(guān)重要。DeepSeek-V3 的預(yù)訓(xùn)練語料庫通過持續(xù)優(yōu)化策略構(gòu)建,具體優(yōu)化路徑如下:

  • 在 DeepSeek 67B [8] 中,訓(xùn)練語料采用去重-過濾-再混合策略構(gòu)建。首先對(duì) Common Crawl 語料進(jìn)行去重,隨后通過嚴(yán)格的文檔質(zhì)量評(píng)估標(biāo)準(zhǔn)進(jìn)行過濾,最后通過數(shù)據(jù)再混合階段解決數(shù)據(jù)不平衡問題。
  • 在 DeepSeek-V2 [9] 中,通過以下方式擴(kuò)展訓(xùn)練語料:1)增加更多中文數(shù)據(jù)及來自不同來源的高質(zhì)量數(shù)據(jù);2)通過優(yōu)化數(shù)據(jù)清洗流程,恢復(fù)大量此前在文獻(xiàn) [8] 的策略中被刪除的數(shù)據(jù)。同時(shí),通過改進(jìn)基于質(zhì)量的過濾算法提升數(shù)據(jù)質(zhì)量。
  • 在 DeepSeek-V3 [2] 中,預(yù)訓(xùn)練語料進(jìn)一步擴(kuò)充,加入更多數(shù)學(xué)與編程樣本,以及除中英文之外的多語言樣本。

收集的預(yù)訓(xùn)練語料會(huì)通過前文提出的 Prefix-Suffix-Middle(PSM)框架結(jié)合 FIM(Fill-in-Middle)策略進(jìn)行預(yù)處理,并應(yīng)用 document-packing 技術(shù)。

2.2 訓(xùn)練策略

原論文[2]對(duì)預(yù)訓(xùn)練參數(shù)進(jìn)行了詳細(xì)描述,此處我們僅強(qiáng)調(diào)幾個(gè)關(guān)鍵點(diǎn):

  • 長上下文窗口擴(kuò)展:首先在 14.8T token 上以 4K 上下文窗口進(jìn)行預(yù)訓(xùn)練,隨后通過 1000 steps 擴(kuò)展到 32K 上下文,最終再通過 1000 steps 擴(kuò)展到 128K 上下文。
  • 多詞元預(yù)測(cè):如我們本系列前一篇文章《「DeepSeek-V3 技術(shù)解析」:多詞元預(yù)測(cè)技術(shù)(Multi-Token Prediction, MTP)》所述,DeepSeek-V3 采用了優(yōu)化版的多詞元預(yù)測(cè)機(jī)制,允許模型同時(shí)解碼多個(gè)詞元(tokens),以加速訓(xùn)練中的解碼過程。
  • 以 FP8 精度進(jìn)行訓(xùn)練:DeepSeek-V3 采用混合精度計(jì)算提升效率,對(duì)部分計(jì)算使用低精度格式(如 8-bit 浮點(diǎn)數(shù)),在不過度影響精度的前提下減少內(nèi)存占用并加速計(jì)算。
  • 學(xué)習(xí)率的調(diào)度:在前 2K steps 中,學(xué)習(xí)率(learning rate)從 0 線性增長至 2.2e–4,并在 10T token 的訓(xùn)練過程中保持恒定;隨后在 4.3T token 的訓(xùn)練過程中按照余弦曲線下降至 2.2e-5;在最后 500B token 的訓(xùn)練過程中,前 333B token 保持恒定的學(xué)習(xí)率,剩余 167B token 進(jìn)一步降至 7.3e-6。
  • Batch size 的調(diào)度:在前 469B token 的訓(xùn)練過程中,Batch size 從 3072 逐步提升至 15360,后續(xù)訓(xùn)練中保持恒定。

2.3 評(píng)估結(jié)果

下表對(duì)比了 DeepSeek-V3 與其他開源基座模型在不同任務(wù)上的表現(xiàn)。其中 DeepSeek-V3 在多數(shù)數(shù)據(jù)集上都取得了最佳性能,尤其是在數(shù)學(xué)與代碼相關(guān)的任務(wù)中表現(xiàn)突出。

需特別說明,得益于本系列文章中介紹的各項(xiàng)創(chuàng)新技術(shù),DeepSeek-V3 的優(yōu)異性能是在極高的訓(xùn)練效率下實(shí)現(xiàn)的。具體而言,DeepSeek-V3 每訓(xùn)練 1T token 僅需 180K H800 GPU hours,遠(yuǎn)低于訓(xùn)練 72B 或 405B 稠密模型的成本。

「DeepSeek-V3 技術(shù)解析」:DeepSeek-V3-Base 預(yù)訓(xùn)練階段解析-AI.x社區(qū)

文獻(xiàn)[2]中的表 3

文獻(xiàn) [2] 還通過全面的消融實(shí)驗(yàn)驗(yàn)證了無輔助損失函數(shù)的負(fù)載均衡、多詞元預(yù)測(cè)等關(guān)鍵技術(shù)。由于我們已在前文中討論過相關(guān)內(nèi)容,此處不再贅述。

03 總結(jié)

本文探討了 DeepSeek-V3 預(yù)訓(xùn)練策略中的關(guān)鍵創(chuàng)新,旨在提升效率、可擴(kuò)展性與性能。由此產(chǎn)生的 DeepSeek-V3-Base 模型成為更高級(jí)推理模型(如 DeepSeek-R1-Zero 和 DeepSeek-R1)的基礎(chǔ),而這些模型又通過知識(shí)蒸餾反哺優(yōu)化 DeepSeek-V3。

除此前討論的架構(gòu)創(chuàng)新 —— 多頭潛在注意力(Multi-head Latent Attention)、DeepSeekMoE、無輔助損失函數(shù)的負(fù)載均衡及多詞元預(yù)測(cè)(Multi-token Prediction)外,本文還引入了包括 document packing、Fill-in-the-Middle(FIM)和基于 YaRN 的長上下文窗口擴(kuò)展在內(nèi)的多項(xiàng)技術(shù)。

這些技術(shù)共同推動(dòng)了大語言模型效率與可擴(kuò)展性邊界的突破,為高性能 AI 模型設(shè)立了新標(biāo)桿。

參考文獻(xiàn)

[1] DeepSeek(??https://www.deepseek.com/)??

[2] DeepSeek-V3 Technical Report(??https://github.com/deepseek-ai/DeepSeek-V3/blob/main/DeepSeek_V3.pdf)??

[3] Fewer Truncations Improve Language Modeling(??https://arxiv.org/abs/2404.10830)??

[4] Efficient Training of Language Models to Fill in the Middle(??https://arxiv.org/abs/2207.14255)??

[4] DeepSeek-Coder: When the Large Language Model Meets Programming — The Rise of Code Intelligence(??https://arxiv.org/abs/2401.14196)??

[5] DeepSeek-Coder-V2: Breaking the Barrier of Closed-Source Models in Code Intelligence(??https://arxiv.org/abs/2406.11931)??

[6] YaRN: Efficient Context Window Extension of Large Language Models(??https://arxiv.org/abs/2309.00071)??

[7] DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models(??https://arxiv.org/abs/2402.03300)??

[8] DeepSeek LLM: Scaling Open-Source Language Models with Longtermism(??https://arxiv.org/pdf/2401.02954)??

[9] DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model(??https://arxiv.org/abs/2405.04434)??

[10] Language Models are Unsupervised Multitask Learners(??https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf)??

Thanks for reading!

Hope you have enjoyed and learned new things from this blog!

About the author

Shirley Li

I am a Machine Learning Engineer working on building multi-modality models to solve real-world problems.

END

本期互動(dòng)內(nèi)容 ??

?當(dāng)前位置編碼方案(RoPE/YaRN)已支持 128K 上下文,但人類書籍平均長度約 200K tokens。要實(shí)現(xiàn)真正無損的長文檔理解,您認(rèn)為下一代位置編碼需要突破哪些理論瓶頸?

原文鏈接:

??https://medium.com/data-science-collective/deepseek-explained-5-deepseek-v3-base-86c078ed5504??


?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦