Meta LlaMA 3模型深度解析 原創(chuàng)
本文將深入探索當(dāng)前火熱的Llama 3模型背后的轉(zhuǎn)換器架構(gòu)的細微差別,并分析其在生成式人工智能生態(tài)系統(tǒng)的發(fā)展前景。
拉瑪?shù)墓适?/h2>
“在安第斯山脈崎嶇的山區(qū),生活著三種非常美麗的生物——里約、洛基和塞拉。它們有著光澤的皮毛和閃閃發(fā)光的眼睛,是力量和韌性的燈塔。
據(jù)說,從很小的時候起,它們對知識的渴望就永無止境。它們會尋找牛群中聰明的長者,聚精會神地聽它們的故事,像海綿一樣吸收它們的智慧。隨著這一點的發(fā)展,它們的超能力不斷增強,它們與其他動物合作,并了解到團隊合作是在安第斯山脈這一充滿挑戰(zhàn)的地形上贏得選拔賽的關(guān)鍵。
如果它們遇到迷路或需要幫助的旅行者,里約會從它們的角度出發(fā),安慰它們,洛基會迅速提供解決方案,而塞拉會確保它們有足夠的力量繼續(xù)前行。因此,它們贏得了動物族群的欽佩,并鼓勵大家以它們?yōu)榘駱印?/p>
當(dāng)太陽在安第斯山脈上落山時,里約、洛基和塞拉站在一起,它們的精神像山脈一樣交織在一起。因此,它們的故事作為知識、智慧和協(xié)作的力量以及有所作為的意愿的證明而流傳至今。
它們是超級拉瑪([譯者注]“Llama”音譯為拉瑪,是一種哺乳動物,屬于駱駝科,是南美洲安第斯地區(qū)的重要家畜),它們這個三人團隊被親切地稱為LlaMA3!”
Meta公司的LlaMA 3
上面的這個故事與Meta開源的大型語言模型(LLM)——LlaMA 3(大型語言模型Meta AI)的故事并不遙遠。2024年4月18日,Meta發(fā)布了其8B和70B參數(shù)大小的大型語言模型LlaMa 3家族,聲稱這是對LlaMa 2模型的重大飛躍,并努力在這一級別的規(guī)模上競爭成為最先進的LLM模型。
Meta公司表示(https://ai.meta.com/blog/meta-llama-3/),在構(gòu)建LlaMA 3模型時,存在四個關(guān)鍵關(guān)注點——模型架構(gòu)、預(yù)訓(xùn)練數(shù)據(jù)、擴展預(yù)訓(xùn)練和指令微調(diào)。這不由得讓我們思考:如何才能從這種非常有能力的模型中獲得最大收益,無論是從企業(yè)級規(guī)模上還是在基本規(guī)模級層面上。
為了幫助探索其中一些問題的答案,我與AWS生成式人工智能團隊負責(zé)人Edurado Ordax和科羅拉多大學(xué)博爾德分校計算機科學(xué)專業(yè)的Tom Yeh教授展開合作。
接下來,讓我們開始這趟“徒步旅行”吧……
如何利用LlaMA 3的威力?
API與微調(diào)
來自于最新的應(yīng)用實踐證明,訪問和使用這些大型語言模型的主要方式有兩種——一種是通過API調(diào)用,另一種是對現(xiàn)有模型進行微調(diào)。即使存在這樣兩種非常不同的方法,在此過程中也還存在其他方面的因素,而且這些因素可能會變得至關(guān)重要,如下圖所示。
(注:本部分中的所有圖片均由Eduardo Ordax提供。)
歸納來看,用戶與LlaMA3進行交互的方式主要分為6個階段。
階段1:通過按原樣使用模型,以適應(yīng)廣泛的應(yīng)用場景。
第2階段:在用戶自定義的應(yīng)用程序中使用模型。
第3階段:使用提示工程來訓(xùn)練模型,以產(chǎn)生所需的輸出。
第4階段:在用戶端使用提示工程,同時深入研究數(shù)據(jù)檢索和微調(diào),這仍然主要由LLM提供商管理。
第5階段:把大部分事情掌握在自己(用戶)手中,從提示工程到數(shù)據(jù)檢索和微調(diào)(RAG模型、PEFT模型等)等諸多任務(wù)。
第6階段:從頭開始創(chuàng)建整個基礎(chǔ)模型——從訓(xùn)練前到訓(xùn)練后。
為了最大限度地利用這些模型,建議最好的方法是使用上面的第5階段,因為靈活性很大程度上取決于用戶自身。能夠根據(jù)領(lǐng)域需求定制模型對于最大限度地提高其收益至關(guān)重要。因此,如果不參與到系統(tǒng)開發(fā)中,是不能產(chǎn)生最佳回報的。
為了實現(xiàn)上述過程,下圖給出的是一些可能經(jīng)證明是非常有用的一些開發(fā)工具的列表:
從圖中可以看出,為了從模型中獲得最大的利益,掌握一系列組件和開發(fā)路線圖是必不可少的。歸納起來看,這可以分為三個組成部分:
- 人員:不僅是最終用戶,整個數(shù)據(jù)工程師、數(shù)據(jù)科學(xué)家、MLOps工程師、ML工程師以及Prompt工程師都很重要。
- 流程:不僅是將LLM以API形式實現(xiàn),更應(yīng)專注于模型評估、模型部署和微調(diào)的整個生命周期,以滿足特定需求。
- 工具:不僅僅是API訪問和API工具,還有整個環(huán)境、不同的ML管道、用于訪問和運行檢查的單獨帳戶等。
當(dāng)然,企業(yè)級部署也是如此,這樣可以獲得模型的實際好處。要做到這一點,MLOps相關(guān)的工具和實踐變得非常重要。與FMOps相結(jié)合,這些模型非常有價值,有助于豐富整個生成式人工智能生態(tài)系統(tǒng)。
補注
MLOps也稱為機器學(xué)習(xí)操作,是機器學(xué)習(xí)工程的一部分,專注于ML模型的開發(fā)、部署和維護,確保它們可靠高效地運行。MLOps隸屬于DevOps(開發(fā)和運營),但專門針對ML模型。
另一方面,F(xiàn)MOps(基礎(chǔ)模型操作)通過選擇、評估和微調(diào)LLM,為生成式人工智能場景工作。
盡管如此,有一點是不變的。LlaMA 3畢竟是一個大型語言模型;因此,只有在嚴(yán)格設(shè)置和驗證了基礎(chǔ)元素后,它在企業(yè)級的實現(xiàn)才是可能的,也是有益的。為了做到這一點,讓我們接下來深入探索一下LlaMA 3模型背后的技術(shù)細節(jié)。
LlaMa 3成名的秘訣是什么?
在基本層面上,LlaMa 3就是一個轉(zhuǎn)換器。如果我們在這個過程中站在更高一些的高度,答案將成為“轉(zhuǎn)換器架構(gòu)”,但是這種架構(gòu)是經(jīng)過高度優(yōu)化的,可以在通用行業(yè)基準(zhǔn)上實現(xiàn)卓越的性能,同時還可以實現(xiàn)更加新穎的功能。
由于LlaMa 3是開放式的(由Meta公司自行決定完全開放源碼),我們可以訪問此模型的完整資料,這為我們提供了如何配置這種強大架構(gòu)的詳細信息。
接下來,讓我們深入了解并揭示其中的秘密:
轉(zhuǎn)換器架構(gòu)與自我關(guān)注是如何在LlaMA 3中發(fā)揮作用的?
首先,這里簡要介紹一下轉(zhuǎn)換器的工作原理:
- 轉(zhuǎn)換器架構(gòu)可以被視為注意力層和前饋層的組合。
- 注意力層水平組合跨特征,以產(chǎn)生新特征。
- 前饋層(FFN)將部件或特征的特性組合在一起,以產(chǎn)生新的部件/特征。它在各個維度上垂直進行。
(除非另有說明,本節(jié)中的所有圖片均為Tom Yeh教授的作品,我經(jīng)其許可進行了編輯。)
下圖展示了該架構(gòu)的外觀及其運行機制。
包含注意力和前饋塊的轉(zhuǎn)換器架構(gòu)
鏈接https://medium.com/towards-data-science/deep-dive-into-transformers-by-hand-%EF%B8%8E-68b8be4bd813處提供了有關(guān)轉(zhuǎn)換器的介紹,而鏈接https://medium.com/towards-data-science/deep-dive-into-self-attention-by-hand-%EF%B8%8E-f02876e49857提供了有關(guān)自注意力的深入探討文章,有興趣的讀者可以參考閱讀。
LlaMA 3的本質(zhì)
現(xiàn)在,我們開始深入的探索,了解轉(zhuǎn)換器數(shù)量在現(xiàn)實生活中的LlaMa 3模型中的重要表現(xiàn)。在我們的討論中,我們將只考慮此模型的8B變體。
LlaMA 3-8B的模型參數(shù)是什么?
我們在這里需要探索的主要數(shù)字/值是針對在轉(zhuǎn)換器架構(gòu)中發(fā)揮關(guān)鍵作用的參數(shù)。這些參數(shù)包括:
- 層(Layers):這里的層指的是轉(zhuǎn)換器的基本塊——注意力層和FFN,如上圖所示。這些層以堆疊方式排列,一層堆疊在另一層之上,輸入流入一層,其輸出傳遞到下一層,逐漸轉(zhuǎn)換輸入數(shù)據(jù)。
- 注意力頭(Attention heads):注意力頭是自我注意力機制的一部分。每個頭獨立掃描輸入序列并執(zhí)行注意步驟(請記住QK模塊及SoftMax函數(shù)在其中的作用)。
- 詞匯(Vocabulary words):詞匯是指模型識別或知道的單詞數(shù)量。從本質(zhì)上講,把它看作是人類構(gòu)建單詞庫的方式,這樣我們就可以發(fā)展語言的知識和通用性。大多數(shù)情況下,詞匯表越大,模型性能越好。
- 特征維度(Feature dimensions):這些維度指定表示輸入數(shù)據(jù)中每個標(biāo)記的向量的大小。從輸入嵌入到每一層的輸出,這個數(shù)字在整個模型中保持一致。
- 隱藏層維度(Hidden dimensions):這些維度是模型中層的內(nèi)部尺寸,更常見的是前饋層的隱藏層的尺寸。通常情況下,這些層的大小可以大于特征維度,這有助于模型從數(shù)據(jù)中提取和處理更復(fù)雜的表示。
- 上下文窗口大小(Context-window size):這里的“窗口大小”是指模型在計算注意力時同時考慮輸入序列中的標(biāo)記數(shù)量。
根據(jù)定義的術(shù)語,讓我們參考LlaMA 3模型中這些參數(shù)的實際數(shù)字。(這些數(shù)字的原始源代碼可以從鏈接https://github.com/meta-llama/llama3/tree/main/llama處找到。)
請牢記這些數(shù)值,接下來的步驟將說明它們中的每一個如何在模型中發(fā)揮作用。注意,它們在源代碼中是按出現(xiàn)順序列出的。
上下文窗口
在實例化LlaMa類時,變量max_seq_len用于定義上下文窗口。當(dāng)然,這個類中還包含其他一些參數(shù),但是這一個參數(shù)符合我們關(guān)于轉(zhuǎn)換器模型的目的。這里的max_seq_len是8K,這意味著注意力頭能夠一次掃描8K個標(biāo)記。
詞匯大小和注意力層
接下來是Transformer類,它定義了詞匯表的大小和層數(shù)。這里的詞匯表大小仍然指的是模型可以識別和處理的一組單詞(和標(biāo)記)。此外,這里的注意層是指模型中使用的轉(zhuǎn)換器塊(注意力層和前饋層的組合)。
基于這些數(shù)字,LlaMA 3的詞匯量將達到128K,這是相當(dāng)大的一個量級。此外,該模型還有32個轉(zhuǎn)換器塊的副本。
特征尺寸和注意力頭
在自我注意力模塊中,主要的組成是特征維度和注意力頭。其中,特征維度是指嵌入空間中標(biāo)記的向量大小,注意力頭由QK模塊組成,該模塊負責(zé)為轉(zhuǎn)換器中的自注意力機制提供動力。
隱藏層維度
前饋類中的隱藏層維度特征用于指定模型中的隱藏層數(shù)。對于LlaMa 3模型來說,隱藏層的大小是特征尺寸的1.3倍。大量的隱藏層允許網(wǎng)絡(luò)在將其投影回較小的輸出維度之前,在內(nèi)部創(chuàng)建和操作更豐富的表示。
將以上參數(shù)組合形成轉(zhuǎn)換器
- 第一個矩陣是輸入特征矩陣,它通過注意力層來創(chuàng)建注意力加權(quán)特征。在該圖像中,輸入特征矩陣的大小僅為5 x 3矩陣,但在真實世界的Llama 3模型中,它增長到8K x 4096,這個尺寸是巨大的。
- 下一個矩陣是前饋網(wǎng)絡(luò)中的隱藏層,它增長到5325,然后在最后一層回落到4096。
轉(zhuǎn)換器塊中的多層
LlaMA 3將上述轉(zhuǎn)換器塊中的32個塊與向下傳遞到下一個塊中的一個塊的輸出相組合,直至到達最后一個塊。
組合到一起
到現(xiàn)在為止,我們了解了上述各個部分的組成與作用。接下來,我們就可以把它們組合到一起,看看它們是如何產(chǎn)生LlaMA模型的結(jié)果的,請參考下圖。
這一階段會發(fā)生什么呢?
步驟1:首先,我們有一個輸入矩陣,它的大小是8K(上下文窗口)x 128K(詞匯大小)。該矩陣經(jīng)歷將該高維矩陣帶入低維的嵌入過程。
步驟2:在這種情況下,這個較低的維度是4096,這是我們之前看到的LlaMA模型中特征的指定維度。(從128K減少到4096是極大幅度的減少,這一點值得注意。)
步驟3:此功能經(jīng)過Transformer塊,首先由Attention層處理,然后由FFN層處理。注意力層負責(zé)在水平方向上處理特征,而FFN層負責(zé)在垂直方向上處理維度。
步驟4:對轉(zhuǎn)換器塊的32層重復(fù)執(zhí)行步驟3。最終,得到的矩陣具有與用于特征維度的矩陣相同的維度。
步驟5:最后,將該矩陣轉(zhuǎn)換回128K大小的詞匯表矩陣的原始大小,以便模型可以選擇并映射詞匯表中可用的單詞。
總之,上述步驟解釋了為什么LlaMA 3模型在有關(guān)基準(zhǔn)上得分很高,并產(chǎn)生了Lla MA 3效應(yīng)。
LlaMA3效應(yīng)
當(dāng)前,LlaMA 3發(fā)布了兩個模型版本——8B和70B參數(shù),以服務(wù)于廣泛的應(yīng)用場景。除了在標(biāo)準(zhǔn)基準(zhǔn)上實現(xiàn)最先進的性能外,還開發(fā)了一套新的、嚴(yán)格的人類評估集。最近,Meta公司還承諾將會陸續(xù)發(fā)布更好、更強的模型版本,并使其成為多語言和多模式的。有消息說,Meta公司即將推出更新和更大的模型,參數(shù)將超過400B(鏈接https://ai.meta.com/blog/meta-llama-3/處早期報告顯示,這一模型已經(jīng)超過了基準(zhǔn)指標(biāo),與LlaMA 3模型相比增加了近20%的得分)。
然而,必須指出的是,盡管存在即將到來的模型更改和更新,但有一點將保持不變——所有這一切更改和更新的基礎(chǔ)——實現(xiàn)這一令人難以置信的技術(shù)進步的轉(zhuǎn)換器架構(gòu)和轉(zhuǎn)換器塊。
最后,LlaMA模型被如此命名可能是巧合,但根據(jù)安第斯山脈的傳說,真正的美洲駝一直因其力量和智慧而備受尊敬,這與第二代人工智能“LlaMA”模型沒有太大區(qū)別。
所以,讓我們跟隨GenAI安第斯山脈的這段激動人心的旅程,同時牢記這些大型語言模型的基礎(chǔ)吧!
【附言】如果你想自己完成本文中介紹的這個練習(xí),下面鏈接提供一個空白的模板,供你使用。
徒手練習(xí)空白模板地址:https://drive.google.com/file/d/1NfHBSQQTgH1bPXiNUHyMhT2UGXqUaTPE/view?usp=drive_link。
現(xiàn)在,您可以盡情去把玩LlaMA3模型,創(chuàng)造一些美妙的LlaMA3效果了!
譯者介紹
朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。
原文標(biāo)題:Deep Dive into LlaMA 3 by Hand,作者:Srijanie Dey
鏈接:https://towardsdatascience.com/deep-dive-into-llama-3-by-hand-%EF%B8%8F-6c6b23dc92b2。
