【LLAMA】羊駝從LLAMA1到LLAMA3梳理

every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it

0. 前言

LLAMA 1到3梳理

LLAMA

1. LLAMA 1

論文: LLaMA: Open and Efficient Foundation Language Models
時間: 2023.02

1.1 前言

在之前的大語言模型(GPTs)中,基于模型越大效果越好進行實驗。
然而,Hoffmann等人(2022)最近的工作表明,對于給定的計算預算,最佳性能不是由最大的模型實現的,而是由經過更多數據訓練較小模型實現的。

Hoffmann等人(2022)的縮放定律的目標是確定如何最佳地縮放特定訓練計算預算的數據集和模型大小。然而,這個目標忽略了推理時間,這在大規模服務語言模型時變得至關重要。
因為大部分社區用戶其實沒有訓練 LLM 的資源,他們更多的是拿著訓好的 LLM 來推理。在這種情況下,我們首選的模型應該不是訓練最快的,而應該是推理最快的 LLM。

所以LLAMA的核心指導思想是: 小模型大數據

LLaMA-13B在大多數基準測試中優于GPT-3,盡管體積小了10倍!!!

1.2 預訓練數據

只使用公開數據,沒有使用任何私有數據。數據集包括:

20241016152302

分詞和GPT-3一樣,使用Byte Pair Encoding (BPE)。分詞以后的訓練數據大小為1.4T。對于大多數數據,訓練階段只見過一次,Wikipedia 和 Books 這兩個數據集見過2次。

1.3 模型架構

模型一共有4個版本,分別是6B、13B、32B和65B。具體細節:
20241017101852

總體來說沿用了Transformer的架構,但是做了以下改進:

1.3.1 Pre-normalization

前置歸一化,和GPT-3一樣,在Transformer的每個子層之前都進行Layer Normalization,而不是在之后。前置歸一化可以防止梯度爆炸,并且可以更好地穩定訓練過程。

使用 RMS Norm 歸一化函數。RMS Norm 的全稱為 Root Mean Square layer normalization。與 layer Norm 相比,RMS Norm的主要區別在于去掉了減去均值的部分,計算公式為:

20241017102148

1.3.2 SwiGLU

使用SwiGLU替代了ReLU作為激活函數。和PaLM中不同,維度采用 2 3 4 d \frac{2}{3}4d 32?4d ,而不是 4 d 4d 4d

1.3.3 RoPE

RoPE 的核心思想是“通過絕對位置編碼的方式實現相對位置編碼”,可以說是具備了絕對位置編碼的方便性,同時可以表示不同 token 之間的相對位置關系。[5] 不同于原始 Transformers 論文中,將 pos embedding 和 token embedding 進行相加,RoPE 是將位置編碼和 query (或者 key) 進行相乘。

1.4 加速

1.4.1 方法

  • 使用了xformers庫。
  • 減少了activation checkpointing 中,重新計算 activation 的計算量。手動實現 transformer 層的反向傳遞函數,保存了計算成本高的 activations,例如線性層的輸出。
  • 通過使用 model parallelism 和 sequence parallelism 來減少顯存的使用量。
  • 盡可能地將 activations 的計算和GPU之間的通訊進行并行。

1.4.2 效果

65B的模型,在2048個80G的A100 GPU上,可以達到380 tokens/sec/GPU的速度。訓練1.4T tokens需要21天。

1.5 實驗結果

論文做了多個實驗,下面摘取其中的自然推理(零樣本)上的結果。
20241017104022

LLaMA-13B 優于 GPT-3(175B),盡管只有1/10大小。 LLaMA-65B 是可以與 Chinchilla-70B 和 PaLM-540B 這種最佳的LLM相競爭的模型。經過微調之后,LLaMA的效果有顯著的提升。

1.6 消耗和排放

論文也比較了訓練LLAMA消耗的能源和排放的二氧化碳量,結果如下:
20241017104404

不得不說,講究!!!!

“開源”使得其他人能在這上面微調,減少能源消耗和排放。牛逼!!!!

1.7 總結

模型方面,和GPT一樣使用的Transformer結構,做了部分改進。
數據方面,本著開源的原則,使用公開的數據,token為1.4T(大約5.6T的原始文本數據,問的GPT)。

做到了小模型大數據

2. LLAMA 2

論文: Llama 2: Open Foundation and Fine-Tuned Chat Models
時間: 2023.07

2.1 預訓練數據

LLAMA 2 訓練數據采用一個新的公開數據混合,總數據量為2T的token.

20241017151820

2.2 模型結構

模型結構基本沿用LLAMA 1。其中的位置編碼依然是RoPE,主要不同是:

  1. 增加了上下文長度,從2k增加到4k。
    4k的上下文,對于chat、summarization、understanding longer documents 等任務有較好效果,在150B tokens上進行2k和4k的對比,發現SQUAD任務性能沒降低,SCROLLS上有提升(平均長度3.5k)。

  2. 使用分組注意力
    對于更大參數量、更大的 context length、更大的 batchsize 來說,原始的MHA(multi-head attention)的內存占用會更高(因為在計算時要緩存pre token的K、V矩陣)。MQA(multi-query attention)讓所有的 head 共享 1 個 KV projection 矩陣;GQA(grouped-query attention )使用 8 個 KV projections(選擇8是因為A100 8GPUs) 來減少內存占用。在 30B 模型上訓練 150B tokens,發現 GQA 效果和 MHA 差不多,比 MQA 要好;在 1 個node的 8 個 A100 GPUs 上推理速度 GQA 和 MQA差不多,比 MHA 要好(MQA 在推理的時候,要把 KV projections 復制到8張卡上)。

2.3 預訓練效果

2.3.1 與開源模型比較

如表2所示,Llama 2 模型優于 Llama 1 模型。特別是,與 Llama 1 65B 相比,Llama 2 70B 在 MMLU 和 BBH上的結果分別提高了≈5和≈8個點。Llama 2 7B 和 30B 模型在除代碼基準外的所有類別上都優于相應大小的 MPT模型。對于 Falcon 模型,Llama 2 7B 和 34B 在所有類別的基準上都優于 Falcon 7B 和 40B 模型。
20241017154145

2.3.2 與閉源模型比較

如表3所示,Llama 2 70B 在 MMLU 和 GSM8K 上接近 GPT-3.5(OpenAI,2023),但在編碼基準上有顯著差距。Llama 2 70B 的結果在幾乎所有基準上都與 PaLM(540B)相當或更好。但是,Llama 2 70B 與 GPT-4 和 PaLM-2-L 之間仍然存在很大的性能差距。

20241017154431

2.4 有監督微調

高質量的數據集更重要。精標的27k數據比公開的幾百萬的數據要好。

超參數

batch size 64
cosine 學習率調度 + 初始學習率 2 × 10?5
權重衰減(weight decay) of 0.1
序列長度(sequence length) 4096

2.5 基于人類反饋的強化學習

2.5.1 數據收集

RLHF 環節的目標是使模型輸出對齊 align 人類偏好 (human preferences) 和遵循指令 (instruction following)。

我們收集代表經驗采樣的人類偏好的數據,由此人類注釋者選擇他們更喜歡的兩個模型輸出。這種人類反饋隨后被用于訓練獎勵模型,該模型學習人類注釋者的偏好模式,然后可以自動做出偏好決策

收集數據方式采用二元比較協議。(說人化,讓人二選一)

標注過程:

首先,要求標注者寫一個提示,然后根據提供的標準在兩個采樣的模型回應之間進行選擇。

其次,Meta 還要求標注者標記他們對所選回應相對于另一種回應的偏好程度:要么他們的選擇明顯更好(significantly better),更好(better),稍微更好(slightly better),或者微不足道地更好/不確定(negligibly better/unsure)。

Meta 關注有用性(helpfulness )和安全性(safety )兩個方面。有用性指的是 Llama 2-Chat 回應如何滿足用戶的請求和提供所需的信息;安全性指的是 Llama 2-Chat 的回應是否安全,例如,“給出制作炸彈的詳細指示”可以被認為是有用的,但根據 Meta 的安全指南是不安全的。分開兩者可以讓我們更好地指導標注者。

通過這個過程,Meta 收集了一個大型數據集,包含超過100萬個基于人類應用我們指定的指南的二元比較,稱之為 Meta 獎勵建模數據。隨著收集到更多的偏好數據,我們能夠訓練出逐漸更好的 Llama 2-Chat 版本。

Llama 2-Chat 改進也改變了模型的數據分布。由于如果不接觸這種新樣本分布,Reward Model 準確度會很快下降,所以在新一輪 Llama 2-Chat 調優之前收集最新 Llama 2-Chat 迭代版本使用的新偏好數據是很重要的。這一步有助于保持 Reward Model 在分布上,并為最新模型維持準確獎勵。

2.5.2 獎勵模型

Reward Model 將模型 response 和 prompt(包括前幾輪的上下文)作為輸入,輸出一個標量分數來表示模型生成的質量(例如,有用性和安全性)。利用這樣的回應 score 作為獎勵,可以在 RLHF 過程中優化 Llama 2-Chat,以實現更好的人類偏好對齊和提高有用性和安全性。

但是有人發現有用性和安全性有時會相互抵消,這可能使得單個 reward model 難以在兩者上都表現良好。為了解決這個問題,Meta 訓練了兩個單獨的 reward model,一個針對有用性(稱為有用性 RM),另一個針對安全性(稱為安全性 RM)。

Meta 選擇從預訓練模型 checkpoint 初始化 reward model,因為它確保了兩個模型都能從預訓練中獲得的知識中受益。簡而言之,reward model“知道”預訓練模型知道的東西。這可以防止出現信息不匹配的情況,例如,兩個模型可能會偏愛幻覺。

模型架構和超參數與預訓練語言模型相同,除了最后一層[CLS]從預測 next token 換成了 regression 來預測一個scalar score 。

訓練目標。為了訓練 reward model,將收集到的成對人類偏好數據轉換為二元排序標簽格式(即,選擇和拒絕)。使用二元排序損失(binary ranking loss):

20241017171234

考慮到偏好的4種評分,修改為:
20241017171343

規模趨勢:

在同等訓練樣本的情況下,reward model 模型越大,效果越好
在當前的訓練樣本量還不夠,reward model 的性能還有提升空間,增加更多的樣本,會繼續提升
reward model 的性能越好,Llama 2-Chat 模型的效果越好,所以要努力提升 reward model 的準確率

2.5.3 迭代微調

主要用兩種主要算法探索了 RLHF 的微調效果:

  • 近端策略優化(PPO)
  • 拒絕采樣微調

這部分沒細看

2.6 總結

與開源的模型相比有競爭力,和GPT4相比還是有差距。

3. LLAMA 3

論文: The Llama 3 Herd of Models
時間: 2024.7.31

3.1 預訓練數據

經過一系列剔除個人信息、過濾、清洗等操作以后訓練數據為15.6T(是LLAMA2 的7倍多)

Llama 3的訓練數據包括了大量的代碼token和超過5%的非英語token,來源于30多種語言。這不僅使得模型在處理英語內容時更加高效,也顯著提升了其多語言處理能力,這表明Llama 3在全球多語言環境中的適應性和應用潛力。

為確保數據質量,Meta開發了一系列數據過濾pipeline,包括啟發式過濾器、NSFW過濾器、語義重復數據刪除技術及用于預測數據質量的文本分類器。這些工具的有效性得益于先前版本Llama的表現,特別是在識別高質量數據方面。

3.2 模型結構

模型總體和之前的差不多,依舊是Decoder結構,主要是層數方面的增加。

與LLAMA2相比,有以下不同:

  1. 分組注意力機制使用8個個頭。
  2. 使用注意掩碼來防止不同文檔內存在的相同序列
  3. 詞典增加到128K tokens
  4. 我們將RoPE基頻超參數增加到500,000

具體的模型結構如下:

20241031095522

3.3 預訓練和微調

文章將其稱為pre-training and post-traing

3.3.1 預訓練

在預訓練階段,為了有效地利用預訓練數據,Llama 3投入了大量精力來擴大預訓練。具體而言,通過為下游基準測試制定一系列擴展法則(scaling laws),使得在訓練之前就能預測出模型在關鍵任務上的性能,進而選擇最佳的數據組合。

在這一過程中,Llama 3對擴展法則有了一些新的發現。例如,根據DeepMind團隊提出的Chinchilla擴展法則,8B模型的最優訓練數據量約為200B token,但實驗發現,即使訓練了兩個數量級的數據后,模型性能仍在繼續提高。在多達15T token上進行訓練后,8B和70B參數的模型都繼續以對數線性的方式提升性能。

為了訓練最大的Llama 3模型,Meta結合了三種并行策略:數據并行、模型并行和流水并行。當同時在16K GPU上進行訓練時,最高效的策略實現了每個GPU超過400 TFLOPS的計算利用率。最后,模型在兩個定制的24K GPU集群上進行了訓練。

3.3.2 微調

包括監督微調(supervised finetuning SFT),拒絕采樣、近似策略優化(Proximal Policy Optimization, PPO)和直接策略優化(Direct Policy Optimization, DPO)

整體結構:
20241031121451

3.4 結果

3.4.1 預訓練

結果:
20241031121300

3.4.2 微調

對比的數據比較多,下面僅顯示coding能力。

20241031121930

3.5 視覺實驗

整個視覺部分分為3部分,image-encoder,image-adapter,video-adapter

其中image-encoder是一個vit結構,用于實現image-text對齊。

image-adapter: 在視頻token和文字token之間引入cross-attention。

We introduce cross-attention layers between the visual token representations produced by the image encoder and the token representations produced by the language model。The cross-attention layers are applied after every fourth self-attention layer in the core language model.

video-adapter:

Our model takes as input up to 64 frames (uniformly sampled from a full video), each of which is processed by the image encoder. We model temporal structure in videos through two components: (i) encoded video frames are aggregated by a temporal aggregator which merges 32 consecutive frames into one, (ii) additional video cross attention layers are added before every fourth image cross attention layer. The temporal aggregator is implemented as a perceiver resampler

20241031115213

3.6 語音實驗(Speech Experiments)

和視覺部分類似

3.7 小結

微調部分沒細看,暫時也用不到。

還是大力出奇跡,越大越牛逼。沒想到模型參數已經來到400B+了,明年或是后面會不會來到8T級別?甚至更大?
果然還是大公司才能玩得起。

通過開源,確實節約了能源,RIS

位置編碼LLAMA1、2、3 都是使用的RoPE。

參考

  1. https://zhuanlan.zhihu.com/p/643894722
  2. https://zhuanlan.zhihu.com/p/632102048
  3. https://zhuanlan.zhihu.com/p/648774481
  4. https://www.zhihu.com/tardis/zm/art/653303123?source_id=1005

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

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

相關文章

什么是網絡安全?網絡安全防范技術包括哪些?

伴隨著互聯網的發展,它已經成為我們生活中不可或缺的存在,無論是個人還是企業,都離不開互聯網。正因為互聯網得到了重視,網絡安全問題也隨之加劇,給我們的信息安全造成嚴重威脅,而想要有效規避這些風險&…

【從0做項目】Java搜索引擎(7) web模塊

阿華代碼,不是逆風,就是我瘋 你們的點贊收藏是我前進最大的動力!! 希望本文內容能夠幫助到你!! 目錄 文章導讀 零:項目結果展示 一:后端web模塊 1:思路 2&#xff1a…

Visual Studio Code 集成 Baidu Comate

文章目錄 安裝Baidu Comate插件 安裝Baidu Comate插件 從左主側欄中 點擊 【擴展】這個圖標,然后在上方輸入欄中輸入 baidu comate —>選中列出的Bai Comate —>點擊 【安裝】按鈕,等待安裝完畢…

WeMos D1+PIR+Android 的小場景制作

最近在做一個有趣的小場景功能,其實已經有成熟產品,但是考慮到沒法實現場景擴展,所以自己開始動手做。 場景描述:玄關人體感應,有人進門,致歡迎詞,有人離開,致歡送詞。 硬件設備&a…

Android ListPreference使用

Android ListPreference使用 參考 添加鏈接描述 導入 androidx.preference.ListPreferenceListPreference是Android中的一個Preference子類,用于顯示一個可選擇的列表,并且可以保存用戶所選擇的值。它繼承自DialogPreference,可以在用戶點擊時彈出一個對話框,顯示可選擇的…

Spring Security實現記住我功能的實戰指南

在現代Web應用中,"記住我"功能是提升用戶體驗的重要特性之一。用戶無需在每次訪問時重新登錄,這不僅方便,還能增強用戶對應用的粘性。今天,我們將通過一個具體的實例,詳細探討如何在Spring Security中實現&q…

用命令模式設計一個JSBridge用于JavaScript與Android交互通信

用命令模式設計一個JSBridge用于JavaScript與Android交互通信 在開發APP的過程中,通常會遇到Android需要與H5頁面互相傳遞數據的情況,而Android與H5交互的容器就是WebView。 因此要想設計一個高可用的 J S B r i d g e JSBridge JSBridge,不…

ModuleNotFoundError: No module named ‘timm.optim.novogr兩種解決方法

運行報錯 from timm.optim.novograd import NovoGradModuleNotFoundError: No module named ‘timm.optim.novograd’。 問題原因 timm版本過高,novograd函數已被拋棄。 解決辦法 方法1:安裝更低版本的timm pip install timm0.4.12方法2&#xff1a…

DeepSeek 本地部署指南:從零開始搭建 AI 搜索工具

1. 引言 背景介紹 DeepSeek 是一款基于 AI 的搜索工具,能夠高效處理海量數據,提供精準的搜索結果。它結合了 Ollama 的模型管理能力,使得部署更加便捷。 為什么選擇本地部署 本地部署可以確保數據隱私,避免云端傳輸的風險&…

昇騰DeepSeek模型部署優秀實踐及FAQ

2024年12月26日,DeepSeek-V3橫空出世,以其卓越性能備受矚目。該模型發布即支持昇騰,用戶可在昇騰硬件和MindIE推理引擎上實現高效推理,但在實際操作中,部署流程與常見問題困擾著不少開發者。本文將為你詳細闡述昇騰 De…

vscode復制到下一行

linux中默認快捷鍵是ctrl shift alt down/up 但是在vscode中無法使用,應該是被其他的東西綁定了,經測試,可以使用windows下的快捷鍵shift alt down/up { “key”: “shiftaltdown”, “command”: “editor.action.copyLinesDownAction”…

網絡爬蟲學習:借助DeepSeek完善爬蟲軟件,實現模擬鼠標右鍵點擊,將鏈接另存為本地文件

一、前言 最近幾個月里,我一直在學習網絡爬蟲方面的知識,每有收獲都會將所得整理成文發布,不知不覺已經發了7篇日志了: 網絡爬蟲學習:從百度搜索結果抓取標題、鏈接、內容,并保存到xlsx文件中 網絡爬蟲學…

Arduino 第十六章:pir紅外人體傳感器練習

Arduino 第十六章:PIR 傳感器練習 一、引言 在 Arduino 的眾多有趣項目中,傳感器的應用是非常重要的一部分。今天我們要學習的主角是 PIR(被動紅外)傳感器。PIR 傳感器能夠檢測人體發出的紅外線,常用于安防系統、自動…

CV -- YOLOv8 圖像分割(GPU環境)

目錄 參考視頻: 標注 JSON轉為TXT 訓練 驗證 參考視頻: 使用 Yolov8 自定義數據集進行圖像分割_嗶哩嗶哩_bilibili 標注 數據集: 我使用的是一些蘋果數據集,可以在我的csdn資源中下載: https://download.csdn.net/do…

深入理解 lua_KFunction 和 lua_CFunction

在 Lua C API 中,lua_KFunction 和 lua_CFunction 是兩個核心概念,尤其在處理協程和 C 函數擴展時扮演著至關重要的角色。lua_CFunction 作為一種 C 函數類型,允許開發者將 C 函數注冊到 Lua 環境中,使得這些 C 函數可以在 Lua 腳本中被調用,進而實現 Lua 的功能擴展。而 …

基于微信小程序的電影院訂票選座系統的設計與實現,SSM+Vue+畢業論文+開題報告+任務書+指導搭建視頻

本系統包含用戶、管理員兩個角色。 用戶角色:注冊登錄、查看首頁電影信息推薦、查看電影詳情并進行收藏預定、查看電影資訊、在線客服、管理個人訂單等。 管理員角色:登錄后臺、管理電影類型、管理放映廳信息、管理電影信息、管理用戶信息、管理訂單等。…

【Linux網絡編程】應用層協議HTTP(請求方法,狀態碼,重定向,cookie,session)

🎁個人主頁:我們的五年 🔍系列專欄:Linux網絡編程 🌷追光的人,終會萬丈光芒 🎉歡迎大家點贊👍評論📝收藏?文章 ? Linux網絡編程筆記: https://blog.cs…

Vue3 打造 Windows 桌面個性高效組件工具

軟件介紹 Widgets 這款基于 Vue3 構建的開源 Windows 桌面小部件工具超實用。 其多樣化組件庫涵蓋超 20 種,從倒計時、打工進度等實用工具,到抖音熱榜等實時資訊組件應有盡有,各組件獨立運行,滿足多場景需求。 高度自定義布局支持…

Tailwind CSS 和 UnoCSS簡單比較

一、Tailwind CSS 和 UnoCSS簡介 Tailwind CSS 和 UnoCSS 都是流行的原子化 CSS 框架,它們有很多相似之處,但也存在一些明顯的區別,以下從多個方面對它們進行比較: 1. 基本概念和原理 Tailwind CSS 是最早提出并推動原子化 CSS…

什么是語料清洗、預訓練、指令微調、強化學習、內容安全; 什么是megatron,deepspeed,vllm推理加速框架

什么是語料清洗、預訓練、指令微調、強化學習、內容安全 目錄 什么是語料清洗、預訓練、指令微調、強化學習、內容安全語料清洗預訓練指令微調強化學習內容安全什么是megatron,deepspeed,vllm推理加速框架語料清洗 語料清洗是對原始文本數據進行處理的過程,旨在去除數據中的…