首頁  >  文章  >  科技週邊  >  速攬2500星,Andrej Karpathy重寫了一份minGPT庫

速攬2500星,Andrej Karpathy重寫了一份minGPT庫

WBOY
WBOY轉載
2023-04-13 14:01:061119瀏覽

作為人工智慧領域「暴力美學」的代表作,GPT 可謂是出盡風頭,從誕生之初的 GPT 1.17 億參數,一路狂飆到 GPT-3 1750 億參數。隨著 GPT-3 的發布,OpenAI 向社群開放了商業 API,鼓勵大家使用 GPT-3 嘗試更多的實驗。然而,API 的使用需要申請,你的申請很有可能石沉大海。

為了讓資源有限的研究者也能體驗一把玩大模型的樂趣,前特斯拉AI 負責人Andrej Karpathy 基於PyTorch,僅用300 行左右的程式碼就寫出了一個小型GPT 訓練庫,並命名為 minGPT。這個 minGPT 能夠進行加法運算和字元級的語言建模,而且準確率還不錯。

時隔兩年,minGPT 迎來更新,Karpathy 又上線新版本,並命名為 NanoGPT,該庫用於訓練和微調中型大小的 GPT。上線短短幾天,狂攬 2.5K 顆星。

速攬2500星,Andrej Karpathy重寫了一份minGPT庫


#專案位址:https://github.com/karpathy/nanoGPT

#在專案介紹中,Karpathy 這樣寫道:「NanoGPT 是用於訓練和微調中型尺度GPT 最簡單、最快的庫。是對minGPT 的重寫,因為minGPT太複雜了,以至於我都不願意在使用它。NanoGPT 還在開發當中,目前致力於在OpenWebText 資料集上重現GPT-2。

NanoGPT 程式碼設計目標是簡單易讀,其中train.py 是一個約300 行的程式碼;model.py 是一個約300 行的GPT 模型定義,它可以選擇從OpenAI 載入GPT-2 權重。」

速攬2500星,Andrej Karpathy重寫了一份minGPT庫

#為了呈現資料集,使用者首先需要將一些文件tokenize 為一個簡單的1D 索引數組。

$ cd data/openwebtext
$ python prepare.py

這將產生兩個檔案:train.bin 和 val.bin,每個檔案都包含一個代表 GPT-2 BPE token id 的 uint16 位元組原始序列。此訓練腳本試圖複製 OpenAI 提供的最小的 GPT-2 版本,即 124M 版本。

$ python train.py

假如你想使用 PyTorch 分散式資料並行(DDP)進行訓練,請使用 torchrun 執行腳本。

$ torchrun --standalone --nproc_per_node=4 train.py

為了讓程式碼更有效,使用者也可以從模型中進行取樣:

$ python sample.py

Karpathy 表示,目前該專案在1 個A100 40GB GPU 上一晚的訓練損失約為3.74,在4 個GPU 上訓練損失約為3.60。在 8 x A100 40GB node 上進行 400,000 次迭代(約 1 天)atm 的訓練降至 3.1。

至於如何在新文本上微調 GPT,用戶可以訪問 data/shakespeare 並查看 prepare.py。與 OpenWebText 不同,這將在幾秒鐘內運行。微調只需要很少的時間,例如在單一 GPU 上只需要幾分鐘。以下是運行微調的一個範例

$ python train.py config/finetune_shakespeare.py

專案一上線,已經有人開始嘗試了:

速攬2500星,Andrej Karpathy重寫了一份minGPT庫

# #想要嘗試的小夥伴,可以參考原項目運行。

以上是速攬2500星,Andrej Karpathy重寫了一份minGPT庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除