開源長期主義:淺談DeepSeek技術主張與早期論文

開源、長期主義與DeepSeek的技術愿景

?作者|格林

來源|神州問學

導入:Deepseek在早期就開源了許多優秀的指令模型與對話模型,并發布了多篇論文。以下,我們將基于Deepseek在早期發布的6篇論文,來梳理Deepseek公司的技術路徑與主張。

Deepseek的這幾篇論文都和大模型基礎結構、預訓練相關,其中涉及到Scaling Law以及MoE等多種新穎結構,也包括數據合成這類模型周邊技術;在訓練模型過程中,更加關注預訓練,而后續的微調步驟除了指令微調,還包括RLHF,DPO等對齊流程。在數據集上,DeepSeek使用的是自己收集的數據,包括預訓練的文本以及微調的問答對;

1.擴展法則貫徹落實:

DeepSeek在大語言模型的研究中,重點探索了如何在有限的計算資源下高效地擴展模型,在早期就提出了新穎且有實際指導意義的非傳統擴展法則(Scaling Law)。

【23年11月29日】DeepSeek LLM?Scaling Open-Source Language Models with Longtermism(DeepSeek LLM)

23年11月,DS發布了第一篇通用語言模型的論文,其中的核心創新點就在于擴展法則的實踐。論文中提到,開源社區中擴展法則存在不一致性,先前的研究對于如何在不同的計算預算、數據和模型規模下進行模型擴展得出了不同的結論。此外,對于高效擴展所需的最佳超參數和模型配置尚無明確的指導,這對推動開源大模型向通用人工智能(AGI)發展構成了障礙。

因此,DS在論文中提出了新的擴展法則:基于超參數(如批量大小和學習率)以及模型/數據,構建了一個經驗框架,用于在模型規模和數據量之間的計算資源的最佳分配,即非嵌入FLOPs/詞元來精確表述模型規模。

基于這些擴展法則,DS團隊開發了DeepSeek LLM,這是一種開源的大型語言模型,具有兩種配置:一個較小的7B參數模型和一個較大的67B參數模型。值得一提的是,當時67B的模型DS已在嘗試使用分組查詢注意力機制 (GQA),而非常規的多頭注意力機制 (MHA)。

該模型使用了一個獨特的預訓練數據集,總計2T個詞元,并采用了如監督微調(SFT)直接偏好優化(DPO)等技術來提高性能。在測試中,DeepSeek LLM顯示出優越的性能,尤其是在代碼、數學和推理等領域,其67B模型在多項評估中超越了LLaMA-2 70B。

論文中還強調了高質量數據的重要性以及計算預算的合理分配,以開發更高性能的模型,可見從23年底開始,DS就強調精簡計算預算以及數據規模,而不是存粹堆疊算力與數據,暴力提升模型的性能表現。

2.MoE模型的深度研究:

DS在混合專家(MoE)架構方面的研究也取得了重要進展。他們開發了DeepSeekMoE架構,通過引入細粒度專家分割和共享專家隔離策略,解決了傳統MoE架構中存在的知識混雜和冗余問題,從而實現了更高效的專家激活和模型專化。這種創新設計大幅提升了模型的性能和效率,同時降低了計算成本。

【24年1月11日】DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models

24年1月,DS聯合來自北大、清華還有南京大學的實驗室團隊,共同發布了MoE V1版本的模型以及相應論文,主要改進MoE結構,讓專家激活更加靈活,避免“專家不夠專”問題。

研究團隊發現,傳統的MoE框架有一定局限性,經常存在有限數量專家間知識混雜和知識冗余等問題,阻礙了專家的專化,導致每個專家無法獲得獨特且不重疊的知識,從而降低了模型的有效性和性能(又是一項關于增加效能的研究)。

為此,DeepSeekMoE架構在這篇文章中首次亮相,采用了兩個主要策略,能夠實現真正的專家專化:

細粒度專家分割:此策略將專家分割成更精細的片段,允許更靈活的專家激活組合。通過為每個專家分配更具體的知識,這種方法旨在增強知識獲取的準確性和專化程度。

共享專家隔離:指定某些專家為共享專家,用于捕獲和整合公共知識,從而減少其他專家之間的冗余。

基于大量實驗,團隊證明了DeepSeekMoE確實能夠有效降低計算量并提升表現,從一個具有20億(2B)參數的小規模模型開始,就能以顯著更少的計算量實現與較大規模MoE模型(如GShard)相當或更好的性能。

此外,當模型擴展到160億(16B)和1450億(145B)參數時,依然顯示出其相對于傳統MoE架構的優勢。其中,2B參數的DeepSeekMoE模型匹配了GShard 2.9B模型的性能,16B參數的DeepSeekMoE模型優于LLaMA2 7B模型,而只使用了大約40%的計算量。有趣的是,在一代的MoE模型中,DS就嘗試了64個專家(1個共享專家以及63個路由專家,共享專家總是被激活)的MoE結構,為三代的256個專家系統打下基礎。

從這篇論文開始,DS團隊就意識到了MoE結構的重要性,能夠在擴大模型參數時管理計算成本。在后續的語言模型訓練中,DS沿用了其DeepSeekMoE架構并不斷優化。

【24年5月】DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model(MoE LLM)

在V2版本,模型的參數規模有了一定提升,包含了 236B 個參數,其中每個 token 激活 21B,支持 128K token 的上下文長度。

V2論文的核心在于,如何更好地平衡模型性能與訓練和推理效率。團隊發現使用多頭注意力機制(MHA)的模型,在推理過程中由于需要大規模的鍵值(KV)緩存,效率不高。由此在DeepSeek-V2 時,DS就開始采用多頭潛在注意力 (MLA) ,并在由 8.1T 標記組成的高質量多源語料庫上對 DeepSeek-V2 進行了預訓練,并進一步執行監督微調 (SFT) 和強化學習 (RL) 以充分釋放其潛力。V2依然沿用了DeepSeekMoE的架構設計,通過稀疏計算以較低的成本訓練強大的模型。它采用細粒度的專家分割和共享專家隔離,允許更高的專化度并減少冗余,優于傳統的MoE架構如GShard。

基于架構以及注意力機制上的創新,與DeepSeek 67B相比,訓練成本節省了42.5%,并且由于KV緩存的內存需求減少,支持更大的批次大小。模型的生成吞吐量也顯著提高,使其在實際應用中更具實用性。在表現評測上,DeepSeek-V2模型在多個基準測試中實現了開源模型中的領先表現,在英語、代碼和數學基準測試中優于Qwen1.5 72B和Mixtral 8x22B等模型,并在中文任務中表現出色,在LMSYS的Chatbot Arena 超越了當時所有的開源模型。

對于V2版本,DS依然選擇開源:通過將DeepSeek-V2及其較小版本DeepSeek-V2-Lite發布到開源社區,并鼓勵進一步研究和實驗MLA和DeepSeekMoE架構。在DS提供的API服務中,V2版本模型能夠對標 GPT-4-Turbo 的性能,但價格只要 1塊錢/百萬輸入,這是 GPT-4-Turbo 的 1/70。因此DS在當時 成了業內知名的“價格屠夫”,并掀起了一波模型降價潮。

3.基于代碼和定理證明的推理能力研究:

DeepSeek-Coder系列模型是DS在代碼生成和編程任務領域的開源模型,旨在縮小開閉源之間的性能差距。DS通過使用自己收集的大規模高質量數據集和創新的預訓練策略,顯著提高了模型代碼生成和補全的能力。

除此之外,DeepSeek-Prover模型代表了DeepSeek公司在自動定理證明領域的創新,通過生成大規模合成數據來克服訓練數據稀缺的挑戰。這種方法大大增強了模型在正式數學證明任務中的性能,并在多個基準測試中取得了優異的表現。

【23年11月2日】DeepSeek-Coder: When the Large Language Model Meets Programming--The Rise of Code Intelligence

這是DS團隊最早開源的模型之一,除了代碼相關的研究以外,這篇論文在背景介紹中就奠定了DS的研究基調:開源與閉源在性能上的差距,閉源模型(如OpenAI的Codex和GPT-3.5)在代碼生成和其他編程相關任務中表現出了顯著的能力,但由于其專有閉源性質,限制了更廣泛的研究和開發社區的使用。

為此,DS推出了coder系列,這是一個開源代碼模型集合,參數規模從1.3B到33B不等。

這些模型從頭開始訓練,使用了來自87種編程語言的2T個令牌的龐大數據集。訓練過程中采用了創新的方法,包括使用16K上下文窗口的中間填充(FIM)任務,以增強模型的代碼生成和補全能力。值得一提的是,在V3模型的訓練中,也使用了FIM策略,有別于一般自回歸式的語言建模訓練集。除此之外,在在預訓練過程中還引入了一種獨特的代碼庫級別數據組織方法,提高了模型對項目中跨文件依賴關系的理解能力。

在當時的評估中,DeepSeek-Coder模型在多個基準測試中優于現有的開源模型,包括HumanEval、MBPP、DS-1000和LeetCode比賽基準。DeepSeek-Coder-Base 33B模型在多語言和單語言基準測試中的準確性優于CodeLlama-Base 34B。此外,DeepSeek-Coder-Instruct 33B模型在許多編碼任務中超越了OpenAI的GPT-3.5 Turbo,縮小了開源和專有模型之間的性能差距。

【24年5月】DeepSeek-Prover: Advancing Theorem Proving in LLMs through Large-Scale Synthetic Data Challenge

在24年5月,DS發布了一篇有趣但沒有受到廣泛關注的文章,主題是關于通過大規模合成數據推進大型語言模型(LLMs)的定理證明。顯然在早期,DS就嘗試了數據合成,為后續V3和R1系列的數據蒸餾打下基礎。這篇論文主要討論了在正式定理證明領域中,大語言模型(LLMs)缺乏訓練數據的問題。與自然語言或代碼不同,正式證明的訓練數據集非常有限

由此,論文提出了一種在Lean 4證明環境中生成大規模合成數據的新方法。通過將主要來自高中和本科競賽問題的非正式數學問題轉化為正式陳述,并過濾低質量的陳述、生成證明,并使用Lean 4驗證器進行驗證。DS以此生成了一個包含800萬個正式陳述及其對應證明的數據集,顯著擴展了大模型在定理證明訓練中的可用數據,并以此微調得到了DeepSeek-Prover模型,在各種基準測試(如miniF2F和FIMO數據集)超越了GPT-4和其他模型,得到了領域內最佳的訓練結果。例如,DeepSeek-Prover在miniF2F測試中以64個樣本達到了46.3%的完整證明生成準確率,而GPT-4僅為23.0%

Coder和Prover模型系列的成功,也讓DS在早期積累了一定關于模型推理能力的訓練經驗。在后續V3以及R1模型的構建以及訓練過程中,也可看到一些用于Coder和Prover模型訓練的相似方法。

4.多模態領域探索:

在視覺-語言理解領域,DeepSeek公司在早期開發了DeepSeek-VL系列模型,這些模型通過混合視覺編碼器和創新的訓練策略,能夠高效處理高分辨率圖像和復雜的多模態任務,顯示出在真實世界應用中的強大能力。

【24年3月11日】DeepSeek-VL: Towards Real-World Vision-Language Understanding

其實視覺是DS選擇去處理真實世界多模態信息理解的第一步,在其中主要探討如何處理高分辨率圖像并保持強大的語言能力。當時開源模型由于訓練數據的多樣性不足、處理復雜視覺-語言任務的模型架構不夠理想,以及無法有效平衡視覺和語言理解的訓練策略,常在實際應用中落后于專有模型。

VL系列的預訓練數據集主要來自于網頁截圖、PDF、OCR、圖表,以及來自教科書和專家知識的知識型內容。此外,研究團隊還創建了一個用例分類體系來指導指令微調,提升模型在真實世界環境中的用戶體驗。

在模型架構上,DeepSeek-VL采用了一種混合視覺Encoder,將低分辨率文本對齊Encoder與高分辨率Encoder相結合,使模型能夠高效處理詳細圖像。此設計在保持各種任務中的重要語義和詳細視覺信息的同時,平衡了Token預算和計算成本。

除此之外,DS還嘗試了一種新的訓練方法,在發展多模態能力的同時保持強大的語言能力。該策略包括“模態預熱”階段,逐步將視覺-語言數據納入訓練,以平衡這兩種模態。DeepSeek-VL家族,包括1.3B和7B模型,均采用此方法進行訓練,確保其在視覺和語言中心基準測試上具有穩健的表現。

DeepSeek-VL模型在各種基準測試中表現出最先進或具有競爭力的性能。7B模型的表現優于許多相似規模的開源模型,甚至在某些基準測試中接近專有模型如GPT-4V,顯示出其在真實世界應用中的有效性。例如,DeepSeek-VL在SeedBench上取得了70.4的得分接近GPT-4V的71.6,并在數學邏輯和自然圖像理解任務中表現優異。

DS在VL一代模型上的成功,讓其選擇繼續探索多模態模型。在24年12月13日,DS開源了第二代的VL系列模型,架構和訓練方法上類似于一代模型。今年1月27日,在V3以及R1系列模型之后,推出了DS Janus-Pro多模態模型。

總結

我們可以看出,在今年DS的V3、R1以及Janus-Pro大爆發之前,其實DS已經深刻研究了核心的算法、訓練以及數據的優化方式,每篇先前發布的論文都導向現如今其在推理模型訓練上的成功,并且基本都強調了開源,和伙伴一起共建社區生態。DS的成功也證明了,實質的社區開源與堅定的技術主張是真正的長期主義。

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

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

相關文章

TTS-Web-Vue系列:Vue3實現內嵌iframe文檔顯示功能

🖼? 本文是TTS-Web-Vue系列的新篇章,重點介紹如何在Vue3項目中優雅地實現內嵌iframe功能,用于加載外部文檔內容。通過Vue3的響應式系統和組件化設計,我們實現了一個功能完善、用戶體驗友好的文檔嵌入方案,包括加載狀態…

Elasticsearch索引設計與調優

一、分片策略設計 1.?分片容量規劃 單分片容量建議30GB(日志場景可放寬至100GB),避免超大分片引發查詢延遲。分片總數計算公式:總數據量 / 30GB 1.2(20%余量應對未來增長)。主分片數創建后不可修改,副本分片數支持動態調整。2.?分片分布優化 PUT logs-2025 { &qu…

Spring AI 集成 Mistral AI:構建高效多語言對話助手的實戰指南

Spring AI 集成 Mistral AI:構建高效多語言對話助手的實戰指南 前言 在人工智能應用開發領域,選擇合適的大語言模型(LLM)與開發框架至關重要。Mistral AI 憑借其高效的多語言模型(如 Mistral-7B、Mixtral-8x7B 等&am…

從新手到高手:全面解析 AI 時代的「魔法咒語」——Prompt

引言:AI 時代的「語言煉金術」 在人工智能技術突飛猛進的今天,我們正在經歷一場堪比工業革命的生產力變革。從聊天機器人到圖像生成,從數據分析到自動化寫作,AI 模型正在重塑人類與信息交互的方式。而在這一切背后,隱…

MySQL 8.0安裝(壓縮包方式)

MySQL 8.0安裝(壓縮包方式) 下載安裝包并解壓 下載 https://dev.mysql.com/downloads/mysql/可關注“后端碼匠”回復“MySQL8”關鍵字獲取 解壓(我解壓到D:\dev\mysql-8.4.5-winx64目錄下) 創建mysql服務 注意,這步之前一定要保證自己電…

免費Ollama大模型集成系統——Golang

Ollama Free V2 Web 功能實現:界面交互與后端邏輯 一、Web 界面概述 Ollama Free V2 的 Web 界面提供了豐富的交互功能,包括模型選擇、圖片上傳、歷史記錄查看等。界面使用 Bootstrap 進行布局,結合 JavaScript 實現動態交互。 二、前端界…

【AI】人工智能數據標注細分和商業機會

一、數據標注的常見方法 數據標注是為人工智能模型訓練提供高質量標簽的過程,根據數據類型(圖像、文本、音頻、視頻等)的不同,標注方法也有所差異: 1. 圖像標注 分類標注:為圖像分配類別標簽&#xff08…

lanqiaoOJ 652:一步之遙 ← 擴展歐幾里得定理

【題目來源】 https://www.lanqiao.cn/problems/652/learning/ 【題目背景】 本題為填空題,只需要算出結果后,在代碼中使用輸出語句將所填結果輸出即可。 【題目描述】 從昏迷中醒來,小明發現自己被關在X星球的廢礦車里。礦車停在平直的廢棄…

HTTP / HTTPS 協議

目錄 一、前言: 二、Fiddler 抓包工具: 三、http 協議: 1、http 請求: 1.(1)請求行: 1、(2) 請求頭: 1、(3) 請求正文: 2、http 響應: 2、(1) 狀態碼&#x…

使用泛型加載保存數據

文章速覽 泛型泛型概述定義優點 實例加載數據保存數據 一個贊,專屬于你的足跡! 泛型 泛型概述 泛型(Generics)是 C# 中一種重要的編程特性,它允許程序員編寫靈活且類型安全的代碼。通過使用泛型,可以創建…

Redis內存淘汰策略和過期鍵刪除策略有哪些?

Redis 提供 8 種內存淘汰策略,以下是詳細解析及場景建議: 一、核心策略解析 noeviction (默認策略) 機制:內存滿時拒絕新寫入操作,返回錯誤優勢:絕對數據安全場景:金融交易系統、醫療數據存儲 allkeys-lr…

【C/C++】自定義類型:結構體

文章目錄 前言自定義類型:結構體1.結構體類型的聲明1.1 結構體回顧1.1.1 結構的聲明 1.1.2 結構體變量的創建和初始化1.2 結構的特殊聲明1.3 結構的自引用 2.結構體內存對齊2.1 對?規則2.2 為什么存在內存對齊?2.3 修改默認對?數 3. 結構體傳參4.結構體…

PPO算法:一種先進的強化學習策略

什么是PPO算法? PPO(Proximal Policy Optimization)是一種增強學習算法,主要應用于解決連續控制任務。PPO算法在2017年由OpenAI提出,旨在解決傳統策略梯度方法在連續控制任務中面臨的挑戰。PPO算法通過引入一個近似目…

OpenCV實現數字水印的相關函數和示例代碼

OpenCV計算機視覺開發實踐:基于Qt C - 商品搜索 - 京東 實現數字水印的相關函數 用OpenCV來實現數字水印功能,需要使用一些位操作函數,我們需要先了解一下這些函數。 1. bitwise_and函數 bitwise_and函數是OpenCV中的位運算函數之一&…

基于Python的計算機科學研究話題管理系統的設計與實現 - 爬蟲

標題:基于Python的計算機科學研究話題管理系統的設計與實現 - 爬蟲 內容:1.摘要 本文聚焦于基于Python的計算機科學研究話題管理系統的爬蟲部分。背景是隨著計算機科學研究的快速發展,相關話題數據海量且分散,人工管理效率低。目的是設計并實現一個能高…

告別手動解析!借助 CodeBuddy 快速開發網頁源碼提取工具

作為一名長期從事 Web 開發的程序員,我們在日常工作中,時不時會需要查看網頁的源代碼。這么做的目的通常是為了排查前端渲染的問題、分析接口返回的數據結構,或者就是單純地想快速提取頁面中的某些信息,比如文章鏈接、圖片地址&am…

為什么要在 input() 后加 .strip()?

strip() 是 Python 字符串的一個方法,用于去除字符串開頭和結尾的空白字符(包括空格、制表符 \t、換行符 \n 等)。 為什么要在 input() 后加 .strip()? 用戶在輸入時,可能會不小心在開頭或結尾輸入空格,例…

【日擼 Java 300行】Day 14(棧)

目錄 Day 14:棧 一、棧的基本知識 二、棧的方法 1. 順序表實現棧 2. 入棧 3. 出棧 三、代碼及測試 拓展: 小結 Day 14:棧 Task: push 和 pop 均只能在棧頂操作.沒有循環, 時間復雜度為 O(1). 一、棧的基本知識 詳細的介…

dotnet core c#調用Linux c++導出函數

1.聲明C++導出函數 platform_export.h // // Created by dev on 5/6/25. //#ifndef PLATFORM_EXPORT_H #define PLATFORM_EXPORT_H #if defined(_WIN32)#ifdef LIB_EXPORTS#define LIB_API __declspec(dllimport)#else#define LIB_API __declspec(dllimport)#endif #else#ifde…

SparkSQL操作Mysql

前面的課程我們學習了如何從csv文件中讀入數據,這相當于是對csv這種類型的數據的操作。那么接下來,我們一起看看,如何寫Spark程序來操作mysql數據庫。先來給大家介紹一下我們這節課的主要學習內容: (1)安裝…