" 從 0 到 1 手搓 GPT" 教程來了!
視頻 1 個多小時,從原理到代碼都一一呈現,訓練微調也涵蓋在内,手把手帶着你搞定。
該内容剛發出來,在 Twitter 已吸引 400 萬關注量,HackerNews 上 Points 也破了 900。
連馬斯克也下場支持。
評論區更是一片鑼鼓喧天鞭炮齊鳴,網友們紛紛馬住。
有人評價,Andrej 确實是一位出色的 " 事物解釋者 ",也熱心于回答大家的問題。
還有網友更誇張,稱該教程簡直是來 " 救命 "。
那麼,這位活菩薩是誰?
正是前特斯拉 AI 總監,李飛飛高徒——Andrej Karpathy。
教程具體說了什麼?
這就來展開講講。
從零構建 GPT,總共幾步?
視頻教程先從理論講起。
第一部分主要關于建立基準語言模型(二元)以及 Transformer 核心注意力機制,以及該機制内節點之間的信息傳遞,自注意力機制理論也有涉及。
該 part 内容長度超過 1 小時,不僅有概念解釋,還教你如何使用矩陣乘法、添加 softmax 歸一化,可謂 " 夯實基礎 " 式講解。
接着講述構建 Transformer。
這當中涉及了多頭注意力(包括如何插入自注意力構建塊)、多層感知機(MLP)、殘差連接、歸一化方法 LayerNorm 以及如何在 Transformer 中添加 Dropout Notes …… .
然後,作者會帶大家訓練一個模型,當中會用到一個名為 nanoGPT 的庫,可調用 GPT-2 參數,快速完成 GPT 模型的訓練。
教程中,作者還将所得模型與 Open AI 的 GPT-3 比較。兩者規模差距達 1 萬 -100 萬倍,但神經網絡是相同的。另一個将拿來比較的是人盡皆知的 ChatGPT,當然,我們目前所得隻是預訓練模型。
在上述内容引導下,我們已得一個 10M 參數規模的模型,在一個 GPU 上訓練 15 分鐘,喂給 1MB 大小的莎士比亞文本數據集,它就能像莎士比亞一樣輸出。
比如下面兩張圖,你能分辨哪個是真人莎士比亞寫的嗎?
評論區有人好奇選什麼 GPU 資源。作者也分享了下——自己用的是 Lambda 的雲上 GPU,這是他目前接觸按需計費 GPU 中,最簡單的渠道。
光說不練不行,作者還給出一些課後練習,總共四道題,包括:
N 維張量掌握挑戰;
在自己選擇的數據集上訓練 GPT;
找一個非常大的數據集,基于它訓練 Transformer,然後初始化再基于莎士比亞數據集微調,看能否通過預訓練獲得更低的驗證損失?
參考 Transformer 相關論文,看看之前研究中哪些操作能進一步提升性能;
神器 nanoGPT 也剛發布
前文提及,作者之所以能快速完成訓練 GPT,有賴于一個名 nanoGPT 的庫。
這也是本教程作者前幾天剛發布的利器,由 2 年前的 minGPT 升級而來,隻是換了個更 " 标題黨 " 的名字,自稱納米級(nano)。目前,其在 GitHub 所獲 star 已超 8k,網友連連點贊。
據作者介紹,該庫裡面包含一個約 300 行的 GPT 模型定義(文件名:model.py),可以從 OpenAI 加載 GPT-2 權重。
還有一個訓練模型 PyTorch 樣闆(文件名:train.py),同樣也是 300 多行。
對想上手的 AI 玩家來說,無論是從頭開始訓練新模型,還是基于預訓練進行微調(目前可用的最大模型為 1.3B 參數的 GPT-2),各路需求均能滿足。
△ 一個訓練實例展示
據作者目前自己的測試,他在 1 個 A100 40GB GPU 上訓練一晚,損失約為 3.74。如果是在 4 個 GPU 上訓練損失約為 3.60。
如果在 8 個 A100 40GB 節點上進行約 50 萬次叠代,時長約為 1 天,atim 的訓練降至約 3.1,init 随機概率是 10.82,已将結果帶到了 baseline 範圍。
對 macbook 或一些 " 力量 " 不足的小破本,靠 nanoGPT 也能開訓。
不過,作者建議使用莎士比亞(shakespeare)數據集,該數據集前文已提及,大小約 1MB,然後在一個很小的網絡上運行。
據他自己親身示範,創建了一個小得多的 Transformer(4 層,4 個 head,64 嵌入大小),在作者自己的蘋果 AIR M1 本上,每次叠代大約需要 400 毫秒。
(GitHub 上 nanoGPT 鍊接附在文末,有需要的朋友自取)
One More Thing
此番教程作者 Karpathy Andrej 在圈内早已頗有名氣,他在斯坦福時,師從華人 AI 大牛李飛飛,後又曾工作于 Open AI。
此前,Karpathy 就在緻力于讓更多人接觸了解神經網絡和相關數據集。2020 年 8 月,他就曾發布 nanoGPT 前一代,MinGPT,同樣旨在讓 GPT 做到小巧、簡潔、可解釋,同樣主打—— 300 行代碼解決問題。
Karpathy 另一個身份是前特斯拉 AI 核心人物。
在馬斯克麾下,他曆任特斯拉高級 AI 主管、特斯拉自動駕駛 AutoPilot 負責人、特斯拉超算 Dojo 負責人、特斯拉擎天柱人形機器人負責人…
2022 年 7 月,Karpathy Andrej 離職,在業内引發不小讨論。當時他就表示,未來将花更多時間在 AI、開源技術教育上。
這回發布的從 0 開始構建 GPT 課程,正是他教學計劃的一部分。
課程視頻:
https://www.youtube.com/watch?v=kCc8FmEb1nY
nanoGPT GitHub 鍊接:
https://github.com/karpathy/nanoGPT
參考鍊接:
[ 1 ] https://twitter.com/karpathy/status/1615398117683388417?s=46&t=69hVy8CNcEBXBYmQHXhdxA
[ 2 ] https://news.ycombinator.com/item?id=34414716