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