2023成都積分入學什么時候開始申請
2023-01-31
更新時間:2023-01-24 10:05:18作者:智慧百科
詹士 發(fā)自 凹非寺量子位 | 公眾號 QbitAI
訓練/微調(diào)中型GPT,最簡單最快的庫來了!
其名為:NanoGPT。
從名字就能看出是個“納米武器”,據(jù)作者介紹,該庫代碼簡單易讀,2個僅300行代碼的文件。
現(xiàn)已基于OpenWebText重現(xiàn) GPT-2 (124M),在單個8XA100 40GB節(jié)點上,訓練時間為38小時。
值得一提的是,該庫發(fā)布者是前特斯拉AI總監(jiān),李飛飛高徒,Andrej Karpathy。此次發(fā)布的NanoGPT,正是他2年前MinGPT的升級版。
目前,此項目在GitHub所獲star已超6k,HackerNews上points也破千。
毫無意外地,評論區(qū)一片“喜大普奔”。
有網(wǎng)友表示,這才是咱獨立開發(fā)者喜聞樂見的AI工具。
還有人對其一直開放傳授分享知識的做法,表示感謝。
那么,這個最簡單最快的NanoGPT怎么用?
下面展開講講。
NanoGPT的打開方式
發(fā)布文件里面包含一個約300行的GPT模型定義(文件名:model.py),可以選擇從OpenAI加載GPT-2權重。
還有一個訓練模型PyTorch樣板(文件名:train.py),同樣也是300多行。
作者補充道,代碼并不難,很容易就能滿足大家需求——無論是從頭開始訓練新模型,還是基于預訓練進行微調(diào)(目前可用的最大模型為1.3B參數(shù)的GPT-2)。
△ 一個訓練實例展示
上手前,需要提前準備好依賴項:
先下載并標記OpenWebText數(shù)據(jù)集。
$cddata/openwebtext
$python prepare.py
這將創(chuàng)建一個train.bin和val.bin文件,將 GPT2 BPE token id放入一個序列中。
然后準備訓練,目前腳本默認是嘗試重現(xiàn)GPT-2,124M參數(shù)版本,但作者更鼓勵大家閱讀代碼查看文件頂部的設置及路徑。
$ python train.py
如需使用 PyTorch 分布式數(shù)據(jù)并行 (DDP) 進行訓練,請使用 torchrun 運行腳本。
比如,要在4個GPU節(jié)點上運行,代碼如下:
$ torchrun --standalone --nproc_per_node=4train.py
要從模型節(jié)點中采樣,就需將一些檢查點寫入輸入目錄中。
$ python sample.py
據(jù)作者目前自己的測試,他在1 個 A100 40GB GPU 上訓練一晚,損失約為 3.74。如果是在4個GPU上訓練損失約為3.60。
如果在8個A100 40GB節(jié)點上進行約50萬次迭代,時長約為1天,atim的訓練降至約3.1,init隨機概率是10.82,已將結果帶到了baseline范圍。
觀察不同參數(shù)下訓練/驗證loss值如下:
至于如何基于新文本微調(diào)GPT,作者也簡介了方法。
先訪問data/shakespeare,查看prepare.py。
下載小型shakespeare數(shù)據(jù)集并將其呈現(xiàn)為train.bin和val.bin文件(方法前文已介紹),幾秒即可搞定。
運行一個微調(diào)示例,如下:
$ python train.py config/finetune_shakespeare.py
該操作將加載配置參數(shù),覆蓋config/finetune_shakespeare.py文件。
作者指出,一般情況下,基本操作就是從GPT-2檢查點初始化init_from,再正常訓練。
此外,如果手里只有macbook或一些“力量”不足的小破本,作者建議使用shakespeare數(shù)據(jù)集,然后在一個很小的網(wǎng)絡上運行。
先渲染數(shù)據(jù);
$cddata/shakespeare
$python prepare.py
再用一個較小的網(wǎng)絡來運行訓練腳本。
比如下面就創(chuàng)建了一個小得多的Transformer(4層,4個head,64嵌入大小),只在CPU運行,在作者自己的蘋果AIR M1本上,每次迭代大約需要400毫秒。
$ cd ../..
$ python train.py --dataset=shakespeare --n_layer=4--n_head=4--n_embd=64--device=cpu --compile=False--eval_iters=1--block_size=64--batch_size=8
關于NanoGPT的后續(xù)計劃,Andrej Karpathy也在網(wǎng)上有所分享。
他將試圖讓NanoGPT更快復現(xiàn)其他GPT-2模型,然后將預訓練擴展至更大規(guī)模的模型/數(shù)據(jù)集中,此外,他還計劃改進下微調(diào)部分的文檔。
轉(zhuǎn)戰(zhàn)教育和開源的特斯拉前AI總監(jiān)
熟悉Karpathy的圈內(nèi)人肯定知道,他此前是李飛飛高徒,也長期致力于讓更多人接觸了解神經(jīng)網(wǎng)絡和相關數(shù)據(jù)集。
2020年8月,他就曾發(fā)布NanoGPT前一代,MinGPT,同樣旨在讓GPT做到小巧、簡潔、可解釋,同樣主打300行代碼搞定。
Karpathy另一大身份是前特斯拉AI核心人物。
在馬斯克麾下,他歷任特斯拉高級AI主管、特斯拉自動駕駛AutoPilot負責人、特斯拉超算Dojo負責人、特斯拉擎天柱人形機器人負責人…
2022年7月,Karpathy Andrej離職,在業(yè)內(nèi)引發(fā)不小討論。他表示,未來將花更多時間在AI、開源技術教育上,比如他做了一檔AI課程,現(xiàn)還在更新中。
此番發(fā)布NanoGPT同時,Karpathy還下場安撫了下催更黨——新視頻正從0開始構建,計劃2周內(nèi)發(fā)布。
最后附上:
NanoGPT項目:https://github.com/karpathy/nanoGPT
Andrej Karpathy課程:https://karpathy.ai/zero-to-hero.html