【大模型LLM】DeepSeek LLM Scaling Open-Source Language Models with Longtermism

深度探索LLM:以長期主義擴展開源語言模型
在這里插入圖片描述

0.論文摘要

開源大語言模型(LLMs)的快速發展確實令人矚目。然而,以往文獻中描述的擴展規律得出了不同的結論,這為LLMs的擴展蒙上了一層陰影。我們深入研究了擴展規律,并提出了獨特的研究成果,這些成果有助于在兩種廣泛使用的開源配置(7B和67B)中擴展大規模模型。在擴展規律的指導下,我們推出了DeepSeek LLM項目,致力于從長遠角度推動開源語言模型的發展。為了支持預訓練階段,我們開發了一個目前包含2萬億token且不斷擴展的數據集。我們進一步對DeepSeek LLM基礎模型進行了監督微調(SFT)和直接偏好優化(DPO),從而創建了DeepSeek Chat模型。我們的評估結果表明,DeepSeek LLM 67B在一系列基準測試中超越了LLaMA-2 70B,尤其是在代碼、數學和推理領域。此外,開放式評估顯示,我們的DeepSeek LLM 67B Chat在性能上優于GPT-3.5。

1.引言

在過去的幾年中,基于僅解碼器架構的Transformer(Vaswani等,2017)的大型語言模型(LLMs)逐漸成為實現人工通用智能(AGI)的基石和途徑。通過預測連續文本中的下一個詞,LLMs在大量數據集上進行了自監督預訓練,使其能夠實現多種目的并具備多種能力,如創新創作、文本摘要、代碼補全等。后續的監督微調和獎勵建模等發展,使大型語言模型(LLMs)能夠更好地遵循用戶的意圖和指令。這賦予了它們更廣泛的對話能力,并迅速擴大了其影響力。

這一波浪潮由閉源產品引發,例如ChatGPT(OpenAI,2022)、Claude(Anthropic,2023)和Bard(Google,2023),這些產品在開發過程中投入了大量的計算資源和標注成本。這些產品顯著提高了社區對開源大語言模型(LLM)能力的期望,從而激發了一系列相關研究(Bai等,2023;Du等,2022;Jiang等,2023;Touvron等,2023a,b;Yang等,2023)。其中,LLaMA系列模型(Touvron等,2023a,b)尤為突出。它整合了一系列工作,構建了一個高效且穩定的架構,打造了從7B到70B參數范圍內表現優異的模型。因此,LLaMA系列已成為開源模型在架構和性能方面的實際基準。

繼LLaMA之后,開源社區主要專注于訓練固定規模(7B、13B、34B和70B)的高質量模型,往往忽視了對大語言模型(LLM)擴展規律的研究探索(Hoffmann等,2022;Kaplan等,2020)。然而,考慮到當前開源模型僅處于通用人工智能(AGI)發展的初始階段,擴展規律的研究至關重要。此外,早期研究(Hoffmann等,2022;Kaplan等,2020)在模型和數據隨計算預算增加的擴展問題上得出了不同的結論,且對超參數的討論不夠充分。在本文中,我們深入研究了語言模型的擴展行為,并將研究結果應用于兩種廣泛使用的大規模模型配置,即7B和67B。我們的研究旨在為未來開源LLM的擴展奠定基礎,推動該領域的進一步發展。具體而言,我們首先考察了批量大小和學習率的擴展規律,并發現了它們隨模型規模變化的趨勢。在此基礎上,我們對數據和模型規模的擴展規律進行了全面研究,成功揭示了最優的模型/數據擴展分配策略,并預測了我們大規模模型的預期性能。此外,在開發過程中,我們發現不同數據集得出的擴展規律存在顯著差異。這表明數據集的選擇對擴展行為有顯著影響,因此在跨數據集推廣擴展規律時應謹慎行事。

在我們的擴展法則指導下,我們從零開始構建開源的大型語言模型,并盡可能多地發布信息以供社區參考。我們收集了2萬億個token用于預訓練,主要涵蓋中文和英文。在模型層面,我們基本遵循了LLaMA的架構,但將余弦學習率調度器替換為多步學習率調度器,在保持性能的同時便于持續訓練。我們從多種來源收集了超過100萬個實例用于監督微調(SFT)(Ouyang等,2022)。本文分享了我們在不同SFT策略和數據消融技術中的經驗與發現。此外,我們還利用直接偏好優化(DPO)(Rafailov等,2023)來提升模型的對話性能。

我們使用基礎模型和對話模型進行了廣泛的評估。評估結果表明,DeepSeek LLM 在各種基準測試中均超越了 LLaMA-2 70B,特別是在代碼、數學和推理領域。經過 SFT 和 DPO 訓練后,DeepSeek 67B 對話模型在中英文開放式評估中均優于 GPT-3.5。這凸顯了 DeepSeek 67B 在生成高質量回復和進行有意義對話方面的卓越表現。此外,安全性評估表明,DeepSeek 67B Chat 在實際應用中能夠提供無害的回復。

在本文的其余部分,我們首先在第2節中介紹DeepSeek LLM的預訓練基本概念,包括數據的構成、模型架構、基礎設施和超參數。在第3節中,我們詳細解釋了我們發現的縮放定律及其意義。此外,我們討論了選擇預訓練超參數背后的理由,并考慮了從縮放定律分析中獲得的見解。在第4節中,我們討論了我們的微調方法,涵蓋微調數據的構成以及在SFT和DPO階段的具體方法。隨后,我們在第5節中展示了DeepSeek LLM的詳細評估結果,包括基礎模型和聊天模型,以及它們在開放式評估和安全評估中的表現。最后,我們在第6節中討論了DeepSeek LLM的當前局限性和未來發展方向。

2.預訓練

2.1 數據

我們的主要目標是全面提升數據集的豐富性和多樣性。我們從權威來源(如Computer, 2023; Gao等, 2020; Penedo等, 2023; Touvron等, 2023a)中獲得了寶貴的見解。為了實現這些目標,我們將方法分為三個關鍵階段:去重、過濾和重混。去重和重混階段通過采樣唯一實例來確保數據的多樣性表示。過濾階段則提高了信息密度,從而使模型訓練更加高效和有效。

我們采用了激進的去重策略,擴大了去重范圍。我們的分析表明,對整個Common Crawl語料庫進行去重,相比在單個數據轉儲中進行去重,能夠移除更多的重復實例。表1顯示,跨91個數據轉儲進行去重,比單個數據轉儲方法多消除了四倍的文檔。

在這里插入圖片描述

在過濾階段,我們專注于制定穩健的文檔質量評估標準。這包括結合語言學和語義學評估的詳細分析,從個體和全局視角提供數據質量的全面視圖。在重新混合階段,我們調整方法以應對數據不平衡問題,重點增加代表性不足領域的占比。這一調整旨在實現更加平衡和包容的數據集,確保多樣化的觀點和信息得到充分體現。

在我們的分詞器中,我們基于tokenizers庫(Huggingface Team, 2019)實現了字節級字節對編碼(BBPE)算法。為了防止不同字符類別(如換行符、標點符號和中文-日文-韓文(CJK)符號)的標記被合并,我們采用了預分詞處理,類似于GPT-2(Radford et al., 2019)的做法。我們還選擇將數字拆分為單個數字,遵循了(Touvron et al., 2023a,b)中使用的方法。根據我們之前的經驗,我們將詞匯表中的常規標記數量設置為100000。分詞器在一個約24 GB的多語言語料庫上進行了訓練,并在最終詞匯表中增加了15個特殊標記,使總大小達到100015。為了確保訓練過程中的計算效率,并為未來可能需要的額外特殊標記預留空間,我們將模型的詞匯表大小配置為102400進行訓練。

2.2 架構

DeepSeek LLM的微觀設計主要遵循了LLaMA(Touvron等,2023a,b)的設計,采用了Pre-Norm結構,使用RMSNorm(Zhang和Sennrich,2019)函數,并將SwiGLU(Shazeer,2020)作為前饋網絡(FFN)的激活函數,中間層維度為8/3 dmodel。此外,它還引入了Rotary Embedding(Su等,2024)進行位置編碼。為了優化推理成本,67B模型采用了GroupedQuery Attention(GQA)(Ainslie等,2023)而非傳統的多頭注意力機制(MHA)。

然而,在宏觀設計上,DeepSeek LLM 略有不同。具體而言,DeepSeek LLM 7B 是一個 30 層的網絡,而 DeepSeek LLM 67B 則有 95 層。這些層數的調整在保持與其他開源模型參數一致的同時,也便于模型流水線劃分,以優化訓練和推理。

與大多數使用分組查詢注意力(GQA)的工作不同,我們擴展了67B模型的網絡深度,而不是像通常做法那樣增加FFN層的中間寬度,旨在獲得更好的性能。詳細的網絡規格可以在表2中找到。

在這里插入圖片描述

2.3 超參數

DeepSeek LLM 以標準差 0.006 初始化,并使用 AdamW 優化器(Loshchilov 和 Hutter,2017)進行訓練,其超參數如下: β 1 = 0.9 β_1 = 0.9 β1?=0.9 β 2 = 0.95 β_2 = 0.95 β2?=0.95,weight_decay = 0.1。

在預訓練過程中,采用了多步學習率調度器,而非典型的余弦調度器。具體而言,模型的學習率在2000次預熱步驟后達到最大值,然后在處理完80%的訓練token后降至最大值的31.6%。在處理完90%的token后,學習率進一步降至最大值的10%。訓練階段的梯度裁剪設置為1.0。

根據我們的實證研究結果,我們觀察到,盡管在訓練過程中損失下降的趨勢存在差異,但使用多步學習率調度器的最終性能與余弦調度器基本一致,如圖1(a)所示。在保持模型大小不變的情況下調整訓練規模時,多步學習率調度器允許重復使用第一階段的訓練,為持續訓練提供了獨特的便利性。因此,我們選擇多步學習率調度器作為默認設置。我們還在圖1(b)中展示了調整多步學習率調度器中不同階段的比例可以略微提升性能。然而,為了在持續訓練中的重復利用率和模型性能之間取得平衡,我們選擇了上述三個階段分別為80%、10%和10%的分布。

在這里插入圖片描述

圖1 | 使用不同學習率調度器或不同調度器參數時的訓練損失曲線。模型規模為16億參數,訓練數據集包含1000億個詞元。

批次大小和學習率隨模型規模而變化。7B和67B模型預訓練階段的具體參數可在表2中找到。
在這里插入圖片描述

2.4 基礎設施

我們使用一種高效且輕量級的訓練框架HAI-LLM(High-flyer,2023)來訓練和評估大語言模型。該框架集成了數據并行、張量并行、序列并行和1F1B流水線并行,如Megatron(Korthikanti等,2023;Narayanan等,2021;Shoeybi等,2019)中所實現的那樣。我們還利用閃存注意力(Dao,2023;Dao等,2022)技術來提高硬件利用率。ZeRO-1(Rajbhandari等,2020)被用于在數據并行等級上劃分優化器狀態。我們還努力重疊計算和通信,以最小化額外的等待開銷,包括最后一個微批量的反向過程和ZeRO-1中的reduce-scatter操作,以及序列并行中的GEMM計算和all-gather/reduce-scatter操作。為了加速訓練,我們對一些層/操作進行了融合,包括LayerNorm、盡可能的GEMM和Adam更新。為了提高模型訓練的穩定性,我們以bf16精度訓練模型,但以fp32精度累積梯度。我們執行原地交叉熵以減少GPU內存消耗,即在交叉熵CUDA內核中動態將bf16 logits轉換為fp32精度(而不是事先在HBM中轉換),計算相應的bf16梯度,并用其梯度覆蓋logits。

模型權重和優化器狀態每5分鐘異步保存一次,這意味著在偶爾的硬件或網絡故障的最壞情況下,我們最多只會丟失5分鐘的訓練進度。這些臨時模型檢查點會定期清理,以避免占用過多的存儲空間。我們還支持從不同的3D并行配置中恢復訓練,以應對計算集群負載的動態變化。

在評估方面,我們在生成任務中使用vLLM(Kwon等,2023),在非生成任務中使用連續批處理,以避免手動調整批量大小并減少token填充。

3.Scaling Laws

關于擴展定律的研究(Hestness等,2017)早于大語言模型的出現。擴展定律(Henighan等,2020;Hoffmann等,2022;Kaplan等,2020)表明,隨著計算預算C、模型規模N和數據規模D的增加,模型性能可以預測性地提升。當模型規模N用模型參數表示,數據規模D用token數量表示時,C可以近似為C = 6N D。因此,在增加計算預算時,如何優化模型規模和數據規模之間的分配也是擴展定律中的一個關鍵研究目標。

大語言模型(LLM)的發展(Dai等,2019;Radford等,2019),隨著模型規模的擴大,取得了意想不到且顯著的性能提升,將擴展定律研究推向了一個新的高峰。擴展定律的研究結果表明,增加計算預算繼續帶來顯著的收益,這進一步鼓勵了模型規模的擴大(Brown等,2020;Smith等,2022)。

然而,正如表4所示,早期關于最優模型/數據擴展分配策略的研究(Hoffmann等,2022;Kaplan等,2020)得出了不同的結論,這引發了對擴展定律普遍適用性的質疑。此外,這些研究往往缺乏對超參數設置的完整描述,使得在不同計算預算下的模型是否達到最優性能變得不確定。因此,我們在本節中重新審視擴展定律,以解決這些不確定性,并確保我們在高效擴展計算資源的正確道路上,這反映了長期視角,也是開發持續改進模型的關鍵。

在這里插入圖片描述

為了確保不同計算預算下的模型能夠達到最佳性能,我們首先研究了超參數的縮放規律。經驗表明,在訓練過程中,大多數參數的最優值在計算預算變化時并不會改變。因此,這些參數與第2.3節中概述的參數保持一致,并在不同計算預算下保持不變。然而,對性能影響最為顯著的超參數,即批量大小和學習率,被重新進行了審視。

早期研究(Goyal等,2017;McCandlish等,2018;Shallue等,2019;Smith等,2017;Zhang等,2019)為設置批量大小和學習率提供了一些經驗觀察,但我們在初步實驗中發現這些觀察的適用性有限。通過大量實驗,我們建模了計算預算C與最優批量大小和學習率之間的冪律關系。我們將這種關系稱為超參數的縮放定律,它為確定最優超參數提供了一個經驗框架。這種方法確保了不同計算預算下的模型都能達到接近最優的性能。

隨后,我們研究了模型和數據規模的縮放規律。為了降低實驗成本和擬合難度,我們采用了Chinchilla(Hoffmann等,2022)中的IsoFLOP分析方法來擬合縮放曲線。為了更準確地表示模型規模,我們使用了一種新的模型規模表示方法,即非嵌入FLOPs/標記M,取代了之前使用的模型參數N,并將近似計算預算公式C = 6N D替換為更精確的C = M D。實驗結果為我們提供了關于最優模型/數據擴展分配策略和性能預測的見解,并準確預測了DeepSeek LLM 7B和67B模型的預期性能。

此外,在探索擴展定律的過程中,我們所使用的數據經歷了多次迭代,質量不斷提升。我們嘗試在不同數據集上擬合擴展曲線,發現數據質量對最優模型/數據擴展分配策略有顯著影響。數據質量越高,增加的算力預算應更多地分配給模型擴展。這意味著在相同的數據規模下,高質量數據可以推動更大模型的訓練。最優模型/數據擴展分配策略的差異也可以作為評估數據質量的一種間接方法。我們將繼續密切關注數據質量的變化及其對擴展定律的影響,并在未來的工作中提供更多分析。

總之,我們在擴展定律方面的貢獻和發現可以總結如下:

? 我們建立了超參數的縮放規律,為確定最優超參數提供了經驗框架。
? 我們采用非嵌入FLOPs/標記M而非模型參數N來表示模型規模,從而得出了更準確的最優模型/數據擴展分配策略,并更好地預測了大規模模型的泛化損失。
? 預訓練數據的質量影響最優模型/數據擴展分配策略。數據質量越高,增加的算力預算應更多地分配給模型擴展。

3.1. 超參數縮放法則

我們最初在計算預算為1e17的小規模實驗中,對批量大小和學習率進行了網格搜索,特定模型大小(177M FLOPs/令牌)的結果如圖2(a)所示。結果表明,在廣泛的批量大小和學習率選擇范圍內,泛化誤差保持穩定。這表明在相對較寬的參數空間內,可以實現接近最優的性能。

在這里插入圖片描述

圖2 | 在不同批大小和學習率下的訓練損失,計算量為1e17和1e20 FLOPs。

隨后,我們利用前述的多步學習率調度器,通過復用第一階段,有效地訓練了多個具有不同批量大小、學習率和計算預算(范圍從1e17到2e19)的模型。考慮到參數空間中的冗余性,我們將那些泛化誤差不超過最小值0.25%的模型所使用的參數視為近優超參數。接著,我們擬合了批量大小B和學習率η與計算預算C的關系。擬合結果如圖3所示,揭示了最優批量大小B隨著計算預算C的增加而逐漸增大,而最優學習率η則逐漸減小。這與模型擴展時批量大小和學習率的直觀經驗設置一致。此外,所有近優超參數都落在一個較寬的帶狀范圍內,表明在該區間內選擇近優參數相對容易。我們最終擬合的批量大小和學習率公式如下:

在這里插入圖片描述
我們在一系列模型上驗證了我們的公式,計算預算為1e20,特定模型規模(每token 2.94B FLOPs)的結果如圖2(b)所示。結果表明,擬合的參數集中在最優參數空間內。后續章節還顯示,我們為DeepSeek LLM 7B和67B模型擬合的參數同樣取得了良好的性能。

然而,值得注意的是,我們尚未考慮計算預算C之外的其他因素對最優超參數的影響。這與一些早期研究(Kaplan等,2020;McCandlish等,2018)的觀點不一致,這些研究認為最優批量大小可以僅與泛化誤差L相關。此外,我們觀察到,在計算預算相同但模型/數據分配不同的情況下,最優參數空間會略有變化。這表明需要進一步研究以理解超參數的選擇和訓練動態。我們將在未來的工作中探討這些方面。

3.2 估計最優模型與數據縮放

在推導出擬合近優超參數的公式后,我們開始擬合縮放曲線并分析最優的模型/數據擴展分配策略。該策略涉及找到滿足Nopt ∝ Ca和Dopt ∝ Cb的模型縮放指數a和數據縮放指數b。數據規模D可以通過數據集中的token數量一致地表示。在之前的工作中,模型規模通常由模型參數表示,包括非嵌入參數N1(Kaplan等,2020)和完整參數N2(Hoffmann等,2022)。計算預算C與模型/數據規模之間的關系可以近似描述為C = 6N D,這意味著我們可以使用6N1或6N2來近似模型規模。然而,由于6N1和6N2都沒有考慮注意力操作的計算開銷,并且6N2還包括詞匯計算,這對模型能力的貢獻較小,因此在某些設置下它們都存在顯著的近似誤差。

為了減少這些誤差,我們引入了一種新的模型規模表示方法:非嵌入FLOPs/標記M。M包含了注意力操作的計算開銷,但不考慮詞匯計算。通過用M表示模型規模,計算預算C可以簡單地表示為C = M D。6N1、6N2和M之間的具體差異如下公式所示:

在這里插入圖片描述

其中,nlayer 表示層數,dmodel 表示模型寬度,nvocab 是詞匯表大小,lseq 是序列長度。我們評估了這三種表示在不同規模模型中的差異,如表3所示。結果表明,6N1 和 6N2 在不同規模的模型中要么高估要么低估了計算成本。這種差異在小規模模型中尤為明顯,差異可達50%。這種不準確性在擬合縮放曲線時可能會引入顯著的統計誤差。關于模型規模的不同表示的進一步分析,請參見附錄A.2。

在這里插入圖片描述

表3 | 模型規模表示的差異以及非嵌入參數N1和完整參數N2相對于非嵌入FLOPs/令牌M的差異。

在采用M表示模型規模后,我們的目標可以更清晰地描述為:給定計算預算C = M D,找到最優的模型規模Mopt和數據規模Dopt,以最小化模型的泛化誤差。這一目標可以形式化為:

在這里插入圖片描述

為了降低實驗成本和擬合難度,我們采用了Chinchilla(Hoffmann等,2022)中的IsoFLOP輪廓方法來擬合縮放曲線。我們選擇了從1e17到3e20的8個不同計算預算,并為每個預算設計了大約10種不同的模型/數據規模分配方案。每個預算的超參數通過公式(1)確定,并在一個獨立驗證集上計算泛化誤差,該驗證集與訓練集分布相似,包含1億個token。

圖4展示了IsoFLOP曲線和模型/數據縮放曲線,這些曲線通過使用每個計算預算的最優模型/數據分配進行擬合。最優非嵌入FLOPs/標記Mopt和最優標記Dopt的具體公式如下:

在這里插入圖片描述
在這里插入圖片描述

圖4 | 等計算量曲線與最優模型/數據分配。等計算量曲線中的指標是驗證集上的每字節比特數。最優模型/數據縮放曲線中的虛線表示擬合較小模型(灰色圓圈)的冪律。

此外,我們根據計算預算C和最優泛化誤差擬合了損失縮放曲線,并預測了DeepSeek LLM 7B和67B的泛化誤差,如圖5所示。結果表明,通過小規模實驗可以準確預測1000倍計算預算下模型的性能。這為大規模訓練模型提供了信心和指導。

在這里插入圖片描述

圖5 | 性能擴展曲線。指標為驗證集上的每字節比特數。虛線表示擬合較小模型(灰色圓圈)的冪律。藍色星星代表DeepSeek LLM 7B和67B。它們的性能被擴展曲線很好地預測。

3.3. 不同數據的縮放規律

在DeepSeek LLM的開發過程中,數據集經過多次迭代優化,在提升整體質量的同時,調整了不同數據源的比例。這使得我們能夠進一步分析不同數據集對擴展規律的影響。

我們使用三種不同的數據集研究了縮放定律:早期的內部數據、當前的內部數據以及OpenWebText2,后者在之前的縮放定律研究(Kaplan等,2020)中被使用。我們的內部數據評估顯示,當前的內部數據質量高于早期的內部數據。此外,OpenWebText2的質量甚至超過了當前的內部數據,這得益于其較小的規模,使得數據處理更加細致。

分析中一個有趣的觀察是,在這三個數據集上,模型與數據擴展的最優分配策略與數據質量表現出一致性。如表4所示,隨著數據質量的提升,模型擴展指數a逐漸增加,而數據擴展指數b則逐漸減少,這表明增加的算力預算應更多地分配給模型而非數據。這一發現或許也能解釋早期研究中在擴展定律中觀察到的模型與數據擴展最優分配的顯著差異。

在這里插入圖片描述

對這一發現的直觀推測是,高質量數據通常意味著邏輯清晰,且在充分訓練后預測難度較低。因此,在增加計算預算時,擴大模型規模更具優勢。我們將繼續密切關注數據質量的變化及其對擴展法則的影響,并在未來的工作中提供更多分析。

4.對齊

我們收集了約150萬條中英文指令數據實例,涵蓋了廣泛的有益性和無害性主題。其中有益數據包含120萬條實例,分布為31.2%的通用語言任務、46.6%的數學問題和22.2%的編程練習。安全數據包含30萬條實例,涵蓋了各種敏感話題。

我們的對齊流程包含兩個階段。

監督微調:我們對7B模型進行了4個epoch的微調,但對67B模型僅進行了2個epoch的微調,因為我們觀察到67B模型的過擬合問題較為嚴重。我們發現,GSM8K(Cobbe等,2021)和HumanEval(Chen等,2021)在7B模型上持續提升,而67B模型很快就達到了上限。7B和67B模型的學習率分別為1e-5和5e-6。除了監控基準準確率外,我們還評估了微調過程中聊天模型的重復率。我們收集了總計3868個中英文提示,并確定了生成響應中無法終止而無限重復文本序列的比例。我們觀察到,隨著數學SFT數據量的增加,重復率往往會上升。這可以歸因于數學SFT數據中偶爾包含相似的推理模式。因此,較弱的模型難以掌握這些推理模式,導致重復響應。為了解決這個問題,我們嘗試了兩階段微調和DPO(Rafailov等,2023),這兩種方法幾乎都能保持基準分數并顯著減少重復。

DPO:為了進一步提升模型的能力,我們采用了直接偏好優化算法(Rafailov等,2023),該算法被證明是一種簡單但有效的大語言模型對齊方法。我們構建了用于DPO訓練的偏好數據,涵蓋幫助性和無害性兩個方面。對于幫助性數據,我們收集了多語言提示,涵蓋創意寫作、問答、指令遵循等類別。然后,我們使用DeepSeek Chat模型生成響應作為候選答案。類似的操作也應用于無害性偏好數據的構建。

我們使用DPO訓練了一個epoch,學習率為5e-6,批量大小為512,并采用了學習率預熱和余弦學習率調度器。我們發現,DPO可以增強模型的開放式生成能力,而在標準基準測試中的表現差異不大。

5.評估

5.1. 公開基準評估

我們在內部評估框架的基礎上,對一系列中英文公開基準進行了模型評估。

多學科多選題數據集包括MMLU(Hendrycks等,2020)、C-Eval(Huang等,2023)和CMMLU(Li等,2023)。

語言理解和推理數據集包括HellaSwag(Zellers等,2019)、PIQA(Bisk等,2020)、ARC(Clark等,2018)、OpenBookQA(Mihaylov等,2018)和BigBench Hard(BBH)(Suzgun等,2022)。

閉卷問答數據集包括TriviaQA(Joshi等,2017)和NaturalQuestions(Kwiatkowski等,2019)。

參考消歧數據集包括WinoGrande(Sakaguchi等,2019)和CLUEWSC(Xu等,2020)。

語言建模數據集,包括Pile(Gao等,2020)。

中文理解與文化數據集包括CHID(Zheng等,2019)和CCPM(Li等,2021)。

數學數據集包括GSM8K(Cobbe等,2021)、MATH(Hendrycks等,2021)和CMath(Wei等,2023)。

代碼數據集包括HumanEval(Chen等,2021)和MBPP(Austin等,2021)。

標準化考試包括AGIEval(Zhong等,2023)。

我們對需要從多個選項中選擇答案的數據集應用基于困惑度的評估方法。這些數據集包括HellaSwag、PIQA、WinoGrande、RACE-Middle、RACEHigh、MMLU、ARC-Easy、ARC-Challenge、OpenBookQA、CHID、C-Eval、CMMLU、C3和CCPM。這里的基于困惑度的評估指的是計算每個選項的困惑度,并選擇困惑度最低的選項作為模型預測。對于ARC和OpenBookQA,我們使用無條件歸一化(Brown et al., 2020)來計算困惑度,而對于其他數據集,我們使用長度歸一化。

我們對TriviaQA、NaturalQuestions、DROP、MATH、GSM8K、HumanEval、MBPP、BBH、AGIEval、CLUEWSC和CMath進行了基于生成的評估。這里的基于生成的評估指的是讓模型生成自由文本,并從生成的文本中解析結果。在基于生成的評估中,我們使用貪心解碼。

我們對Pile測試集應用基于語言模型的評估方法,即在測試語料上計算每字節的比特數。

我們在不同的基準測試中使用2048或4096作為最大序列長度。評估格式的詳細信息可以在附錄A.6中找到。

5.1.1. 基礎模型

表5展示了評估基準的主要結果。盡管DeepSeek模型是在2T雙語語料庫上進行預訓練的,但它們在英語語言理解基準上的表現與LLaMA2模型相當,后者同樣消耗了2T tokens但專注于英語。此外,DeepSeek 67B在MATH、GSM8K、HumanEval、MBPP、BBH和中文基準上的表現明顯優于LLaMA2 70B。我們在附錄A.3中展示了基準曲線。可以看到,隨著模型規模的擴大,某些任務的表現有所提升,例如GSM8K和BBH。鑒于我們在相同的數據集上訓練了7B和67B模型,這種改進的出現可以歸因于大模型強大的少樣本學習能力。然而,隨著數學數據比例的增加,小模型與大模型之間的差距可能會縮小。

在這里插入圖片描述

表5 | 主要結果。我們報告的評估結果基于內部評估框架。加粗數字表示4個模型中最佳結果。對于Pile-test,我們報告每字節比特數(BPB);對于DROP,我們報告F1分數;對于其他任務,我們報告準確率。需要注意的是,測試樣本數(test-shots)為最大值,由于上下文長度限制或同一段落中可用的少樣本示例有限,閱讀理解任務(如RACE)可能會使用較少的樣本。

一個有趣的觀察是,DeepSeek 67B相對于LLaMA2 70B的優勢大于DeepSeek 7B相對于LLaMA2 7B的優勢。這一現象凸顯了語言沖突對較小模型的更大影響。此外,盡管LLaMA2并未專門針對中文數據進行訓練,但在某些中文任務(如CMath)上表現出色。這表明某些基本能力,如數學推理,可以有效地跨語言遷移。然而,像CHID這樣涉及評估中文成語使用的任務,需要模型在預訓練過程中消耗大量中文語料。在這種情況下,LLaMA2的表現明顯遜色于DeepSeek LLM。

5.1.2. 聊天模型

表6展示了DeepSeek Chat模型的結果,表明在調優后大多數任務的整體性能有所提升。然而,也有少數任務的表現出現了下降。
在這里插入圖片描述

表6 | 基礎模型與聊天模型的對比。我們在MMLU、GSM8K、MATH、C-Eval和CMMLU上對聊天模型進行0-shot評估,而基礎模型的結果仍是在few-shot設置下獲得的。

知識:我們觀察到基礎模型和聊天模型在知識相關任務(如TriviaQA、MMLU和C-Eval)中的表現存在波動。然而,我們認為這些微小的波動并不表明在SFT后模型獲得了或失去了知識。SFT的價值在于使聊天模型能夠在零樣本設置下達到與基礎模型在少樣本設置下相當的成績,這與實際場景相符。例如,聊天模型在零樣本MMLU中的表現與基礎模型在五樣本MMLU中的表現相當。

推理:由于相當一部分的SFT實例采用了CoT格式(Wei等,2022),聊天模型在推理任務(如BBH和NaturalQuestions)上表現出輕微的改進。然而,我們認為SFT階段并未學習到推理能力,而是學習了推理路徑的正確格式。

性能下降任務:在微調后,少數任務的性能持續下降,無論選擇的模型大小或預訓練檢查點如何。這些特定任務通常涉及填空任務或句子補全任務,例如HellaSwag。有理由認為,純語言模型更適合處理此類任務。

數學與代碼:我們的模型在微調后,在數學和編碼任務上表現出顯著提升。例如,HumanEval和GSM8K的分數提高了超過20分。我們的解釋是,基礎模型最初在這些任務上欠擬合,而SFT階段通過大量的SFT數據學習了額外的編碼和數學知識。然而,需要注意的是,模型的能力可能主要集中在代碼補全和代數問題上。為了全面理解數學和編碼,在預訓練階段納入多樣化的數據至關重要,這將是未來的工作。我們在附錄A.4中對代碼和數學任務進行了詳細分析。

在7B模型的微調中,我們首先使用所有數據對模型進行初步微調。隨后,引入第二階段,該階段排除了數學和代碼數據。這種方法的動機在于,第一階段模型的重復率為2.0%,而在第二階段微調后,重復率降至1.4%,同時保持了基準分數。對于67B模型,第一階段微調后的重復率已經低于1%,而第二階段微調會損害模型在基準測試中的得分。因此,67B模型僅進行了一階段的監督微調(SFT)。

5.2. 開放式評估

對于聊天模型,除了觀察標準基準測試中的指標外,在開放領域和開放式問題中生成結果的質量直接影響實際用戶體驗。因此,我們分別測試了我們的聊天模型在中文和英文任務中的開放式生成能力。

5.2.1. 中文開放式評估

在中文開放式評估中,我們在高質量開放式問題測試集AlignBench(Liu等,2023)上測試了我們的聊天模型在不同領域的綜合能力。AlignBench共包含8個一級類別和36個二級類別,涵蓋了683個問題。對于每個問題,除了提示外,AlignBench還提供了專業的參考答案和評分模板,供GPT-4判斷回答的質量。

我們利用官方AlignBench的Github代碼倉庫來實現對我們模型的評估。我們嚴格對齊了關鍵的溫度參數與原始設置:對于角色扮演、寫作能力和開放式問題,生成溫度設置為0.7;而對于其他任務,生成溫度設置為0.1。

AlignBench排行榜如表7所示。我們可以發現,我們的DeepSeek 67B Chat模型超越了ChatGPT及其他基線模型,僅次于兩個版本的GPT-4。這表明我們的模型在各類中文任務中表現優異,相較于其他開源或專有的中文大語言模型具有明顯優勢。DPO模型在幾乎所有指標上均有所提升,這證明了DPO訓練過程對模型對齊的積極影響。

在這里插入圖片描述
表7 | 由gpt-4-0613評分的AlignBench排行榜。模型按總分降序排列。帶*的結果是我們基于官方AlignBench倉庫的評估結果,其余結果均來自AlignBench論文。我們發現,我們的Deepseek-67B-Chat模型明顯超越了ChatGPT及其他基線模型,這表明我們的模型在基礎中文任務和高級中文推理任務中均表現出色。此外,我們可以看到DPO過程在幾乎所有領域都帶來了提升。

在基礎中文任務上,我們的模型處于所有模型中的第一梯隊,且我們的DPO模型的中文基礎語言能力甚至超過了最新版本的GPT-4。在高級中文推理任務上,我們的模型得分顯著高于其他中文大語言模型,優勢明顯,展示了我們的模型在更復雜的中文邏輯推理和數學計算中的卓越性能。

5.2.2. 英語開放式評估

在英語開放式評估中,我們使用了MT-Bench基準測試(Zheng等,2023),該測試包含8個不同類別的多輪問題。如表8所示,我們的DeepSeek LLM 67B Chat在性能上優于其他開源模型,如LLaMA-2-Chat(Touvron等,2023b)70B、Xwin 70b v0.1和TU?LU 2+DPO 70B(Ivison等,2023),并取得了8.35的分數,與GPT-3.5-turbo相當。此外,經過DPO階段后,我們的DeepSeek LLM 67B Chat DPO進一步將平均分數提升至8.76,僅次于GPT-4(OpenAI,2023)。這些結果展示了DeepSeek LLM在多輪開放式生成方面的強大能力。

在這里插入圖片描述

5.3. 保留集評估

數據污染和基準過擬合是評估大語言模型(LLMs)時面臨的兩個挑戰。一種常見的做法是利用最近發布的測試集作為保留測試集來評估模型。

為了評估模型的編碼能力,我們使用了LeetCode周賽(周賽351-372,雙周賽108-117,2023年7月至2023年11月)中的題目。我們通過爬取LeetCode的數據獲得了這些題目,共包含126道題,每道題有超過20個測試用例。采用的評估指標類似于HumanEval。在這方面,如果模型的輸出成功通過所有測試用例,則認為模型有效解決了該問題。模型的編碼能力如下圖所示,其中y軸表示在領域內人工評估測試中的pass@1分數,x軸表示在領域外LeetCode周賽題目中的pass@1分數。LeetCode測試數據將隨DeepSeek Coder技術報告一同發布。

指令遵循評估:2023年11月15日,谷歌發布了一個指令遵循評估數據集(Zhou等,2023)。他們識別了25種可驗證的指令類型,并構建了約500個提示,每個提示包含一個或多個可驗證的指令。我們使用提示級別的寬松指標來評估所有模型。

我們對我們的模型與不同規模的基線模型進行了對比分析,這些基線模型包括Qwen 72B Chat(Bai等,2023)、ChatGLM3(Du等,2022)、Baichuan2(Yang等,2023)以及Yi-34B Chat。我們的觀察表明,在這些保留數據集上,大模型與小模型之間存在顯著的性能差距,即使某些小模型在傳統基準測試中取得了令人矚目的成績。例如,ChatGLM3在代碼測試集MBPP上獲得了52.4分,接近DeepSeek 67B。然而,在新基準測試中,其表現與DeepSeek 67B相比明顯不足。在數學數據集上也觀察到類似的趨勢,ChatGLM3在GSM8K上表現非常強勁(72.3分),但在匈牙利考試分數上卻不如大模型。此外,指令跟隨能力表明,總計算量在其中起著至關重要的作用。

DeepSeek 7B 和 67B 模型采用了相同的訓練流程,但它們的性能存在顯著差異。通過我們的主觀評估,我們觀察到在將模型規模擴展到 67B 時,其在各種任務中的智能表現存在明顯差距。盡管 DeepSeek 7B 在標準基準測試中落后于其他較小的語言模型,但在保留任務上的表現相對而言是可圈可點的。

5.4. 安全評估

我們深刻認識到通用人工智能安全的重要性。建立一個真正有益的人工智能模型的前提是,它具備與人類一致的價值觀,并對人類表現出友好性。我們在整個訓練過程中,包括預訓練、SFT和DPO,都融入了模型安全的保障。

為了驗證模型的安全性,我們組建了一個由20名來自不同學科的專家組成的團隊,并構建了一個符合人類價值觀的安全內容分類系統(安全評估分類表見表10)。隨后,專家團隊手動為每個安全子類別構建了數十個高質量的測試案例。除了關注安全內容領域的多樣性外,我們還注重安全內容格式的多樣性。臭名昭著的“祖母”漏洞表明,模型可能會被查詢的表面格式所欺騙,從而提供不安全的回答。因此,在設計問題時,專家團隊也注重多樣化提問方式。他們通過誘導、角色扮演、多輪對話、預設立場等手段構建了多樣化的安全問題。最終,我們獲得了一個包含2400個問題的安全測試集。此外,專家團隊還為每種不同的內容類型和格式類型構建了安全審查的基本準則。

在這里插入圖片描述
表10 | 我們的安全評估分類。表格最右側列出了每個類別的測試案例總數以及我們的模型(DeepSeek-67B-Chat)提供的安全回答數量。測試問題的標注和生成結果的評估由專業的人工團隊完成。我們可以觀察到,我們的模型在各類安全測試集上表現出強大的安全性。

在現有安全方法的基礎上,我們進一步使用“Do-Not-Answer”數據集(Wang et al., 2023)豐富了評估內容,以評估DeepSeek 67B Chat模型的安全機制。該數據集的939個風險分類提示在凸顯我們模型的增強能力方面發揮了重要作用。如表11所示,DeepSeek 67B Chat模型表現出色,得分為97.8,高于ChatGPT和GPT-4。這一得分不僅衡量了我們模型在處理敏感查詢時的安全能力,還使其在該領域的領先模型中具有競爭力。

在這里插入圖片描述

表11 | 不回答評分(Wang等,2023),分數越高表示模型安全性越高。帶*的結果是我們基于官方倉庫的評估結果,其余結果均來自原論文。我們可以發現,我們的模型在安全性評分上高于ChatGPT和GPT-4,躋身于最安全模型之列。

5.5 討論

在整個開發過程中,我們在構建大語言模型(LLMs)時發現了一些有趣的發現。

分階段微調:如前所述,小型模型需要在數學和代碼數據集上進行更長時間的微調,但這會損害模型的對話能力,例如增加重復行為。為了解決這個問題,我們實施了分階段微調過程。在這種方法中,第一階段使用所有可用數據進行微調,而第二階段則專門針對對話數據進行微調。

表12展示了兩階段訓練過程獲得的結果。這些結果清楚地表明,第二階段不會影響模型在代碼和數學方面的能力,同時減少了重復行為,并增強了指令遵循能力。

在這里插入圖片描述

表12 | 兩階段微調結果。重復率在溫度為0時計算。重復率越低越好。IFEval結果為提示級別的寬松準確率。

多選題:在模型評估中,使用多選題形式的評估數據是一種常見做法,例如MMLU、AGI Eval和C-Eval。多選題不僅要求模型具備相應的知識,還需要理解選項所指的內容。在對齊階段,我們測試了添加2000萬道中文多選題,并獲得了如表13所示的性能表現。需要注意的是,我們對C-Eval驗證集和CMMLU測試集進行了去重處理,以防止數據污染。

在這里插入圖片描述

額外加入的2000萬條多選題(MC)數據不僅對中文多選題基準測試有益,也提升了英文基準測試的表現。這表明模型解決多選題的能力得到了增強。然而,我們觀察到,這種提升并未擴展到不使用多選題格式的其他評估任務上,例如TriviaQA和我們內部的中文QA測試集,這些都屬于生成式評估基準。這表明,在對話交互中,用戶可能不會感受到模型變得更智能,因為這些交互涉及生成回答而非解決多選題。

因此,我們決定在預訓練和微調階段都排除MC數據,因為包含這些數據會導致模型對基準測試的過擬合,無助于實現模型的真正智能。

預訓練中的指令數據:普遍認為,在預訓練階段的后期加入指令數據可以提升基礎模型在基準任務上的表現。在我們的研究中,我們在預訓練階段的最后10%加入了500萬條指令數據,主要包括多選題。我們觀察到,基礎模型在基準任務上的表現確實有所提升。然而,最終結果與在SFT階段加入相同數據所取得的結果幾乎相同。我們得出結論,雖然這種方法增強了基礎模型在基準任務上的表現,但其整體潛力與不加入這些指令數據相當。如果指令數據規模較大,將其納入預訓練過程是可以接受的。由于我們傾向于排除多選題,并且我們擁有的非多選題數據有限,我們決定不在預訓練過程中加入指令數據。

系統提示:一個設計良好的系統提示應有效引導模型生成既有用又尊重的回答。我們略微修改了LLaMA-2引入的提示,作為我們的系統提示。

系統提示:您是DeepSeek Chat,一個由DeepSeek開發的樂于助人、尊重他人且誠實的AI助手。您的訓練數據知識截止日期為2023年5月。請始終盡可能提供有幫助的回答,同時確保安全性。您的回答不應包含任何有害、不道德、種族歧視、性別歧視、有毒、危險或非法內容。請確保您的回答在社會上無偏見且積極正面。如果問題沒有意義或事實不連貫,請解釋原因,而不是提供不正確的答案。如果您不知道某個問題的答案,請不要分享虛假信息。

我們觀察到一個有趣的現象:當引入系統提示時,7B規模的LLM性能會出現輕微下降。然而,當使用67B規模的LLM時,添加提示會顯著提升結果,如表14所示。我們對這種差異的解釋是,更大的模型能夠更好地理解系統提示背后的意圖,從而更有效地遵循指令并生成更優質的響應。相比之下,較小的模型難以充分理解系統提示,訓練與測試之間的不一致可能會對其性能產生負面影響。

在這里插入圖片描述

6. 結論、局限性與未來工作

我們推出了DeepSeek大語言模型系列,這是一組從頭開始訓練的開源模型,訓練數據集包含2萬億個中英文標記。在本文中,我們深入解釋了超參數選擇、擴展規律以及我們進行的各種微調嘗試。我們校準了先前工作中的擴展規律,并提出了一種新的最優模型/數據擴展分配策略。此外,我們提出了一種方法,可以在給定的計算預算下預測接近最優的批量大小和學習率。我們進一步得出結論,擴展規律與數據質量相關,這可能是不同工作中擴展行為差異的根本原因。在擴展規律的指導下,我們使用最佳超參數進行預訓練,并提供了全面的評估。我們在所有訓練階段都避免了基準裝飾和隱藏的秘密。

DeepSeek Chat與其他大型語言模型一樣,存在一些公認的局限性,包括預訓練后缺乏持續的知識更新、可能生成未經核實建議等非事實信息,以及產生幻覺的傾向。此外,需要注意的是,我們的中文數據初始版本并不全面,這可能導致在某些特定中文話題上的表現不夠理想。由于我們的數據主要來源于中文和英文,模型在其他語言上的能力仍然較為薄弱,使用時需謹慎對待。

DeepSeek LLM 是一個長期致力于推動開源語言模型發展的項目。

? 我們即將分別發布關于代碼智能和混合專家系統(MoE)的技術報告。這些報告展示了我們如何創建高質量的代碼數據用于預訓練,并設計稀疏模型以達到密集模型的性能。

? 目前,我們正在為即將發布的DeepSeek LLM新版本構建更大且改進的數據集。我們希望下一版本在推理、中文知識、數學和代碼能力方面會有顯著提升。

? 我們的對齊團隊致力于研究如何向公眾提供有用、誠實且安全的模型。我們的初步實驗證明,強化學習可以提升模型的復雜推理能力。

7.附錄

A.2. 不同模型規模的表示

我們重新擬合了不同模型規模表示的縮放曲線,復用了IsoFLOP配置文件中的實驗。我們使用6N1和6N2作為模型規模表示重新計算了計算FLOPs,并重新擬合了性能縮放曲線。如圖6所示,結果表明在較高的計算預算下,這三種表示之間的最優模型/數據分配偏差并不顯著,但在較低預算下存在明顯差異。

在這里插入圖片描述

圖6 | 使用不同模型規模表示的性能擴展曲線。指標為驗證集上的每字節比特數。虛線表示擬合較小模型(灰色圓圈)的冪律。藍色星星代表DeepSeek LLM 7B和67B。N1、N2和M分別表示模型的非嵌入參數、完整參數和非嵌入FLOPs/每token。

當使用6N1作為模型規模的表示時,擬合的性能擴展曲線往往會高估大規模模型的性能。相反,當使用6N2時,曲線往往會低估其性能。然而,使用M作為模型規模的表示,能夠實現最準確的預測。

A.3. 基準指標曲線

在這里插入圖片描述

圖7 | DeepSeek LLM Base的基準指標曲線。ChineseQA是我們內部構建的測試集,其構建方式類似于TriviaQA。

圖7展示了不同訓練步驟下的基準指標曲線。我們可以看到,從訓練開始到結束,這些基準指標持續提升。我們相信,如果繼續訓練,性能將會進一步提高。

A.4. 與代碼或數學專用模型的比較

我們對我們的模型與特定的代碼和數學語言模型(LLMs)進行了比較。表15顯示,盡管DeepSeek LLM 67B接觸的代碼數據較少,但其性能與CodeLlama相當。值得注意的是,DeepSeek LLM在代碼以外的領域具有更強的能力。

在這里插入圖片描述
同樣,表16展示了從各種數學相關基準測試中獲得的結果,例如GSM8K(Cobbe等,2021)、MATH(Hendrycks等,2021)、MGSM-zh(i等,2023)和CMath(Wei等,2023)。DeepSeek 67B在不同語言的數學任務中表現出色,展示了其在該領域的卓越性能。此外,DeepSeek LLM能夠利用程序解決數學問題,其表現優于思維鏈方法。在基準測試中,它顯著優于之前的SOTA模型ToRA(Gou等,2023)。

在這里插入圖片描述

A.5. 包含DPO階段的基準測試結果

表17展示了使用DPO階段獲得的基準測試結果。基于這些結果,我們可以得出結論:DPO階段對LLM的基本能力沒有顯著影響。

在這里插入圖片描述

A.6. 評估格式

表18至表40展示了我們在不同基準測試上的評估格式示例。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70780.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70780.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70780.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#快速調用DeepSeek接口,winform接入DeepSeek查詢資料 C#零門檻接入DeepSeek C#接入DeepSeek源代碼下載

下載地址<------完整源碼 在數字化轉型加速的背景下&#xff0c;企業應用系統對智能服務的需求日益增長。DeepSeek作為先進的人工智能服務平臺&#xff0c;其自然語言處理、圖像識別等核心能力可顯著提升業務系統的智能化水平。傳統開發模式下&#xff0c;C#開發者需要耗費大…

Qt常用控件之多行輸入框QTextEdit

多行輸入框QTextEdit QTextEdit 是一個多行輸入框控件&#xff0c;支持富文本和 markdown 格式&#xff0c;當文本內容超出編輯框的范圍時能自動提供滾動條。 QPlainTextEdit 是只支持富文本格式的多行輸入框&#xff0c;屬性和使用上與 QTextEdit 幾乎沒有區別。 QTextEdit屬…

VC++零基礎入門之系列教程 【附錄E MFC快速參考指南】

附錄E MFC快速參考指南 E.1 創建窗口 使用M F C CWnd wnd; W n d . C r e a t e E x ( E xSt y l e , C l a s s N a m e , Wi n d o w N a m e , S t y l e , x , y, Wi d t h , H e i g h t , P a r e n t , M e n u , P a r a m ) ; 使用A P I HWND hwnd=::CreateWi n d …

【前端】react+ts 輪播圖的實現

一、場景描述 在很多網站的頁面中都有輪播圖&#xff0c;所以我想利用react.js和ts實現一個輪播圖。自動輪播圖已經在前面實現過了&#xff0c;如&#xff1a;https://blog.csdn.net/weixin_43872912/article/details/145622444?sharetypeblogdetail&sharerId145622444&a…

python與C系列語言的差異總結(4)

如果具有傳統編譯型語言的經驗&#xff0c;大家可能會對是否使用字典而猶豫不決&#xff0c;擔心字典的效率比列表或數組低。事實上Python字典的執行速度已經相當快了。Python語言的許多內部特性都依賴于字典&#xff0c;為提高字典的效率已經投入了大量的心血。Python的所有數…

[Web 安全] 反序列化漏洞 - 學習筆記

關注這個專欄的其他相關筆記&#xff1a;[Web 安全] Web 安全攻防 - 學習手冊-CSDN博客 0x01&#xff1a;反序列化漏洞 — 漏洞介紹 反序列化漏洞是一種常見的安全漏洞&#xff0c;主要出現在應用程序將 序列化數據 重新轉換為對象&#xff08;即反序列化&#xff09;的過程中…

深入理解C語言中的位段

在C語言編程中&#xff0c;我們常常會遇到需要對內存進行精細控制的場景&#xff0c;位段&#xff08;bit - field&#xff09;便是C語言提供的一種強大工具&#xff0c;它允許我們在一個字節或多個字節內對數據進行按位的定義和操作&#xff0c;極大地提高了內存使用效率。 一…

實現使用RBF(徑向基函數)神經網絡模擬二階電機數學模型中的非線性干擾,以及使用WNN(小波神經網絡)預測模型中的非線性函數來抵消遲滯影響的功能

下面將詳細介紹如何實現使用RBF&#xff08;徑向基函數&#xff09;神經網絡模擬二階電機數學模型中的非線性干擾&#xff0c;以及使用WNN&#xff08;小波神經網絡&#xff09;預測模型中的非線性函數來抵消遲滯影響的功能。我們將按照以下步驟進行&#xff1a; 步驟1&#x…

Grouped-Query Attention(GQA)詳解: Pytorch實現

Grouped-Query Attention&#xff08;GQA&#xff09;詳解 Grouped-Query Attention&#xff08;GQA&#xff09; 是 Multi-Query Attention&#xff08;MQA&#xff09; 的改進版&#xff0c;它通過在 多個查詢頭&#xff08;Query Heads&#xff09;之間共享 Key 和 Value&am…

ReentrantLock 用法與源碼剖析筆記

&#x1f4d2; ReentrantLock 用法與源碼剖析筆記 &#x1f680; 一、ReentrantLock 核心特性 &#x1f504; 可重入性&#xff1a;同一線程可重復獲取鎖&#xff08;最大遞歸次數為 Integer.MAX_VALUE&#xff09;&#x1f527; 公平性&#xff1a;支持公平鎖&#xff08;按等…

基于GO語言的車牌識別api技術-港澳車牌文字識別

隨著科技的飛速發展&#xff0c;智能化管理逐漸滲透到我們生活的方方面面。車牌識別技術作為智能交通的重要組成部分&#xff0c;不僅極大提升了交通管理的效率&#xff0c;還為市民出行帶來了更多便利。而港澳地區的車牌識別技術&#xff0c;憑借其高效、精準、快速的特點&…

基于 DeepSeek LLM 本地知識庫搭建開源方案(AnythingLLM、Cherry、Ragflow、Dify)認知

寫在前面 博文內容涉及 基于 Deepseek LLM 的本地知識庫搭建使用 ollama 部署 Deepseek-R1 LLM知識庫能力通過 Ragflow、Dify 、AnythingLLM、Cherry 提供理解不足小伙伴幫忙指正 &#x1f603;,生活加油 我站在人潮中央&#xff0c;思考這日日重復的生活。我突然想&#xff0c…

PCB設計常用布局布線方法

PCB設計常用布局布線方法 **1.模塊化布局&#xff0c;**先放大器件再放小器件。 立創在原理圖框完后&#xff0c;在PCB快捷shiftp 2.布局對齊美觀 3.重要信號線優先處理 分類再畫 4.減少Stub布線&#xff1a;就是避免為連接的線段&#xff0c;防止產生“天線效應”&#xff…

Mac 版 本地部署deepseek ? RAGflow 知識庫搭建流程分享(附問題解決方法)

安裝&#xff1a; 1、首先按照此視頻的流程一步一步進行安裝&#xff1a;(macos版&#xff09;ragflowdeepseek 私域知識庫搭建流程分享_嗶哩嗶哩_bilibili 2、RAGflow 官網文檔指南&#xff1a;https://ragflow.io 3、RAGflow 下載地址&#xff1a;https://github.com/infi…

娛閑放鬆篇2

最近看了好多動畫和以前的新聞&#xff0c;都挺有想法&#xff0c;可以了解一下 有些是N年前的&#xff0c;希望見怪莫怪 若說如何用最小作用量去理解世界觀的話&#xff0c;其實就是書&#xff0c;以動畫的角度來看&#xff0c;日本動畫足以 一.高達系列 一系列的利用巨大…

OpenIPC開源FPV之Adaptive-Link安裝

OpenIPC開源FPV之Adaptive-Link安裝 1. 源由2. 介紹2.1 天空端安裝2.2 地面端安裝 3. 問題匯總3.1 安裝腳本問題3.2 網絡安裝問題3.3 非SSC30KQ/SSC338Q硬件3.4 代碼疑問 4. 總結5. 后續 1. 源由 鑒于飛行過程&#xff0c;發現一些馬賽克現象&#xff0c;且60FPS桌面30FPS的錄…

解析第十一頁

多選707、如圖所示組網,SWA、SWB、SWC、SWD運行RSTP,則以下說法正確的是? A、可以在SWB的GE0/0/2端口開啟邊緣端口,讓連接終端的接口快速進入轉發狀態 B、邊緣端口收到BPDU之后會重新參與生成樹的計算 C、可以在SWC的GEO/0/2端口開啟邊緣端口,讓連接終端的接口快速進入轉…

禾邁電力電子嵌入式面經和參考答案

CMakeLists 怎么寫? CMakeLists.txt 是 CMake 構建系統的配置文件,用于描述項目的構建規則和依賴關系。以下是一個簡單的 CMakeLists.txt 示例及基本寫法說明。 首先,指定 CMake 的最低版本要求,例如cmake_minimum_required(VERSION 3.10)。 然后,定義項目名稱,如project…

我的AI工具箱Tauri版-FluxCharacterGeneration參考圖像生成人像手辦(Flux 版)

本教程基于自研的AI工具箱Tauri版進行ComfyUI工作流FluxCharacterGeneration參考圖像生成人像手辦&#xff08;Flux 版&#xff09;。 我的AI工具箱Tauri版 - FluxCharacterGeneration參考圖像生成人像手辦&#xff08;Flux版&#xff09; 基于先進的FLUX模型&#xff0c;通過…

什么是DrawCall?DrawCall為什么會影響游戲運行效率?如何減少DrawCall?

目錄 1 什么是DrawCall&#xff1f; 2 DrawCall為什么會影響游戲運行效率&#xff1f; 3 如何減少 DrawCall&#xff1f;&#xff08;結合性能分析工具&#xff09; 1 什么是DrawCall&#xff1f; DrawCall&#xff08;繪制調用&#xff09; 是 GPU 的一個指令&#xff0c…