【LLM】Llama 3 論文精讀

導言

  1. Llama 3.5系列模型的發布

    • Llama 3.5系列模型是開源的,最大模型參數為405B([[稠密Transformer架構]],而不是MOE 架構),上下文窗口長度為128K。
    • 模型支持多語言和工具使用,并且在某些評估中已經接近或超過GPT-4的水平。
  2. 模型架構與訓練

    • Llama 3.5采用了傳統的稠密Transformer架構,而不是MOE(Mixture of Experts)架構。
    • 訓練過程分為預訓練和后訓練兩個階段,后訓練階段使用了簡單的SFT(Supervised Fine-Tuning)和DPO(Direct Preference Optimization)算法,沒有使用復雜的RLHF(Reinforcement Learning from Human Feedback)。
  3. 性能評估

    • Llama 3.5在多個評估基準上表現出色,尤其是在知識面(MMLU)、代碼生成(HumanEval)和數學推理(GSM8K)等任務上。
    • 模型越大,性能提升越明顯,但70B模型已經表現出較強的性能,405B模型在某些任務上提升不大。
  4. 模型的應用場景

    • Llama 3.5展示了在工具使用、多語言翻譯、復雜推理和代碼生成等方面的能力。
    • 模型在多語言任務上表現良好,能夠將故事翻譯成西班牙語等語言。
  5. 模型的開源與使用限制

    • Llama 3.5 是開源的,但Llama團隊更新了用戶協議,要求使用其模型進行訓練或微調的開發者必須在模型名稱中包含“Llama 3”
  6. 未來展望

    • Llama 3.5系列模型在開源模型中的地位穩固,預計在一段時間內將繼續保持領先地位。
    • 盡管模型性能強大,但在實際應用中,70B模型已經能夠滿足大部分需求,405B模型的訓練和推理成本較高。

總結來說,Llama 3.5系列模型在性能、架構和應用場景上都有顯著的優勢,尤其是在開源模型領域,但其訓練和推理成本較高,且與競爭對手Mistral之間存在激烈的競爭。

預訓練數據

1. 預訓練的四個關鍵步驟

  • 數據集構建:從互聯網上抓取大量數據,涵蓋多種來源(如 Common Crawl、GitHub、YouTube等),并進行去重和清洗。
  • 模型架構與Scaling Law:確定模型大小和訓練數據量,通常需要根據數據和架構進行調整。
  • 訓練過程:大規模訓練需要幾個月時間,涉及數千張GPU卡,訓練過程中需要容災處理。
  • 多階段訓練:訓練分為多個階段,每個階段的目標和數據處理方式可能不同。

2. 預訓練數據的來源與處理

  • 數據來源
    • 互聯網抓取(如Common Crawl、GitHub、YouTube等)。
    • 垂直網站(如Meta可能使用Facebook數據)。
    • 書籍、代碼庫(如GitHub)、視頻字幕等。
  • 數據清洗
    • 去除重復數據(URL去重、文檔去重、行級別去重)。
    • 使用MinHash等算法處理大規模文本去重。
    • 過濾低質量數據(如廣告、導航欄、臟詞、PII信息等)。
    • 使用分類器(如FastText、Roberta)對數據進行質量打分和分類。
  • 特殊數據處理
    • 代碼和數學推理數據的抽取與保留,提升模型的推理能力。
    • 多語言數據的處理,包括語言分類和去重。

3. 數據混合與采樣

  • 數據混合比例
    • 高質量數據(如數學、代碼、Wikipedia)需要[[上采樣]],低質量數據(如娛樂、成人內容)需要下采樣。
    • 最終數據混合比例為:50%通用知識、25%數學和推理、17%代碼、8%多語言。
  • 多語言數據處理
    • 多語言數據在互聯網中占比較高,但在訓練中被下采樣,導致Llama 3的多語言能力較弱。

4. 退火技術(Annealing)

  • 退火的作用
    • 在訓練后期,使用少量高質量數據(如數學、代碼)進行退火訓練,提升模型在特定任務(如數學推理)上的表現。
    • 類似于“考前突擊”,通過重新調整學習率,在小規模高質量數據上微調模型。
  • 退火的效果
    • 在GSM8K等數學評測集上,退火技術顯著提升了模型的表現。
  • 數據質量評估
    • 通過退火技術,可以評估新數據源的質量,確定其對模型性能的提升效果。

5. 技術細節與挑戰

  • 數據清洗的復雜性
    • 數據清洗是一個耗時且資源密集的過程,涉及大量人工和計算資源。
    • 需要根據具體任務和數據特點,定制化處理(如代碼、數學公式的抽取)。
  • 模型訓練的容災與穩定性
    • 大規模訓練需要處理硬件故障和數據分布變化。
  • 數據混合的實驗性
    • 數據混合比例需要通過多次實驗確定,沒有統一的最佳答案。

6. 與競爭對手的對比

  • Llama 3.5在數據質量和訓練技術上進行了大量優化,尤其是在代碼和數學推理任務上表現突出。
  • 與Mistral等競爭對手相比,Llama 3.5更注重數據多樣性和高質量數據的利用。

7. 未來改進方向

  • 多語言能力的提升:當前Llama 3的多語言能力較弱,未來可能需要增加多語言數據的比例和質量。
  • 數據清洗和處理的進一步優化:通過更精細的數據處理技術,提升模型在特定任務上的表現。

總結來說,Llama 3.5 的預訓練階段注重數據質量、多樣性和高效利用,通過數據清洗、混合和退火技術,顯著提升了模型在代碼、數學推理等任務上的性能。然而,多語言能力仍是其短板,未來可能需要進一步優化。

模型

1. 模型架構概述
  • 基礎架構:Llama 3 使用了標準的稠密Transformer架構,與之前的版本相比沒有本質變化。
  • 性能提升來源
    • 數據質量和多樣性。
    • 模型規模更大(參數更多)。
    • 數據清洗和處理的優化。

2. 主要改進點
  1. Grouped Query Attention (GQA)

    • 背景:在多頭注意力機制(Multi-Head Attention)中,每個頭都有自己的Key(K)、Value(V)和Query(Q)。在推理時,K和V需要緩存(KVCache),導致內存占用高。
    • GQA的核心思想:將多個頭的K和V分組共享,減少內存占用和計算量。
      • 例如,將8個頭的K和V分成4組,每組共享相同的K和V。
    • 優點
      • 顯著減少KVCache的內存占用。
      • 減少權重存儲和計算帶寬。
    • 適用場景:特別適合大模型(如70B、405B)的推理優化。
  2. 長序列訓練中的掩碼優化

    • 問題:在長序列訓練中,一個樣本可能包含多個文檔,計算Attention時,不同文檔之間的Token不應相互影響。
    • 解決方案:在Self-Attention中加入掩碼,確保每個Token只與同一文檔內的Token計算Attention分數。
    • 適用場景:支持更長的上下文窗口(如128K)。
  3. Tokenizer改進

    • 詞典大小:從Llama 2的32K擴展到128K。
      • 100K來自GPT-4的Tokenizer(tiktoken),28K為新增的非英語Token。
    • 優點
      • 提升多語言支持能力。
      • 減少Token數量,提升計算效率(例如,一個英文單詞從2個Token減少到1.5個Token)。
  4. RoPE位置編碼優化

    • 改進:使用更大的超參數(Theta),支持更長的上下文窗口(如32K)。
    • 優點:提升模型對長文本的處理能力。

3. 模型規模與參數
  • 模型規模
    • 8B:32層,4096寬度。
    • 70B:80層,8192寬度。
    • 405B:126層,16384寬度。
  • 參數增長規律
    • 模型大小與層數成正比,與寬度成平方關系。
    • 例如,8B到70B:層數×2.5,寬度×2,總參數增長約10倍。

4. Scaling Law(縮放定律)
  • 核心思想:通過小模型的實驗結果預測大模型的性能。
    • 傳統Scaling Law:預測下一個Token的損失(Loss)。
    • Llama 3的改進:預測下游任務(如數學推理)的損失和精度。
  • 應用場景
    • 確定最佳模型規模和訓練數據量。
    • 例如,給定計算資源(如GPU卡數和訓練時間),預測最優模型大小(如405B)。
  • 實驗結果
    • 在小模型上擬合的Scaling Law能夠較準確地預測大模型的性能。
    • 不同任務(如數學推理、代碼生成)的Scaling Law曲線不同,需要分別擬合。

5. 訓練與推理優化
  • 訓練挑戰
    • 大規模訓練(如405B模型)需要數萬張GPU卡,訓練時間長達數月。
    • 需要處理硬件故障和數據分布變化。
  • 推理優化
    • 通過GQA減少內存占用和計算量。
    • 支持更長的上下文窗口(如128K)。

6. 與Llama 2的對比
  • 主要改進
    • 引入GQA,優化推理性能。
    • 擴展Tokenizer,支持多語言和更高效的Token表示。
    • 優化位置編碼,支持更長上下文。
    • 使用Scaling Law更精準地預測模型性能。
  • 性能提升
    • 在多語言、長上下文和推理任務上表現更好。
    • 但仍需進一步優化多語言能力。

7. 未來改進方向
  • 多語言支持:當前多語言能力仍較弱,需進一步優化Tokenizer和訓練數據。
  • 長上下文優化:支持更長的上下文窗口(如100萬Token)。
  • 訓練效率:進一步優化大規模訓練的穩定性和效率。

總結

Llama 3 在模型架構上的改進主要集中在推理優化(如GQA)、多語言支持(Tokenizer擴展)和長上下文處理(RoPE優化)。通過Scaling Law,Llama 3 能夠更精準地預測大模型的性能,從而優化模型規模和訓練數據量。盡管在多語言能力上仍有提升空間,Llama 3 在推理、代碼生成和數學任務上表現顯著提升,進一步鞏固了其在開源大模型領域的領先地位。

Llama 3 訓練基礎設施與技術細節

1. 硬件架構
  • GPU集群
    • 規模:最大使用 16,000張H100 GPU,每臺機器配備8塊GPU和2個CPU。
    • 網絡
      • 小模型:使用NVIDIA的Infiniband,延遲低但穩定性較差。
      • 大模型:使用RDMA over Ethernet,穩定性更高,但需要大量底層優化。
      • 帶寬:每根光纖支持400Gb/s,網絡架構為三層結構,上層交換機帶寬為下層的1/7。
    • 存儲
      • 容量240PB SSD,支持高吞吐量(峰值7TB/s,持續2TB/s)。
      • Checkpoint:每個GPU的狀態(1MB到4GB)需要快速寫入存儲系統,支持容災和快速恢復。

2. 訓練任務切分
  • 并行策略
    1. Tensor Parallelism (TP)
      • 將模型的每一層切分到多個GPU上,每個GPU負責一部分計算。
    2. Pipeline Parallelism (PP)
      • 模型的不同層分配到不同的GPU上,數據按順序流過各層。
      • 問題:存在“氣泡”(Bubble),即GPU空閑等待數據的時間。
    3. Data Parallelism (DP)
      • 數據切分到多個GPU上,每個GPU計算一部分數據,最后匯總結果。
    4. Context Parallelism (CP)
      • 將長序列(如128K Token)切分到多個GPU上,減少內存占用。
  • 切分策略
    • 405B模型:使用4D切分(TP、PP、DP、CP),充分利用16,000張GPU。
    • 70B模型:僅需TP、PP、DP,無需CP。

3. 訓練效率與優化
  • GPU利用率
    • 理論值:H100的峰值算力為989 TFLOPS
    • 實際值:達到43%利用率(約400 TFLOPS),在16,000張GPU上表現良好。
  • 優化點
    • 網絡優化:針對以太網進行底層優化,提升All-Reduce和All-Gather操作的效率。
    • 數值穩定性:使用FP16進行計算,但在累加時切換為FP32,避免浮點溢出。
    • 容災與恢復
      • 每2小時保存一次Checkpoint,支持快速恢復。
      • 訓練過程中平均每天中斷10次,主要原因是GPU和內存故障。

4. 容災與穩定性
  • 故障統計
    • GPU故障:148次(占31.8%)。
    • 內存故障:85次(占18.2%)。
    • 其他故障:包括交換機、光纖、SSD、CPU等問題。
  • 恢復策略
    • 快速隔離故障節點,遷移任務到其他GPU。
    • 利用高速存儲系統快速恢復Checkpoint,確保有效訓練時間達到90%

5. 挑戰與未來方向
  • 挑戰
    • 硬件穩定性:H100早期批次故障率較高,GPU和內存問題頻發。
    • 網絡復雜性:大規模集群的網絡架構設計和優化難度大。
    • 容災與恢復:需要高效的Checkpoint機制和快速故障排查能力。
  • 未來方向
    • 異步訓練:減少同步等待時間,提升大規模訓練的效率和穩定性。
    • 硬件升級:采用下一代GPU(如B100)進一步提升算力和能效。

總結

Llama 3 的訓練基礎設施展示了大規模AI模型訓練的復雜性和挑戰。通過16,000張H100 GPU240PB SSD存儲優化的網絡架構,Meta成功訓練了405B參數的模型。盡管在硬件穩定性、網絡優化和容災恢復方面面臨諸多挑戰,Llama 3 的訓練效率(43% GPU利用率)和容災能力(90%有效訓練時間)仍然達到了業界領先水平。未來,隨著硬件升級和異步訓練算法的引入,大規模模型訓練的效率和穩定性有望進一步提升。

模型訓練過程

1. 預訓練階段

(1)基本學習率調整
  • 初始學習率 8E-05,使用 8000步線性warm-up 到最大值。
  • 之后 使用cosine decay 下降 100倍,最終到 8E-07
(2)批量大小和序列長度變化
  • 初始階段:batch size 為 400萬個token,序列長度 4096
  • 中間階段(252M token):batch size 增加到 800萬,序列長度 8192
  • 后期階段(2.87T token):batch size 增加到 1600萬
(3)訓練穩定性
  • 訓練過程中 小的 batch size 更穩定,隨著訓練進行,逐步增大 batch size。
  • 選擇 batch size 是實驗的結果,并非固定最佳方案。
(4)數據采樣調整
  • 非英語數據的比例提高,提升多語言能力。
  • 數學數據采樣增加,提升數學推理能力。
  • 新網頁數據加入,增強最新信息的理解能力。
  • 低質量數據下采樣,優化整體數據質量。

2. 長上下文預訓練

(1)目標
  • 訓練階段使用 8K 上下文,但最終要支持 128K 長上下文
  • 需要逐步擴展,以避免計算資源浪費和模型不穩定。
(2)方法
  • 逐步從 8K → 128K,一共 6次擴展,確保模型能穩定處理長上下文。
  • 采用 大海撈針測試 來評估模型的長文本理解能力。
(3)算力挑戰
  • Self-Attention 計算復雜度是 O(n2),使得 128K 訓練成本巨大。
  • 分布式計算策略 需要調整,以適應更長的上下文長度。

3. 退火(Fine-tuning 收尾階段)

(1)學習率衰減
  • 最后4000萬個token線性降到 0
  • 128K 上下文長度 繼續保持。
(2)高質量數據采樣
  • 退火階段更關注高質量數據,以優化最終性能。
(3)模型權重平均
  • 采用多個 final step 的 checkpoint 進行模型權重平均,提升穩定性。
  • 該方法在 CNN 時代用于刷榜(如 ImageNet 競賽)。

4. 其他未詳細說明的部分

  • 數據采樣的具體比例和來源未透露(可能涉及版權)。
  • 數據清洗和處理方式未完全公開,但可以通過實驗優化。

總結

  • 模型訓練是一個實驗驅動的過程,需要不斷調整參數,類似“煉丹”。
  • 批量大小、上下文長度、數據質量 逐步優化,以適應最終任務需求。
  • 退火階段 主要用于收尾,確保模型穩定并具備高質量輸出能力。

這套方法不僅適用于 Llama 3,也符合當前主流大語言模型的預訓練范式。

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

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

相關文章

selenium環境搭建

1. 安裝selenium pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/如遇以下報錯 Getting requirements to build wheel ... errorerror: subprocess-exited-with-error Getting requirements to build wheel did not run successfully.│ exit code: 1╰─…

My first Android application

界面元素組成&#xff1a; 功能代碼&#xff1a; /*實現功能&#xff1a;當輸入內容后&#xff0c;歡迎文本發生相應改變&#xff0c;并清除掉文本域內容當未輸入任何內容時&#xff0c;彈出提示文本以警告用戶*/val greetingText findViewById<TextView>(R.id.printer)…

js版本ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14[2023]新特性

ES全稱ECMAScript,ECMAScript是ECMA制定的標準化腳本語言,本文講述Javascript[ECMAScript]版本ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14[2023]的新特性,幫助朋友們更好的熟悉和使用Javascript ES5 1.嚴格模式 use strict2.Object getPrototypeOf,返回一個對象的原…

Redis數據結構-String字符串

1.String字符串 字符串類型是Redis中最基礎的數據結構&#xff0c;關于數據結構與要特別注意的是&#xff1a;首先Redis中所有的鍵的類型都是字符串類型&#xff0c;而且其他集中數據結構也都是在字符串類似基礎上進行構建&#xff0c;例如列表和集合的元素類型是字符串類型&a…

cline通過硅基流動平臺接入DeepSeek-R1模型接入指南

為幫助您更高效、安全地通過硅基流動平臺接入DeepSeek-R1模型&#xff0c;以下為優化后的接入方案&#xff1a; DeepSeek-R1硅基流動平臺接入指南 &#x1f4cc; 核心優勢 成本低廉&#xff1a;注冊即送2000萬Tokens&#xff08;價值約14元&#xff09;高可用性&#xff1a;規…

Java多線程三:補充知識

精心整理了最新的面試資料&#xff0c;有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 Lambda表達式 簡介&#xff1a; 希臘字母表中排序第十一位的字母&#xff0c;英語名稱為Lambda避免匿名內部類定義過多其實質屬于函數式編程的概念 為什么要使用lam…

裝修流程圖: 裝修前準備 → 設計階段 → 施工階段 → 安裝階段 → 收尾階段 → 入住

文章目錄 引言I 毛坯房裝修的全流程**1. 裝修前準備****1.1 確定裝修預算****1.2 選擇裝修方式****1.3 選擇裝修公司****1.4 辦理裝修手續****2. 設計階段****2.1 量房****2.2 設計方案****2.3 確認方案****3. 施工階段****3.1 主體拆改****3.2 水電改造****3.3 防水工程****3.…

Embedding方法:從Word2Vec到ltem2Vec

引言 在推薦系統領域&#xff0c;如何有效表征物品特征始終是核心挑戰。傳統協同過濾方法受限于稀疏性問題&#xff0c;直到2016年微軟研究院提出的Item2Vec方法&#xff0c;將自然語言處理中的Word2Vec技術創造性應用于物品表征學習&#xff0c;開啟了嵌入學習的新紀元。 It…

Udp發送和接收數據(python和QT)

服務端代碼 (python) import socketdef udp_server(host0.0.0.0, port12345):# 創建一個UDP套接字sock socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 綁定服務器的IP地址和端口號sock.bind((host, port))print(f"UDP服務器已啟動&#xff0c;監聽端口 {port}...&…

VBA腳本將DeepSeek嵌入Word中教程

一、獲取API-Key 目前我們可以直接只用官網的API來實現&#xff0c;申請這一步是關鍵 也可以直接訪問官網的API平臺&#xff1a;https://platform.deepseek.com/ &#xff0c;沒注冊的注冊完登錄一下&#xff0c;我們點擊到左側菜單的“APIKeys”按鈕&#xff0c;然后點擊右側…

DeepSeek接入Siri(已升級支持蘋果手表)完整版硅基流動DeepSeek-R1部署

DeepSeek接入Siri&#xff08;已升級支持蘋果手表&#xff09;完整版硅基流動DeepSeek-R1部署 **DeepSeek** 是一款專注于深度學習和人工智能的工具或平臺&#xff0c;通常與人工智能、機器學習、自動化分析等領域有關。它的主要功能可能包括&#xff1a;深度學習模型搜索&…

網站搭建基本流程

需求分析&#xff1a; 實現網站搭建的過程&#xff1a;首先進行網站的需求性分析 網站可分為前臺系統和后臺系統&#xff0c;由不同的功能拆分為不同的模塊 如下是一個電商網站可以拆分出的模塊&#xff1a; 在編寫代碼前&#xff0c;我們要先對網站進行架構&#xff0c;通過…

解決elementUi el-select 響應式不生效的問題

情況一,字段類型不匹配 考慮option的value值的字段類型是否和api返回的字段類型一致&#xff0c;如果一個為字符串一個為數字類型是無法匹配上的 <template> <div><el-select v-model"value" size"large"style"width: 240px"&…

QT實戰-基于QWidget實現的異形tip窗口

本文主要介紹了qt中,基于QWidget實現異形tip窗口的幾種實現方式,話不多說,先上圖, 1.使用QPainter和QPainterPath實現 代碼:tipwnd1.h #ifndef TIPWND1_H #define TIPWND1_H#include <QWidget>class TipWnd1 : public QWidget {Q_OBJECTQ_PROPERTY(QColor my_border…

【C++篇】樹影搖曳,旋轉無聲:探尋AVL樹的平衡之道

文章目錄 從結構到操作&#xff1a;手撕AVL樹的實現一、AVL樹介紹1.1 什么是AVL樹1.2 平衡因子的定義1.3 平衡的意義1.4 AVL樹的操作 二、AVL樹的節點結構2.1 節點結構的定義&#xff1a; 三、插入操作3.1 插入操作概述3.2 步驟1&#xff1a;按二叉查找樹規則插入節點3.3 步驟2…

么是靜態住宅IP,跨境電商為什么需要靜態住宅IP

靜態住宅IP是指直接分配給一臺屬于私人住宅網絡的設備的固定IP地址&#xff0c;這種地址不會頻繁更改。它們作為代理IP&#xff0c;使使用者能夠通過這些代理服務器進行網絡訪問&#xff0c;而對外顯示的則是該住宅的IP地址。由于這些IP地址屬于真實的住宅或個人&#xff0c;并…

清華大學deepseek教程第四版 DeepSeek+DeepResearch 讓科研像聊天一樣簡單(附下載)

deepseek使用教程系列 DeepSeekDeepResearch 讓科研像聊天一樣簡單(附下載) https://pan.baidu.com/s/1VMgRmCSEzNvhLZQc8mu6iQ?pwd1234 提取碼: 1234 或 https://pan.quark.cn/s/f3d4511b790a

leetcode刷題記錄(一百零七)——279. 完全平方數

&#xff08;一&#xff09;問題描述 279. 完全平方數 - 力扣&#xff08;LeetCode&#xff09;279. 完全平方數 - 給你一個整數 n &#xff0c;返回 和為 n 的完全平方數的最少數量 。完全平方數 是一個整數&#xff0c;其值等于另一個整數的平方&#xff1b;換句話說&#x…

軟考高級信息系統項目管理師筆記-第2章信息技術發展

第2章 信息技術發展 2.1 信息技術及其發展 1、按表現形態的不同,信息技術可分為硬技術(物化技術)與軟技術(非物化技術)。前者指各種信息設備及其功 能,如傳感器、服務器、智能手機、通信衛星、筆記本電腦。后者指有關信息獲取與處理的各種知識、方法 與技能,如語言文字…

搭建RAG知識庫的完整源碼實現

搭建RAG知識庫的完整源碼實現&#xff08;基于Python 3.8&#xff09;&#xff1a; # -*- coding: utf-8 -*- # 文件名&#xff1a;rag_knowledge_base.py # RAG知識庫搭建完整源碼&#xff08;含中文注釋&#xff09;import os import re import shutil import chromadb from…