1、Llama 2的性能有多好?
作為Meta新發(fā)布的SOTA開(kāi)源大型語(yǔ)言模型,Llama 2是Llama模型的延續和升級。Llama 2家族模型包括了Llama 2預訓練模型和Llama 2-chat微調模型,分別有7B、13B和70B參數量的版本,覆蓋了不同的應用場(chǎng)景需求。
1.1 訓練數據
Llama 2在預訓練語(yǔ)料上比Llama增加了40%,增至2萬(wàn)億個(gè)token,且訓練數據中的文本來(lái)源更加的多樣化。此外,Llama 2對應的微調模型是在超過(guò)100萬(wàn)條人工標注的數據下訓練而成。
圖1: Llama 2模型概覽 [1]
1.2 模型評估
從模型評估上看,Llama 2在眾多的基準測試中,如推理、編程、對話(huà)能力和知識測驗上,都優(yōu)于一代Llama和現有的開(kāi)源大模型。
圖2: Llama 2在不同基準測試上的得分
雖然Llama 2-70B在推理任務(wù)上表現接近GPT-3.5,但是在綜合性能上還是無(wú)法與OpenAI的GPT-4和Google的PaLM-2-L等閉源大模型相媲美,尤其在編程基準上遠落后于兩者。
圖3: Llama 2,GPT和PaLM三者在不同基準測試上的得分
2、解鎖Llama 2的模型結構
2.1 Llama 2模型架構
Llama 2在預訓練設置和模型架構上和一代模型非常相似。
如圖4和圖5所示,Llama系列模型都使用了自回歸Transformer架構,即Transformer's decoder-only架構。兩代模型的一致性體現在:
a. 預歸一化(Pre-normalization):對每一個(gè)transformer的子層輸入都進(jìn)行歸一化,使用RMSNorm歸一化函數
b. SwiGLU激活函數:在前饋神經(jīng)網(wǎng)絡(luò )(FFN)使用SwiGLU 激活函數替換了Transformer中的 ReLU 激活函數來(lái)提升性能
c. 旋轉嵌入編碼(Rotary Positional Embeddings,RoPE):RoPE可以兼顧相對位置和絕對位置的信息以提高模型的泛化能力
2.2 Llama 2訓練亮點(diǎn)
除了上文提到的訓練數據的增加,Llama 2在訓練過(guò)程方面也有兩個(gè)亮點(diǎn)值得我們關(guān)注。第一,上下文長(cháng)度的擴大提升了模型的理解能力;第二,分組查詢(xún)注意力機制提高了模型的推理速度。
2.2.1 上下文窗口擴大
Llama 2的上下文長(cháng)度比Llama擴大了一倍,從2048個(gè)token拓展至4096個(gè)token。更長(cháng)的上下文窗口意味著(zhù)更多的聊天用例可被采用,進(jìn)而模型的理解能力得以提升。
2.2.2 Grouped-Query注意力
在A(yíng)ttention的實(shí)現上,Llama 2 30B以上的模型采用了分組查詢(xún)注意力機制(Grouped-Query Attention,GQA),見(jiàn)圖5和圖6。
圖6: Llama 2使用GQA [2]
自回歸模型的解碼通過(guò)緩存序列先前標記的鍵(K)值(V)對來(lái)加速注意力的計算。然而隨著(zhù)Batch Size和上下文窗口的增大,多頭注意力模型(Multi-head Attenrion,MHA)的內存成本會(huì )隨之顯著(zhù)增大。
圖7: "GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints" [3]
GQA的優(yōu)勢在于其將Query進(jìn)行分組,組內共享KV,這樣使得K和V的預測可以跨多個(gè)頭共享,從而顯著(zhù)降低計算和內存需求,提升推理速度 。
2.3 Llama 2-chat微調流程
Meta致力于在偏好數據上訓練獎勵模型,然后采用強化學(xué)習進(jìn)行優(yōu)化,從而提高生成的質(zhì)量。
2.3.1 SFT + RLHF by RS and PPO
和InstructGPT類(lèi)似,在Llama 2-chat對話(huà)模型微調流程分為:
a. 自監督訓練后獲得Llama 2基座模型
b. 監督微調(Supervised fine-tuning,SFT)
c. 人類(lèi)反饋強化學(xué)習(Reinforcement learning with human feedback,RLHF):拒絕采樣 + 近端策略?xún)?yōu)化
RLHF使用了拒絕采樣(Rejection Sampling fine-tuning,RS)和近端策略?xún)?yōu)化(Proximal Policy Optimization,PPO)兩個(gè)優(yōu)化算法。拒絕采樣的原理為模型輸出時(shí)采樣K個(gè)結果,用當前時(shí)刻最好的獎勵模型打分,選擇獎勵值最高的一個(gè)。在強化學(xué)習階段進(jìn)行梯度更新,并結合PPO進(jìn)行RS加PPO的優(yōu)化處理。
圖8: Llama 2-chat的微調過(guò)程[1]
Meta一共迭代了5個(gè)RLHF版本,分別從V1-V5,但僅公布了最新的V5版本。V5版本迭代的步驟下圖所示。
圖9: RLHF-V5迭代流程
2.3.2 Quality Is All You Need
Meta使用用戶(hù)偏好數據訓練的兩個(gè)獨立的獎勵模型Helpfulness RM和Safty RM,分別對有用性和安全性進(jìn)行了優(yōu)化。在SFT的過(guò)程中,Llama 2的官方論文[2]著(zhù)重強調了只需少量高質(zhì)量的SFT偏好數據就能顯著(zhù)提升結果質(zhì)量(Quality Is All You Need)。此外,這篇論文也是第一篇指出“RLHF從根本上提高了大模型性能的上限”的論文。
圖10:Llama 2論文中強調的“Quality Is All You Need"[2]
綜上,Llama 2訓練流程給我們最重要的一個(gè)啟示是:
獎勵模型不僅是RLHF的關(guān)鍵,也是整個(gè)大模型效果的關(guān)鍵;數據質(zhì)量又是獎勵模型的關(guān)鍵。[4]
03、Llama 2在UCloud UK8S上的實(shí)踐
3.1 下載模型
3.1.1 下載模型
從HuggingFace上克隆Llama 2的模型 [5]:https://huggingface.co/meta-llama。本文使用的是Llama 2-chat-7b模型。
3.1.2 安裝WebUI工具
oobabooga開(kāi)源的text-generation-webui [6] 一個(gè)大模型的可視化工具包,安裝方法如下:
a. 進(jìn)入Text Generation的github
(https://github.com/oobabooga/text-generation-webui)
b. 選擇一鍵安裝包安裝或者手動(dòng)安裝
c. 我們將Llama 2模型文件放入text-generation-webui/models目錄下,文件結構如下圖:
3.2 構建鏡像
根據Uhub容器鏡像庫的說(shuō)明:
(https://docs.ucloud.cn/uhub/guide)
1. 首先,在Uhub上創(chuàng )建鏡像庫
2. 其次,在云主機創(chuàng )建鏡像,并打標
3. 最后,將云主機鏡像推到Uhub中
3.3 配置UK8S集群
1. 創(chuàng )建UFS文件系統并掛載。(https://docs.ucloud.cn/ufs/ufs_guide/create)
2. 創(chuàng )建UK8S容器云。參考文檔(https://docs.ucloud.cn/uk8s/),創(chuàng )建集群時(shí),Node的配置可參照下圖:
集群創(chuàng )建之后,點(diǎn)擊“詳情”按鈕,將“外網(wǎng)憑證”拷貝到~/.kube/config文件中。同時(shí),需要安裝和配置Kubectl命令行工具。
(https://docs.ucloud.cn/uk8s/manageviakubectl/connectviakubectl?id=安裝及配置kubectl)
3. 在UK8S中使用UFS
用創(chuàng )建好的UFS作為UK8S集群的共享存儲。
根據在UK8S中使用UFS文檔,創(chuàng )建PV和PVC。
(https://docs.ucloud.cn/uk8s/volume/ufs?id=在uk8s中使用ufs)
a. 創(chuàng )建Pod:編寫(xiě)配置文件ufspod.yml
執行配置文件
b. 進(jìn)入Pod
查詢(xún)Pod Name:
在Pod內部啟動(dòng)一個(gè)Bash Shell:
c. 在線(xiàn)推理
運行server.py文件
至此,我們就可以在Web端和Llama 2進(jìn)行對話(huà)了。
本期我們介紹了【關(guān)于Llama 2】你需要知道的那些事兒。Llama系列模型由于其體積小且開(kāi)源的特性,在A(yíng)I社區的熱度和口碑都居于高位,可以預見(jiàn)短期內將有更多基于Llama 2定制化的微調模型和相關(guān)服務(wù)涌現。
下期文章我們將聚焦“LangChain+大模型+向量數據庫”在云端的部署和推理,敬請期待~
4、參考文獻
[1] Llama 2 官方公告:https://ai.meta.com/llama/
[2] Llama 2 官方論文:https://huggingface.co/papers/2307.09288
[3] "GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints " by Google Research:https://arxiv.org/pdf/2305.13245.pdf
[4] "Llama 2: an incredible open LLM" by Nathan Lambert: https://www.interconnects.ai/p/llama-2-from-meta
[5] Llama 2 models: https://huggingface.co/meta-llama
[6] Text generation web UI github: https://github.com/oobabooga/text-generation-webui