首頁 > AI資訊 > 最新資訊 > 從零手搓MoE大模型,大神級教程來了

從零手搓MoE大模型,大神級教程來了

新火種    2024-01-30

傳說中GPT-4的“致勝法寶”——MoE(混合專家)架構(gòu),自己也能手搓了!

Hugging Face上有一位機器學(xué)習(xí)大神,分享了如何從頭開始建立一套完整的MoE系統(tǒng)。

從零手搓MoE大模型,大神級教程來了

這個項目被作者叫做MakeMoE,詳細講述了從注意力構(gòu)建到形成完整MoE模型的過程。

作者介紹,MakeMoE是受到OpenAI創(chuàng)始成員Andrej Karpathy的makemore啟發(fā)并以之為基礎(chǔ)編寫的。

makemore是一個針對自然語言處理和機器學(xué)習(xí)的教學(xué)項目,意在幫助學(xué)習(xí)者理解并實現(xiàn)一些基本模型。

同樣,MakeMoE也是在一步步的搭建過程中,幫助學(xué)習(xí)者更深刻地理解混合專家模型。

從零手搓MoE大模型,大神級教程來了

那么,這份“手搓攻略”具體都講了些什么呢?

從頭開始搭建MoE模型

和Karpathy的makemore相比,MakeMoE用稀疏的專家混合體代替了孤立的前饋神經(jīng)網(wǎng)絡(luò),同時加入了必要的門控邏輯。

同時,由于過程中需要用到ReLU激活函數(shù),makemore中的默認初始化方式被替換成了Kaiming He方法。

從零手搓MoE大模型,大神級教程來了

想要創(chuàng)建一個MoE模型,首先要理解自注意力機制。

模型首先通過線性變換,將輸入序列變換成用查詢(Q)、鍵(K)和值(V)表示的參數(shù)。

這些參數(shù)隨后被用于計算注意力分數(shù),這些分數(shù)決定了在生成每個token時,模型對序列中每個位置的關(guān)注程度。

為了確保模型在生成文本時的自回歸特性,即只能基于已經(jīng)生成的token來預(yù)測下一個token,作者使用了多頭因果自注意力機制。

這種機制通過一個掩碼來實現(xiàn)將未處理的位置的注意力分數(shù)設(shè)置為負無窮大,這樣這些位置的權(quán)重就會變?yōu)榱恪?/p>

多頭因果則是讓模型并行地執(zhí)行多個這樣的注意力計算,每個頭關(guān)注序列的不同部分。

從零手搓MoE大模型,大神級教程來了

完成自注意力機制的配置后,就可以創(chuàng)建專家模塊了,這里的“專家模塊”是一種多層感知器。

每個專家模塊包含一個線性層,它將嵌入向量映射到一個更大的維度,然后通過非線性激活函數(shù)(如ReLU),再通過另一個線性層將向量映射回原始的嵌入維度。

這樣的設(shè)計使得每個專家能夠?qū)W⒂谔幚磔斎胄蛄械牟煌糠郑⑼ㄟ^門控網(wǎng)絡(luò)來決定在生成每個token時應(yīng)該激活哪些專家。

從零手搓MoE大模型,大神級教程來了

于是,接下來就要開始構(gòu)建分配和管理專家的組件——門控網(wǎng)絡(luò)。

這里的門控網(wǎng)絡(luò)同樣是通過一個線性層實現(xiàn),該層將自注意力層的輸出映射到專家模塊的數(shù)量。

這個線性層的輸出是一個分數(shù)向量,每個分數(shù)代表了對應(yīng)專家模塊對于當前處理的token的重要性。

門控網(wǎng)絡(luò)會計算這個分數(shù)向量的top-k值并記錄其索引,然后從中選擇top-k個最大的分數(shù),用來加權(quán)對應(yīng)的專家模塊輸出。

從零手搓MoE大模型,大神級教程來了

為了在訓(xùn)練過程中增加模型的探索性,作者還引入了噪聲,避免所有token都傾向于被相同的專家處理。

這種噪聲通常通過在分數(shù)向量上添加隨機的高斯噪聲實現(xiàn)。

從零手搓MoE大模型,大神級教程來了

獲得結(jié)果后,模型有選擇地將前k個值與相應(yīng)token的前k個專家的輸出相乘,然后相加形成加權(quán)和,構(gòu)成模型的輸出。

最后,將這些模塊在一起,就得到一個MoE模型了。

針對以上的整個過程,作者都提供了相應(yīng)的代碼,可以到原文中具體了解。

另外,作者還制作了端到端的Jupyter筆記,可以在學(xué)習(xí)各模塊的同時直接運行。

感興趣的話,就趕快學(xué)起來吧!

Tags:
相關(guān)推薦
免責聲明
本文所包含的觀點僅代表作者個人看法,不代表新火種的觀點。在新火種上獲取的所有信息均不應(yīng)被視為投資建議。新火種對本文可能提及或鏈接的任何項目不表示認可。 交易和投資涉及高風(fēng)險,讀者在采取與本文內(nèi)容相關(guān)的任何行動之前,請務(wù)必進行充分的盡職調(diào)查。最終的決策應(yīng)該基于您自己的獨立判斷。新火種不對因依賴本文觀點而產(chǎn)生的任何金錢損失負任何責任。

熱門文章