LLaMA閱讀筆記

LLaMA: Open and Efficient Foundation Language Models
? 介紹了論文中 “2. Approach” 部分,包括數(shù)據(jù)集和網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化
數(shù)據(jù)來源:全部為開源數(shù)據(jù)集

預訓練是一種利用大量無標注數(shù)據(jù)來訓練一個通用模型的方法,然后再用特定任務(wù)的數(shù)據(jù)來微調(diào)模型。
數(shù)據(jù)混合是一種將不同來源或類型的數(shù)據(jù)組合在一起的方法,以增加數(shù)據(jù)的多樣性和覆蓋率。
采樣比例是指從每個子集中抽取數(shù)據(jù)的概率。
輪數(shù)(epoch)是指對整個數(shù)據(jù)集進行一次完整的訓練:除了書和wiki,其他都是1epoch
下面介紹一下看著陌生的Dataset:
CommonCrawl:用CCNet pipline 提取和過濾從互聯(lián)網(wǎng)中爬取下來的文本,它可以根據(jù)語言、長度、重復度等標準來選擇高質(zhì)量的文本。
C4:也是互聯(lián)網(wǎng)中爬取下的文本,但它的文本質(zhì)量過濾依賴于一些啟發(fā)式的標準,比如網(wǎng)頁中的標點符號或者單詞和句子的數(shù)量。
StackExchange:一些問答網(wǎng)站,有各個領(lǐng)域的高質(zhì)量問答數(shù)據(jù)。
Tokenizer:
Bytepair encoding algorithm (BPE) : BPE算法是一種數(shù)據(jù)壓縮算法,它可以將文本切分為任意大小的單元,不受語言或字符集的限制。它的基本思想是,每一步都將最常見的一對相鄰數(shù)據(jù)單位替換為該數(shù)據(jù)中沒有出現(xiàn)過的一個新單位,反復迭代直到滿足停止條件。它可以有效地處理未登錄詞和稀有詞,提高語言模型的性能。ChatGPT使用的也是BPE算法。
另外,他們把數(shù)分成單個的數(shù)字,對于未知的UTF-8字符,用的字節(jié)進行分解。
網(wǎng)絡(luò)結(jié)構(gòu)&訓練
提高效率效率:
網(wǎng)絡(luò)用了causal multi-head attention(因果自注意力)減少內(nèi)存和訓練時間,它可以保證只考慮當前和之前的輸入。因果自注意力用一個掩碼(mask)來實現(xiàn),即在計算相似度時,把未來時刻的輸入屏蔽掉。為了提高效率,用了XFormers和FlashAttention實現(xiàn)
用檢查點(checkpointing)減少了反向傳播過程中需要重新計算的激活值(activations)。具體來說,我們保存了那些計算代價較高的激活值,比如線性層的輸出。
模型和序列并行:這是一種分布式訓練的方法,它可以把一個大模型或者一個長序列拆分成多個小塊,分配給不同的GPU進行并行計算,從而減少單個GPU的負擔和內(nèi)存需求。
計算和通信重疊:這是一種提高計算效率的方法,它可以讓GPU在計算激活值的同時進行網(wǎng)絡(luò)通信,從而減少等待時間和同步開銷。
網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化:
Pre-normalization: 為了讓訓練更加穩(wěn)定,llama給 transformer sub-layer 的輸入做了normalize,而不是輸出。用了RMSNorm
SwiGLU激活: ReLU替換成了SwiGLU。SwiGLU是一種激活函數(shù),它是Gated Linear Units (GLU)的一種變體,使用Swish函數(shù)代替sigmoid函數(shù)。它可以提高transformer模型的性能,比ReLU或GELU激活函數(shù)更好。SwiGLU的優(yōu)點是它可以動態(tài)地調(diào)整信息流的門控程度,根據(jù)輸入的不同而變化。ReLU的缺點是它會導致神經(jīng)元死亡,即輸出為零的情況。GELU的缺點是它比ReLU更復雜,計算量更大。
旋轉(zhuǎn)嵌入(Rotary Embeddings): GPTNeo是一種新型的位置編碼方法,它可以兼顧絕對位置和相對位置的信息。它的基本思想是通過一個旋轉(zhuǎn)矩陣來調(diào)整每個單詞或標記的嵌入向量,使得它們的內(nèi)積只與它們的相對位置有關(guān)。旋轉(zhuǎn)嵌入不需要預先定義或?qū)W習位置嵌入向量,而是在網(wǎng)絡(luò)的每一層動態(tài)地添加位置信息。旋轉(zhuǎn)嵌入有一些優(yōu)點,比如可以處理任意長度的序列,可以提高模型的泛化能力,可以減少計算量,可以適用于線性Attention等。
Optimizer:
AdamW, cosine learning rate, warmup
