在上一篇《Generative AI 新世界:文本生成領(lǐng)域論文解讀》中,我?guī)ьI(lǐng)大家一起梳理了文本生成領(lǐng)域(Text Generation)的主要幾篇論文:InstructGPT,RLHF,PPO,GPT-3,以及 GPT-4。本期文章我將幫助大家一起梳理另一個(gè)目前炙手可熱的話題:大型語(yǔ)言模型(Large Language Models,或簡(jiǎn)寫(xiě)為 LLMs)。
亞馬遜云科技開(kāi)發(fā)者社區(qū)為開(kāi)發(fā)者們提供全球的開(kāi)發(fā)技術(shù)資源。這里有技術(shù)文檔、開(kāi)發(fā)案例、技術(shù)專欄、培訓(xùn)視頻、活動(dòng)與競(jìng)賽等。幫助中國(guó)開(kāi)發(fā)者對(duì)接世界最前沿技術(shù),觀點(diǎn),和項(xiàng)目,并將中國(guó)優(yōu)秀開(kāi)發(fā)者或技術(shù)推薦給全球云社區(qū)。如果你還沒(méi)有關(guān)注/收藏,看到這里請(qǐng)一定不要匆匆劃過(guò),點(diǎn)這里讓它成為你的技術(shù)寶庫(kù)! |
大型語(yǔ)言模型指的是具有數(shù)十億參數(shù)(B+)的預(yù)訓(xùn)練語(yǔ)言模型(例如:GPT-3, Bloom, LLaMA)。這種模型可以用于各種自然語(yǔ)言處理任務(wù),如文本生成、機(jī)器翻譯和自然語(yǔ)言理解等。
大型語(yǔ)言模型的這些參數(shù)是在大量文本數(shù)據(jù)上訓(xùn)練的?,F(xiàn)有的大型語(yǔ)言模型主要采用 Transformer 模型架構(gòu),并且在很大程度上擴(kuò)展了模型大小、預(yù)訓(xùn)練數(shù)據(jù)和總計(jì)算量。他們可以更好地理解自然語(yǔ)言,并根據(jù)給定的上下文(例如 prompt)生成高質(zhì)量的文本。其中某些能力(例如上下文學(xué)習(xí))是不可預(yù)測(cè)的,只有當(dāng)模型大小超過(guò)某個(gè)水平時(shí)才能觀察到。
以下是 2019 年以來(lái)出現(xiàn)的各種大型語(yǔ)言模型(百億參數(shù)以上)時(shí)間軸,其中標(biāo)黃的大模型已開(kāi)源。
Source:A timeline of existing LLMs(>10B)?https://arxiv.org/abs/2303.18223?trk=cndc-detail
在本期文章中,我們將一起探討大型語(yǔ)言模型的發(fā)展歷史、語(yǔ)料來(lái)源、數(shù)據(jù)預(yù)處理流程策略、訓(xùn)練使用的網(wǎng)絡(luò)架構(gòu)、最新研究方向分析(LLaMA、PaLM-E 等),以及在亞馬遜云科技上進(jìn)行大型語(yǔ)言模型訓(xùn)練的一些最佳落地實(shí)踐等。
大型語(yǔ)言模型的發(fā)展歷史
我們首先來(lái)了解下大型語(yǔ)言模型的發(fā)展歷史和最新研究方向分析。
大型語(yǔ)言模型 1.0。過(guò)去五年里,自從我們看到最初的Transformer模型 BERT、BLOOM、GPT、GPT-2、GPT-3 等的出現(xiàn),這一代的大型語(yǔ)言模型在 PaLM、Chinchilla 和 LLaMA 中達(dá)到了頂峰。第一代 Transformers 的共同點(diǎn)是:它們都是在大型未加標(biāo)簽的文本語(yǔ)料庫(kù)上進(jìn)行預(yù)訓(xùn)練的。
大型語(yǔ)言模型 2.0。過(guò)去一年里,我們看到許多經(jīng)過(guò)預(yù)訓(xùn)練的大型語(yǔ)言模型,正在根據(jù)標(biāo)記的目標(biāo)數(shù)據(jù)進(jìn)行微調(diào)。第二代 Transformers 的共同點(diǎn)是:對(duì)目標(biāo)數(shù)據(jù)的微調(diào),使用帶有人工反饋的強(qiáng)化學(xué)習(xí)(RLHF)或者更經(jīng)典的監(jiān)督式學(xué)習(xí)。第二代大型語(yǔ)言模型的熱門(mén)例子包括:InstructGPT、ChatGPT、Alpaca 和 Bard 等。
大型語(yǔ)言模型 3.0。過(guò)去的幾個(gè)月里,這個(gè)領(lǐng)域的熱門(mén)主題是參數(shù)高效微調(diào)和對(duì)特定領(lǐng)域數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練,這是目前提高大型語(yǔ)言模型計(jì)算效率和數(shù)據(jù)效率的最新方法。另外,下一代大型語(yǔ)言模型可能以多模態(tài)和多任務(wù)學(xué)習(xí)為中心,這將為大型語(yǔ)言模型帶來(lái)更多嶄新并突破想象力的眾多新功能。
在本文第二章節(jié)“大模型最新研究方向分析”中,我們還會(huì)深入探討參數(shù)微調(diào)、特定數(shù)據(jù)預(yù)訓(xùn)練和多模態(tài)等方向的相關(guān)進(jìn)展分析。
近年來(lái)的大型語(yǔ)言模型概覽
Source:?https://arxiv.org/abs/2303.18223?trk=cndc-detail
上圖展示了近年來(lái)大型語(yǔ)言模型(大于 10B 的參數(shù))的統(tǒng)計(jì)數(shù)據(jù),包括容量評(píng)估、預(yù)訓(xùn)練數(shù)據(jù)規(guī)模(token 數(shù)量或存儲(chǔ)大?。┖陀布Y源成本。
圖中,“Adaptation” 表示模型是否經(jīng)過(guò)了后續(xù)微調(diào):IT 表示指令調(diào)整,RLHF 表示通過(guò)人工反饋進(jìn)行強(qiáng)化學(xué)習(xí)?!癊valuation” 表示模型在原始論文中是否經(jīng)過(guò)了相應(yīng)能力的評(píng)估:ICL 表示上下文學(xué)習(xí)(in-context learning),CoT 表示思維鏈(chain-of-thought)。
大型語(yǔ)言模型的語(yǔ)料來(lái)源
與早期的預(yù)訓(xùn)練語(yǔ)言模型(PLMs)相比,包含更多參數(shù)的大型語(yǔ)言模型需要更大的訓(xùn)練數(shù)據(jù)量,涵蓋了更廣泛的內(nèi)容。為了滿足這種需求,已經(jīng)發(fā)布了越來(lái)越多的用于研究的訓(xùn)練數(shù)據(jù)集。根據(jù)他們的內(nèi)容類(lèi)型,大致可分類(lèi)為六組:圖書(shū)、CommonCrawl、Reddit 鏈接、維基百科、代碼和其它。如下表所示:
Source:?https://arxiv.org/abs/2303.18223?trk=cndc-detail
Source:?https://arxiv.org/abs/2303.18223?trk=cndc-detail
上圖展示了現(xiàn)有大型語(yǔ)言模型預(yù)訓(xùn)練數(shù)據(jù)中,各種不同的數(shù)據(jù)來(lái)源占比比率的信息。
大型語(yǔ)言模型的數(shù)據(jù)預(yù)處理策略
在收集了大量數(shù)據(jù)后,對(duì)其進(jìn)行預(yù)處理對(duì)于構(gòu)建預(yù)訓(xùn)練語(yǔ)料庫(kù)至關(guān)重要,尤其是要?jiǎng)h除嘈雜、冗余、不相關(guān)和潛在的有毒數(shù)據(jù),這可能會(huì)在很大程度上影響大型語(yǔ)言模型的容量和性能。該論文中,研究者們用一個(gè)章節(jié)專門(mén)闡述了其研究團(tuán)隊(duì)的數(shù)據(jù)預(yù)處理策略,以及如何通過(guò)各種方法來(lái)提高所收集數(shù)據(jù)質(zhì)量。
Source:?https://arxiv.org/abs/2303.18223?trk=cndc-detail
上圖為該論文闡述大型語(yǔ)言模型的預(yù)訓(xùn)練數(shù)據(jù)處理的典型策略概覽圖。
大型語(yǔ)言模型的網(wǎng)絡(luò)結(jié)構(gòu)
大型語(yǔ)言模型在訓(xùn)練階段的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)參數(shù),也是影響大型語(yǔ)言模型性能的重要指標(biāo)之一。下表列舉了一些大型語(yǔ)言模型的主要網(wǎng)絡(luò)結(jié)構(gòu)參數(shù),包括:token 大小、歸一化方式、位置嵌入方式、激活函數(shù)、是否使用 Bias、層數(shù)、注意力頭的數(shù)量、隱藏狀態(tài)大小、最大上下文長(zhǎng)度等參數(shù)。如下表所示:
Source:?https://arxiv.org/abs/2303.18223?trk=cndc-detail
上表概述了包含詳細(xì)配置信息的多個(gè)大型語(yǔ)言模型的型號(hào)卡(Model cards):
- PE 表示位置嵌入
- #L 表示層數(shù)
- #H 表示注意力頭的數(shù)量
- dmodel 表示隱藏狀態(tài)的大小
- MCL 表示最大上下文長(zhǎng)度
大型語(yǔ)言模型的涌現(xiàn)能力
LLM 的涌現(xiàn)能力被正式定義為「在小型模型中不存在但在大型模型中出現(xiàn)的能力」,這是 LLM 與以前的 PLM 區(qū)分開(kāi)來(lái)的最顯著特征之一。當(dāng)出現(xiàn)這種新的能力時(shí),它還引入了一個(gè)顯著的特征:當(dāng)規(guī)模達(dá)到一定水平時(shí),性能顯著高于隨機(jī)的狀態(tài)。以此類(lèi)推,這種新模式與物理學(xué)中的相變現(xiàn)象密切相關(guān)。原則上,這種能力也可以與一些復(fù)雜的任務(wù)有關(guān),而人們更關(guān)心可以應(yīng)用于解決多個(gè)任務(wù)的通用能力。
Source:?https://arxiv.org/pdf/2206.07682.pdf?trk=cndc-detail
在少量提示(few-shot prompting)方法下測(cè)試了以下八個(gè)不同場(chǎng)景的模型性能:
- 算術(shù)運(yùn)算(Mod. arithmetic)
- 語(yǔ)音翻譯(IPA transliterate)
- 單詞解讀(Word unscramble)
- Persian QA
- TruthfulQA 基準(zhǔn)
- 概念映射(Grounded mappings)
- 多任務(wù)語(yǔ)言理解(Multi-task NLU)
- 上下文理解基準(zhǔn)
每個(gè)點(diǎn)都是一個(gè)單獨(dú)的模型。當(dāng)語(yǔ)言模型實(shí)現(xiàn)隨機(jī)時(shí),就會(huì)出現(xiàn)通過(guò)少量提示(few-shot prompting)方法執(zhí)行任務(wù)的能力性能,在模型大小達(dá)到一定規(guī)模之后,性能會(huì)顯著提高到遠(yuǎn)高于隨機(jī)水平。
目前大型語(yǔ)言模型主要有三種代表性的涌現(xiàn)能力,分別是:
- 上下文學(xué)習(xí)
- 指令遵循
- 循序漸進(jìn)的推理
上下文學(xué)習(xí)。GPT-3 正式引入了上下文學(xué)習(xí)能力:假設(shè)語(yǔ)言模型已經(jīng)提供了自然語(yǔ)言指令和多個(gè)任務(wù)描述,它可以通過(guò)完成輸入文本的詞序列來(lái)生成測(cè)試實(shí)例的預(yù)期輸出,而無(wú)需額外的訓(xùn)練或梯度更新。
指令遵循。通過(guò)對(duì)自然語(yǔ)言描述(即指令)格式化的多任務(wù)數(shù)據(jù)集的混合進(jìn)行微調(diào),LLM 在微小的任務(wù)上表現(xiàn)良好,這些任務(wù)也以指令的形式所描述。這種能力下,指令調(diào)優(yōu)使 LLM 能夠在不使用顯式樣本的情況下通過(guò)理解任務(wù)指令來(lái)執(zhí)行新任務(wù),這可以大大提高泛化能力。
循序漸進(jìn)的推理。對(duì)于小語(yǔ)言模型,通常很難解決涉及多個(gè)推理步驟的復(fù)雜任務(wù),例如數(shù)學(xué)學(xué)科單詞問(wèn)題。同時(shí),通過(guò)思維鏈推理策略,LLM 可以通過(guò)利用涉及中間推理步驟的 prompt 機(jī)制來(lái)解決此類(lèi)任務(wù)得出最終答案。據(jù)推測(cè),這種能力可能是通過(guò)代碼訓(xùn)練獲得的。
大模型最新研究方向分析
Amazon Titan
2023 年 4 月,亞馬遜云科技宣布推出 Amazon Titan 模型。根據(jù)其以下官方網(wǎng)站和博客的信息(如下圖所示):一些亞馬遜云科技的客戶已經(jīng)預(yù)覽了亞馬遜全新的 Titan 基礎(chǔ)模型。目前發(fā)布的 Amazon Titan 模型主要包括兩個(gè)模型:
- 針對(duì)總結(jié)、文本生成、分類(lèi)、開(kāi)放式問(wèn)答和信息提取等任務(wù)的生成式大語(yǔ)言模型;
- 文本嵌入(embeddings)大語(yǔ)言模型,能夠?qū)⑽谋据斎耄ㄗ衷~、短語(yǔ)甚至是大篇幅文章)翻譯成包含語(yǔ)義的數(shù)字表達(dá)(jiembeddings 嵌入編碼)。
Source:?基礎(chǔ)模型 - Amazon Titan - AWS?亞馬遜云科技宣布推出生成式 AI 新工具 | 亞馬遜AWS官方博客
雖然這種大語(yǔ)言模型不生成文本,但對(duì)個(gè)性化推薦和搜索等應(yīng)用程序卻大有裨益,因?yàn)橄鄬?duì)于匹配文字,對(duì)比編碼可以幫助模型反饋更相關(guān)、更符合情境的結(jié)果。實(shí)際上,Amazon.com 的產(chǎn)品搜索能力就是采用了類(lèi)似的文本嵌入模型,能夠幫助客戶更好地查找所需的商品。為了持續(xù)推動(dòng)使用負(fù)責(zé)任AI的最佳實(shí)踐,Titan 基礎(chǔ)模型可以識(shí)別和刪除客戶提交給定制模型的數(shù)據(jù)中的有害內(nèi)容,拒絕用戶輸入不當(dāng)內(nèi)容,過(guò)濾模型中包含不當(dāng)內(nèi)容的輸出結(jié)果,如仇恨言論、臟話和語(yǔ)言暴力。
Alpaca: LLM Training LLM
2023 年 3 月 Meta 的?LLaMA 模型發(fā)布,該模型對(duì)標(biāo) GPT-3。已經(jīng)有許多項(xiàng)目建立在 LLaMA 模型的基礎(chǔ)之上,其中一個(gè)著名的項(xiàng)目是 Stanford 的羊駝(Alpaca)模型。Alpaca 基于 LLaMA 模型,是有 70 億參數(shù)指令微調(diào)的語(yǔ)言 Transformer。Alpaca 沒(méi)有使用人工反饋的強(qiáng)化學(xué)習(xí)(RLHF),而是使用監(jiān)督學(xué)習(xí)的方法,其使用了 52k 的指令-輸出對(duì)(instruction-output pairs)。
Source:?GitHub - tatsu-lab/stanford_alpaca: Code and documentation to train Stanford's Alpaca models, and generate the data.
研究人員沒(méi)有使用人類(lèi)生成的指令-輸出對(duì),而是通過(guò)查詢基于 GPT-3 的 text-davinci-003 模型來(lái)檢索數(shù)據(jù)。因此,Alpaca 本質(zhì)上使用的是一種弱監(jiān)督(weakly supervised)或以知識(shí)蒸餾(knowledge-distillation-flavored)為主的微調(diào)。
Source:Stanford CRFM
這里值得關(guān)注的是羊駝(Alpaca)模型的訓(xùn)練數(shù)據(jù),是通過(guò)查詢 GPT-3 模型獲得的。通俗地來(lái)說(shuō),這是“用 LLM 來(lái)訓(xùn)練 LLM”,或者稱之為“用 AI 來(lái)訓(xùn)練 AI”。我覺(jué)得大多數(shù)人可能低估了這件事情對(duì)人類(lèi)社會(huì)影響的意義,我覺(jué)得其意義非凡。這意味著:AI 之間的相互學(xué)習(xí)成長(zhǎng)這件事,已經(jīng)開(kāi)始了。很多年后,當(dāng)我們回望 AI 世代的演進(jìn)史,這件事也許會(huì)是一個(gè)重要的時(shí)間節(jié)點(diǎn)。
PaLM-E: Multimodality
在 2023 年 3 月,PaLM-E 模型發(fā)布,展示了在大型語(yǔ)言模型和多模態(tài)數(shù)據(jù)模式(multimodality)融合的一些最新進(jìn)展。這是大型語(yǔ)言模型的另一個(gè)重要趨勢(shì):通過(guò)視覺(jué)、多模態(tài)和多任務(wù)訓(xùn)練來(lái)擴(kuò)展能力。
Source: PaLM-E paper:?https://arxiv.org/pdf/2303.03378.pdf?trk=cndc-detail
如以上論文中的圖示,PaLM-E 模型是一種用于具體推理任務(wù)、視覺(jué)語(yǔ)言任務(wù)和語(yǔ)言任務(wù)的單一通用多模態(tài)語(yǔ)言模型。PaLM-E 模型對(duì)多模態(tài)句子進(jìn)行操作,即一系列標(biāo)記,其中來(lái)自任意模式(例如圖像、神經(jīng)三維表示或狀態(tài),綠色和藍(lán)色)的輸入與文本標(biāo)記(橙色)一起插入,作為 LLM 的輸入,經(jīng)過(guò)端到端訓(xùn)練。
Source: PaLM-E paper:?https://arxiv.org/pdf/2303.03378.pdf?trk=cndc-detail
該論文展示了 PaLM-E 在三個(gè)不同的機(jī)器人領(lǐng)域做遷移學(xué)習(xí)的測(cè)試結(jié)果對(duì)比圖。使用 PaLM-E 、ViT 預(yù)訓(xùn)練、機(jī)器人和視覺(jué)語(yǔ)言的混合數(shù)據(jù)組合,與僅對(duì)相應(yīng)的域內(nèi)數(shù)據(jù)進(jìn)行訓(xùn)練相比,有顯著的性能提升。
值得注意的是,PaLM-E 繼續(xù)被訓(xùn)練為一個(gè)完全基于解碼器的 LLM,它根據(jù)給定的前綴或提示自回歸生成文本補(bǔ)全。那么,它們?nèi)绾螁⒂脿顟B(tài)表征或者圖像的輸入呢?他們對(duì)網(wǎng)絡(luò)進(jìn)行了預(yù)訓(xùn)練以將其編碼為 embeddings。對(duì)于圖像,他們使用 4B 和 22B 參數(shù)的視覺(jué) Transformer (ViT) 來(lái)生成嵌入向量;然后對(duì)這些嵌入向量進(jìn)行線性投影,以匹配單詞令牌嵌入的嵌入維度。
在訓(xùn)練過(guò)程中,為了形成多模態(tài)的句子,他們首先使用特殊標(biāo)記 Tokens,例如:、 等,然后將其與嵌入的圖像交換(類(lèi)似于通過(guò)嵌入層嵌入單詞標(biāo)記的方式)。
Source:?Ahead of AI #7: Large Language Models 3.0
一些第三方領(lǐng)域?qū)W者對(duì)其論文和展示的性能提升也做了分析,如上圖所示。使用 PaLM-E 、ViT 預(yù)訓(xùn)練、機(jī)器人和視覺(jué)語(yǔ)言的混合數(shù)據(jù)組合進(jìn)行聯(lián)合訓(xùn)練,與針對(duì)單個(gè)任務(wù)的訓(xùn)練模型相比,可以實(shí)現(xiàn)兩倍以上的性能提升。
大型語(yǔ)言模型的訓(xùn)練和構(gòu)建優(yōu)化
訓(xùn)練大型語(yǔ)言模型的挑戰(zhàn)
訓(xùn)練大型語(yǔ)言模型涉及許多挑戰(zhàn)。這些挑戰(zhàn)概括來(lái)說(shuō),大致來(lái)自于六個(gè)方面,如下圖示:
- 硬件(Hardware)
- 健康檢查(Health Checks)
- 編排(Orchestration)
- 數(shù)據(jù)(Data)
- 規(guī)模擴(kuò)展(Scaling up)
- 成本考慮(Cost)
首先是硬件。你想使用最新的硬件。最新的硬件通常可以讓你在各種基準(zhǔn)測(cè)試中獲得更好的性能,因此,如果這些模型需要數(shù)周或數(shù)月的時(shí)間來(lái)訓(xùn)練,而你沒(méi)有利用最新硬件的性能優(yōu)勢(shì),那么你將無(wú)法訓(xùn)練模型以獲得最適合你的用例的結(jié)果。
第二個(gè)是健康檢查。您需要確保硬件運(yùn)行良好,以便最大限度地減少模型訓(xùn)練期間的干擾。
我們還需要考慮編排,啟動(dòng)集群,關(guān)閉集群,確保網(wǎng)絡(luò)和安全配置運(yùn)行良好,機(jī)器學(xué)習(xí)團(tuán)隊(duì)在運(yùn)行各種工作負(fù)載時(shí)不會(huì)相互干擾。
我們需要考慮的其他事情是大數(shù)據(jù)集。存儲(chǔ)、處理和加載它們以進(jìn)行機(jī)器學(xué)習(xí)訓(xùn)練并不是一件容易的事,并且可能需要大量的開(kāi)發(fā)工作才能高效完成。
我們擴(kuò)大基礎(chǔ)設(shè)施的規(guī)模并設(shè)計(jì)算法以繞過(guò)基礎(chǔ)設(shè)施的局限性是另一個(gè)挑戰(zhàn)。我們今天談?wù)摰哪P屯ǔ2贿m用于單個(gè) GPU,因此你必須考慮如何將該模型拆分到 GPU 上。
最后,我們必須考慮成本。這些大型模型的訓(xùn)練成本可能高達(dá)數(shù)十萬(wàn)甚至數(shù)百萬(wàn)美元。所以,你想很好地利用機(jī)器學(xué)習(xí)團(tuán)隊(duì)的時(shí)間。與其讓他們?cè)诨A(chǔ)架構(gòu)上工作,他們可以專注于嘗試新的模型創(chuàng)意,這樣您的企業(yè)就可以利用該模型取得最佳結(jié)果。
大型語(yǔ)言模型的構(gòu)建優(yōu)化
幸運(yùn)的是,Amazon SageMaker 可以幫助你應(yīng)對(duì)所有這些挑戰(zhàn),從而加速大型語(yǔ)言模型的訓(xùn)練?,F(xiàn)在,Amazon SageMaker 可幫助您使用托管基礎(chǔ)設(shè)施、工具和工作流程為任何用例構(gòu)建、訓(xùn)練和部署機(jī)器學(xué)習(xí)模型。如下圖所示。
下圖中黃色的部分,例如:Amazon SageMaker 分布式訓(xùn)練庫(kù)、Amazon SageMaker 訓(xùn)練編譯優(yōu)化等,我們還會(huì)在下一篇的動(dòng)手實(shí)驗(yàn)部分,用完整的代碼來(lái)演繹實(shí)現(xiàn),讓你有更身臨其境的感受。
在下層,我們有基礎(chǔ)設(shè)施,Amazon SageMaker 可讓你訪問(wèn)最新的硬件,包括 GPU 和 Trainium,以及實(shí)例之間的快速網(wǎng)絡(luò)互連,這對(duì)于分發(fā)訓(xùn)練至關(guān)重要。
在中間層,有托管基礎(chǔ)設(shè)施和工具的能力。
Amazon SageMaker 會(huì)為你處理大規(guī)模集群編排,它加速了集群,最后它會(huì)向下旋轉(zhuǎn)。它有助于完成所有這些安全和網(wǎng)絡(luò)配置,因此你可以輕松保護(hù)客戶數(shù)據(jù)和 IP 的安全。
在訓(xùn)練工作開(kāi)始時(shí)還會(huì)進(jìn)行健康檢查,以確保硬件有效運(yùn)行,減少對(duì)訓(xùn)練工作的干擾。編排還意味著你只需為所用的計(jì)算資源付費(fèi)。你只需要在集群?jiǎn)?dòng)時(shí)付費(fèi),為你訓(xùn)練模型,這樣你就不必全天候?yàn)樗邪嘿F的硬件付費(fèi)。
還有用于分析、調(diào)試和監(jiān)控實(shí)驗(yàn)的工具,以及使用各種策略進(jìn)行超參數(shù)優(yōu)化的工具,以確保獲得盡可能好的模型。
在頂層,有針對(duì)云端進(jìn)行了優(yōu)化的框架和庫(kù),例如在 Amazon SageMaker 上非常易于使用的 PyTorch、TensorFlow 和 Hugging Face,以及可幫助你處理超大型數(shù)據(jù)集或超大型模型的 Amazon SageMaker 分布式訓(xùn)練庫(kù)。
我已經(jīng)談了很多使用 Amazon SageMaker 進(jìn)行訓(xùn)練的能力和好處,讓我們來(lái)談?wù)勊侨绾芜\(yùn)作的。訓(xùn)練模型,我們需要一些計(jì)算資源,然后在某些數(shù)據(jù)集上運(yùn)行我們編寫(xiě)的訓(xùn)練代碼。Amazon SageMaker 做到這一點(diǎn)的方法是:通過(guò)啟動(dòng)短暫的訓(xùn)練集群來(lái)完成任務(wù)。
當(dāng)提交訓(xùn)練作業(yè)時(shí),Amazon SageMaker 將根據(jù)你選擇的集群配置啟動(dòng)集群。它將從 ECR 加載訓(xùn)練代碼,從 S3 加載數(shù)據(jù),然后開(kāi)始訓(xùn)練。訓(xùn)練過(guò)程中,它會(huì)將日志和指標(biāo)輸出到 CloudWatch,將模型檢查點(diǎn)(checkpoint)同步到 S3,并在任務(wù)結(jié)束時(shí)關(guān)閉集群。如果你編寫(xiě)的代碼考慮了具有彈性,編寫(xiě)成能夠從檢查點(diǎn)自動(dòng)恢復(fù),則你的訓(xùn)練作業(yè)將無(wú)需手動(dòng)干預(yù)即可自動(dòng)重啟。
以下是用于開(kāi)始訓(xùn)練作業(yè)的核心代碼,即 estimator API:
from sagemaker.pytorch import PyTorch
estimator = PyTorch(entry_point = ‘./cifar10.py’,
role = role,
framework_version = ‘1.13’,
py_version = ‘py38’,
instance_count = 1,
instance_type = ‘ml.g5.xlarge’,
hyperparameters = {‘epochs’: 50, ‘batch_size’: 32},
metric_definitions = [{‘Name’: ‘train:loss’, ‘Regex’: ‘loss: (.*)’}]
estimator.fit(“s3://bucket/path/to/training/data”)
左滑查看更多
這里選擇了 PyTorch 估算器,并定義了入口點(diǎn)的函數(shù)文件:cifar10.py。這與我們?cè)谧约旱谋镜仉娔X上運(yùn)行用于訓(xùn)練模型的腳本非常相似,我們稱之為腳本模式。使用 Amazon SageMaker 訓(xùn)練作業(yè)的方法有很多,靈活性更強(qiáng),你可以提供自己的 docker 容器或一些內(nèi)置算法。
然后定義想要使用的框架和 Python 版本,以及訓(xùn)練作業(yè)的實(shí)例類(lèi)型、實(shí)例數(shù)量和超參數(shù)。你現(xiàn)在可以隨時(shí)輕松更改這些內(nèi)容,啟動(dòng)其他訓(xùn)練任務(wù)來(lái)嘗試不同的實(shí)例類(lèi)型,看看哪種硬件最適合你的用例。
接下來(lái)將給出指標(biāo)定義。這將告訴 Amazon SageMaker 如何解析從腳本中輸出的日志,Amazon SageMaker 會(huì)將這些指標(biāo)發(fā)送到 CloudWatch,供你稍后查看。
最后調(diào)用 estimator.fit(),其中包含訓(xùn)練數(shù)據(jù)的路徑。
大模型訓(xùn)練在亞馬遜云科技上的最佳實(shí)踐
本章節(jié)內(nèi)容,將重點(diǎn)關(guān)注大型語(yǔ)言模型在亞馬遜云科技上的最佳訓(xùn)練實(shí)踐。大致分為五大方面:
- 計(jì)算(Compute)?— Amazon SageMaker Training
- 存儲(chǔ)(Storage)?— 可以通過(guò)兩種方式完成數(shù)據(jù)加載和檢查點(diǎn)(checkpointing)配置:Amazon FSx Lustre 文件系統(tǒng)或Amazon S3
- 并行化(Parallelism)— 選擇分布式訓(xùn)練庫(kù)對(duì)于正確使用 GPU 至關(guān)重要。我們建議使用經(jīng)過(guò)云優(yōu)化的庫(kù),例如 SageMaker 分片數(shù)據(jù)并行處理,但自管理庫(kù)和開(kāi)源庫(kù)也可以使用
- 聯(lián)網(wǎng)(Networking)?— 確保 EFA 和 NVIDA的 GPUDirectRDMA已啟用,以實(shí)現(xiàn)快速的機(jī)器間通信
- 彈性(Resiliency)?— 在大規(guī)模情況下,可能會(huì)發(fā)生硬件故障。我們建議定期寫(xiě)入檢查點(diǎn)(checkpointing)
由于篇幅所限,恕本文不能完整解讀分析以上五個(gè)方面的最佳實(shí)踐優(yōu)化,你可通過(guò)亞馬遜云科技的官方博客了解詳情。
以下我們會(huì)簡(jiǎn)單介紹下大模型訓(xùn)練并行化(Parallelism)在亞馬遜云科技上的最佳實(shí)踐。
大模型訓(xùn)練的并行化(Training Parallelism)
大模型通常有數(shù)十到數(shù)千億個(gè)參數(shù),這使得它們無(wú)法容納在單個(gè) GPU 卡中。大模型領(lǐng)域目前已有多個(gè)訓(xùn)練分布式計(jì)算的開(kāi)源庫(kù),例如:FSDP、DeepSpeed 和 Megatron。你可以在 Amazon SageMaker Training 中直接運(yùn)行這些庫(kù),也可以使用 Amazon SageMaker 分布式訓(xùn)練庫(kù),這些庫(kù)已經(jīng)針對(duì)亞馬遜云進(jìn)行了優(yōu)化,可提供更簡(jiǎn)單的開(kāi)發(fā)人員體驗(yàn)。
因此,在大型語(yǔ)言模型領(lǐng)域的開(kāi)發(fā)人員,在亞馬遜云科技上目前有兩種選擇:
- 在 Amazon SageMaker 上使用優(yōu)化過(guò)的分布式庫(kù)進(jìn)行分布式訓(xùn)練;
- 自己來(lái)管理分布式訓(xùn)練。
以下將概述如何在 Amazon SageMaker 上,使用優(yōu)化過(guò)的分布式庫(kù)進(jìn)行分布式訓(xùn)練。
為了提供更好的分布式訓(xùn)練性能和可用性,Amazon SageMaker Training 提出了幾種專有擴(kuò)展來(lái)擴(kuò)展 TensorFlow 和 PyTorch 訓(xùn)練代碼。在真實(shí)場(chǎng)景里,大型語(yǔ)言模型的訓(xùn)練通常以多維度并行(3D-parallelism)的方式在進(jìn)行:
- 數(shù)據(jù)并行(data parallelism):可拆分訓(xùn)練小批次并將其饋送到模型的多個(gè)相同副本,以提高處理速度
- 流水線并行(pipeline parallelism):將模型的各個(gè)層歸因于不同的 GPU 甚至實(shí)例,以便將模型大小擴(kuò)展到單個(gè) GPU 和單個(gè)服務(wù)器以外
- Tensor 并行(tensor parallelism):將單個(gè)層拆分為多個(gè) GPU,通常位于同一服務(wù)器內(nèi),以將單個(gè)層擴(kuò)展到超過(guò)單個(gè) GPU 的大小
以下示例圖,展示了如何在具有 8k3 個(gè) GPU(每臺(tái)服務(wù)器 8 個(gè) GPU)的 k*3 服務(wù)器集群上訓(xùn)練 6 層模型。數(shù)據(jù)并行度為 k,流水線并行度為 6,張量并行度為 4。集群中的每個(gè) GPU 包含模型層的四分之一,完整模型分為三臺(tái)服務(wù)器(總共 24 個(gè) GPU)。
Source:?Training large language models on Amazon SageMaker: Best practices | AWS Machine Learning Blog
其中和大型語(yǔ)言模型特別相關(guān)的分布式實(shí)踐包括:
- Amazon SageMaker 分布式模型并行 — 該庫(kù)使用圖形分區(qū)生成針對(duì)速度或內(nèi)存進(jìn)行了優(yōu)化的智能模型分區(qū)。Amazon SageMaker 分布式模型并行提供了最新、最好的大型模型訓(xùn)練優(yōu)化,包括數(shù)據(jù)并行、流水線并行、張量并行、優(yōu)化器狀態(tài)分片、激活檢查點(diǎn)和卸載。
- Amazon SageMaker 分片數(shù)據(jù)并行——在?MiCS: Near-linear Scaling for Training Gigantic Model on Public Cloud?論文中,引入了一種新的模型并行策略,該策略僅在數(shù)據(jù)并行組上劃分模型,而不是整個(gè)集群。借助 MiCS,亞馬遜云科技的科學(xué)家們能夠在每個(gè) GPU 上實(shí)現(xiàn) 176 萬(wàn)億次浮點(diǎn)運(yùn)算(理論峰值的 56.4%),從而在 EC2 P4de 實(shí)例上訓(xùn)練 210 層、1.06 萬(wàn)億個(gè)參數(shù)的模型。作為 Amazon SageMaker 并行共享數(shù)據(jù),MIC 現(xiàn)已能夠向 Amazon SageMaker Training 客戶提供。
Amazon SageMaker 分布式訓(xùn)練庫(kù)提供高性能和更簡(jiǎn)單的開(kāi)發(fā)者體驗(yàn)。開(kāi)發(fā)人員無(wú)需編寫(xiě)和維護(hù)自定義的并行進(jìn)程啟動(dòng)器,或使用特定于框架的啟動(dòng)工具,因?yàn)椴⑿袉?dòng)器已經(jīng)內(nèi)置在 Amazon SageMaker 的任務(wù)啟動(dòng) SDK 之中。
與傳統(tǒng)分布式訓(xùn)練相比,大型語(yǔ)言模型的微調(diào)通常不僅要求數(shù)據(jù)并行,數(shù)據(jù)并行和模型并行需要同時(shí)進(jìn)行。Amazon SageMaker Model Parallelism 在易用性和穩(wěn)定性 (OOM) 上與開(kāi)源自建方案(如 DeepSpeed)相比具有核心競(jìng)爭(zhēng)優(yōu)勢(shì)。對(duì)于基于哪些模型進(jìn)行具體微調(diào)、具體最佳實(shí)踐等技術(shù)細(xì)節(jié),你還可以咨詢亞馬遜云科技的解決方案架構(gòu)師團(tuán)隊(duì),獲得更進(jìn)一步的技術(shù)支持和專業(yè)建議。
總結(jié)
本期文章我們一起探討大型語(yǔ)言模型的發(fā)展歷史、語(yǔ)料來(lái)源、數(shù)據(jù)預(yù)處理流程策略、訓(xùn)練使用的網(wǎng)絡(luò)架構(gòu)、最新研究方向分析(LLaMA、PaLM-E 等),以及在亞馬遜云科技上進(jìn)行大型語(yǔ)言模型訓(xùn)練的一些最佳落地實(shí)踐等。下期文章,我們將重點(diǎn)討論動(dòng)手實(shí)踐,解讀和演示大型語(yǔ)言模型(LLMs)在亞馬遜云科技上的部署、編譯優(yōu)化、分布式訓(xùn)練等方面的動(dòng)手實(shí)驗(yàn),敬請(qǐng)期待。
請(qǐng)持續(xù)關(guān)注 Build On Cloud 微信公眾號(hào),了解更多面向開(kāi)發(fā)者的技術(shù)分享和云開(kāi)發(fā)動(dòng)態(tài)!
往期推薦
#GitOps 最佳實(shí)踐
#開(kāi)發(fā)者生態(tài)
#機(jī)器學(xué)習(xí)洞察
作者黃浩文
亞馬遜云科技資深開(kāi)發(fā)者布道師,專注于 AI/ML、Data Science 等。擁有 20 多年電信、移動(dòng)互聯(lián)網(wǎng)以及云計(jì)算等行業(yè)架構(gòu)設(shè)計(jì)、技術(shù)及創(chuàng)業(yè)管理等豐富經(jīng)驗(yàn),曾就職于 Microsoft、Sun Microsystems、中國(guó)電信等企業(yè),專注為游戲、電商、媒體和廣告等企業(yè)客戶提供 AI/ML、數(shù)據(jù)分析和企業(yè)數(shù)字化轉(zhuǎn)型等解決方案咨詢服務(wù)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-469075.html
?文章來(lái)源:https://dev.amazoncloud.cn/column/article/64411c1dfed6cd33add92882?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-469075.html
到了這里,關(guān)于Generative AI 新世界 | 大型語(yǔ)言模型(LLMs)概述的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!