南昌新建網(wǎng)站建設(shè)南京網(wǎng)絡(luò)推廣公司排名
概況
這個是deepseek發(fā)布的第一版模型對應(yīng)的技術(shù)報告,模型發(fā)布于23年11月,本報告發(fā)布于24年1月。
模型有7B和67B兩個版本。
雖然本報告中還沒有用上后面V2/V3和R1中的關(guān)鍵技術(shù)例如MLA、MTP、GRPO,但是報告中已經(jīng)指明了MoE、強化學(xué)習等未來的方向,并且在infra方面給了比較多的重視,這也將是后續(xù)訓(xùn)練成本低的關(guān)鍵。
模型結(jié)構(gòu)
模型設(shè)計上遵循了Llama的結(jié)構(gòu),也就是RMSNorm+RoPE位置編碼等特征,MLP表達式: ,MLP的維度是隱藏層維度的8/3。
在67B模型中,使用了GQA,下圖可以看出,64個注意力頭被分成了8組,每組的8個頭共享相同的計算KV時的權(quán)重參數(shù)。
還有一點值得注意,67B模型的層數(shù)是95層,MLP的維度是隱藏層維度的8/3;而Llama-70B的模型層數(shù)是80層,MLP的維度是隱藏層維度的3.5倍。也就是說,deepseek LLM的結(jié)構(gòu)更深更細。
訓(xùn)練
在訓(xùn)練過程中,沒有使用余弦學(xué)習率調(diào)度器,而是使用多步學(xué)習率調(diào)度器:在2000個預(yù)熱步驟之后達到最大學(xué)習率,處理80%的訓(xùn)練數(shù)據(jù)后學(xué)習率降到最大值的31.6%,處理90%后降低到10%
infra
- 使用幻方自己研發(fā)的HAI-LLM訓(xùn)練框架來訓(xùn)練和評估大型語言模型。該框架集成了數(shù)據(jù)并行性、張量并行性、序列并行性和1F1B流水線并行性,正如在Megatron中所做的那樣。
- 我們還利用了flash attention技術(shù)來提高硬件利用率。
- ZeRO-1被用來將 優(yōu)化器狀態(tài) 分割到 數(shù)據(jù)并行的各個 rank 上。
- 我們還努力重疊計算和通信,以最小化額外的等待開銷,包括最后一個微批處理的反向過程和ZeRO-1中的reduce-scatter操作,以及序列并行中的GEMM計算和all-gather/reduce-scatter。
- 使用圖融合和算子融合以加快訓(xùn)練速度,包括盡可能的LayerNorm、GEMM和Adam更新。為了提高模型訓(xùn)練的穩(wěn)定性,我們在bf16精度下訓(xùn)練模型,但在fp32精度下累積梯度。
- 在位交叉熵被用來減少GPU內(nèi)存消耗,即:我們在交叉熵CUDA內(nèi)核中實時將bf16日志轉(zhuǎn)換為fp32精度(而不是預(yù)先在HBM中轉(zhuǎn)換),計算相應(yīng)的bf16梯度,并用其梯度覆蓋日志。
- 模型權(quán)重和優(yōu)化器狀態(tài)每5分鐘異步保存一次,這意味著在偶爾的硬件或網(wǎng)絡(luò)故障的最壞情況下,我們不會丟失超過5分鐘的訓(xùn)練。這些臨時模型檢查點定期被清理,以避免消耗過多的存儲空間。我們還支持從不同的3D并行配置恢復(fù)訓(xùn)練,以應(yīng)對計算集群負載的動態(tài)變化。
- 至于評估,在生成任務(wù)中使用vLLM,并在非生成任務(wù)中使用連續(xù)批處理,以避免手動批處理大小調(diào)整并減少標記填充。
可以看出deepseek在最初的訓(xùn)練過程中,就注重通過優(yōu)化infra來降低訓(xùn)練成本。
scaling law
這一塊的研究,就是為了從模型的規(guī)模找到該規(guī)模對應(yīng)的最佳超參數(shù),即最佳lr和最佳batch_size
討論了scaling-law和超參數(shù)之間的關(guān)系,最主要的超參數(shù)就是learning_rate和batch_size。通過研究超參數(shù)與計算預(yù)算(模型規(guī)模*數(shù)據(jù)量)之間的關(guān)系,提出了超參數(shù)的scaling-law,以確保不同計算預(yù)算下的模型能達到最優(yōu)性能。
模型規(guī)模并沒有用模型參數(shù)量來衡量,而是用非嵌入的 FLOPs/token (M) ,也就是每個token計算時需要的浮點計算數(shù)。報告中使用了來表示模型規(guī)模,也就是每個token需要經(jīng)歷的transformer layer中的計算量,而沒有把也計算在參數(shù)量中的詞表嵌入考慮在內(nèi)。
于是計算預(yù)算的公式由變成了,N是模型參數(shù),M是上面的非嵌入的flops/token,D是數(shù)據(jù)量
超參數(shù)的scaling-law:
下邊這個公式展示了兩個超參數(shù)與模型規(guī)模之間的關(guān)系,下圖表示了隨著模型規(guī)模的變化,超參數(shù)也發(fā)生變化。
通過計算預(yù)算來選擇合適的數(shù)據(jù)量和模型規(guī)模:
通常情況下,都是現(xiàn)有硬件和訓(xùn)練時長的預(yù)算,下一步才開始規(guī)劃模型的規(guī)模和訓(xùn)練數(shù)據(jù)的規(guī)模。因此,需要通過給定的C來得到M和D,使得訓(xùn)練過程的損失最小。
具體是如何選擇的:
- 選擇了不同的計算預(yù)算范圍(例如從 1e17到 3e20),對每個計算預(yù)算 C,設(shè)計了多個不同的 模型規(guī)模(M) 和 數(shù)據(jù)規(guī)模(D) 分配方案。
- 通過 IsoFLOP 方法,可以為每種分配方案計算出相應(yīng)的 泛化誤差。
- 得到一堆泛化誤差的數(shù)據(jù)點,這些數(shù)據(jù)點構(gòu)成了一個 損失縮放曲線,表示隨著計算預(yù)算的變化,模型的泛化誤差如何變化。
對齊
人類偏好對齊分成SFT和DPO兩步,共有150萬條數(shù)據(jù)
SFT的數(shù)據(jù)集主要有分成有用信息和無害化兩部分,其中有用信息有一般對話、數(shù)學(xué)和編程。
在微調(diào)過程中,有可能出現(xiàn)無限重復(fù)問題,也就是不停輸出相同的內(nèi)容。這一現(xiàn)象會隨著SFT中數(shù)學(xué)內(nèi)容比例增加而提升,這是因為數(shù)學(xué)中偶爾包含推理中的相似模式。為了解決這一問題,使用了兩階段SFT和DPO來減少重復(fù)。
兩階段SFT,第一階段涉及使用所有可用數(shù)據(jù)進行微調(diào),第二階段專注使用對話數(shù)據(jù)進行微調(diào)。
一些討論:
- 在訓(xùn)練數(shù)據(jù)中添加多選題能顯著提升模型解答多選的能力,因為解答多選不僅需要擁有相關(guān)知識,還需要理解選項含義。但是這并不會帶來對話任務(wù)上的提升,因此為了防止在基準任務(wù)過擬合,在訓(xùn)練和微調(diào)中完全排除掉了多選數(shù)據(jù)
- 關(guān)于system prompt,deepseek LLM在Llama的基礎(chǔ)上進行了輕微改動,最終在67B的模型上有所提升,但7B模型上性能反而下降。這可能是因為:更大的模型對系統(tǒng)提示背后的意圖有更好的理解,使它們能夠更有效地遵循指示并生成更優(yōu)秀的回答。另一方面,較小的模型難以充分理解系統(tǒng)提示,訓(xùn)練和測試之間的一致性可能對它們的性能產(chǎn)生負面影響。
總結(jié)
我們介紹了DeepSeek LLMs,一系列開源模型,這些模型是基于2T tokens的龐大數(shù)據(jù)集從零開始訓(xùn)練的。在本文中,我們提供了關(guān)于超參數(shù)選擇、scaling-law以及我們進行的各種微調(diào)嘗試的深入解釋。
- 我們校準了之前工作的scaling-law,并提出了一種新的最優(yōu)模型/數(shù)據(jù)擴展分配策略。
- 此外,我們提出了一種方法,可以在給定的計算預(yù)算下預(yù)測接近最優(yōu)的批量大小和學(xué)習率。
- 我們進一步得出結(jié)論,擴展規(guī)律與數(shù)據(jù)質(zhì)量有關(guān),這可能是不同工作中擴展行為變化的根本原因。在擴展規(guī)律的指導(dǎo)下,我們使用最佳超參數(shù)進行預(yù)訓(xùn)練,并提供了全面的評估。
DeepSeek Chat具有其他大型語言模型普遍存在的公認限制,包括預(yù)訓(xùn)練后缺乏持續(xù)的知識更新、可能生成未經(jīng)驗證的建議等非事實信息,以及傾向于產(chǎn)生幻覺。此外,值得注意的是,我們的中文數(shù)據(jù)的初始版本并不全面,這可能導(dǎo)致在某些特定中文主題上的性能不佳。由于我們的數(shù)據(jù)主要由中文和英文來源組成,模型在其他語言上的熟練程度仍然微妙,應(yīng)謹慎對待。
DeepSeek LLM是一個長期項目,致力于推進開源語言模型。
- 很快,我們將分別發(fā)布我們在代碼智能和**混合專家(MoE)**技術(shù)報告。它們展示了我們?nèi)绾蝿?chuàng)建高質(zhì)量的代碼數(shù)據(jù)進行預(yù)訓(xùn)練,以及如何設(shè)計稀疏模型以實現(xiàn)密集模型的性能。
- 目前,我們正在構(gòu)建一個更大且改進的數(shù)據(jù)集,用于即將到來的DeepSeek LLM版本。我們希望在下一個版本中,推理能力、中文知識、數(shù)學(xué)和代碼能力將得到顯著提升。
- 我們的對齊團隊致力于研究如何向公眾提供有幫助、誠實和安全的模型。我們的初步實驗表明,強化學(xué)習可以提升模型的復(fù)雜推理能力。
個人總結(jié):23年發(fā)布的第一版本的DeepSeek LLM是對開源LLM Llama的復(fù)刻,技術(shù)團隊在復(fù)刻的過程中積累了自己構(gòu)建的訓(xùn)練數(shù)據(jù)和訓(xùn)練經(jīng)驗,其中也包含了一些對超參數(shù)選擇的探究。但整體來說,由于訓(xùn)練數(shù)據(jù)量不夠大等原因,表現(xiàn)上也沒有很突出。不過,此時團隊已經(jīng)發(fā)現(xiàn)這些問題,并已經(jīng)在數(shù)據(jù)集、MoE架構(gòu)以及RL方面有了清晰的認知和具體的行動,這將為V2和V3的出現(xiàn)奠定基礎(chǔ)。