繁中

nanoGPT:了解如何用最少的代碼訓練GPT

星號:48.4K+最簡潔、高效的GPT培訓和微調存儲庫,包含300行代碼來實現中等規模的GPT nanoGPT是由Andrej Karpathy發起的一個開源項目,旨在提供最簡單、最快的代碼庫,用於從頭開始訓練或微調中等規模的GPT模型。它基於PyTorch重寫了minGPT以優先考慮性能,使其適合初學者快速入門Transformer架構,同時支持專業級實驗,例如在OpenWebtext上複製GPT-2的結果。

在大型語言模型成為時代主流的今天,您可能會好奇:
「GPT模型到底是如何從頭開始訓練的?"
Karpathy的開源項目 納米GPT, 旨在回答這個問題。

它不是另一個「玩具模型」,而是一個 一套極簡但完整的GPT培訓模板,提供從數據、模型結構到培訓的全過程,是學習現代大型模型工程的最佳入門項目之一。

什麼是nanoGPT?

nanoGPT =最精簡的GPT培訓和微調框架
它允許您根據自己的數據訓練微型GPT(結構與GPT-2類似,但具有極簡且高度可讀的代碼)。

Karpathy在REAUTE中很簡單:
它的目標是成為「最簡單、最快」的GPT培訓庫。

適合:

  • 想要了解Transformer培訓流程的人
  • 想要在消費級圖形處理器上本地訓練語言模型的人們
  • 想要建立自己的LLM模型或科學研究原型的人
  • 想要學習Karpathy工程風格(乾淨的結構,沒有複雜的依賴關係)的人

項目核心功能

nanoGPT不是「模型動物園」,它更像是教學級工程模板。
它包含:

1.& nbsp;數據處理(create.py)。

  • 閱讀原文(例如莎士比亞全集)
  • 將字符或單詞轉換為代幣
  • 分裂列車/ val
  • 將其保存為二進位格式,以高效地加載模型

特點: 簡單、透明、不隱藏任何細節。

2.& nbsp;模型(model.py)。

nanoGPT複製了純粹的「僅解碼器Transformer」,包括:

  • 代幣嵌入
  • 工位埋
  • 多頭自我關注
  • MLP前向網絡
  • 層規範
  • 殘差連接
  • 蒙面關注

它的代碼量非常少,但結構很完整,您可以親自查看GPT的關鍵組件是如何組合在一起的。

3.& nbsp;培訓腳本(train.py)。

支持:

  • 圖形處理器/多卡培訓
  • Flash注意力(可選)
  • PyTorch 2.x編譯加速
  • 可重複的實驗配置
  • 日誌記錄(丟失、疊代速度)

您需要做的就是:

Python train.py配置/train_shakespeare_char.py

它可以在莎士比亞文本上訓練「小GPT」並生成「莎士比亞式對話」。

4.& nbsp;推理(sample.py)。

完成後,您可以使用以下方法:

Python sample.py--out_char =out-shakespeare-char

生成文本。
輸出風格將明顯具有訓練集的特徵(例如,莎士比亞式的「你」和「你」語氣)。

nanoGPT有多受歡迎?

因為它有三個關鍵優勢:

1.代碼簡單透明

卡帕西經常說:

「有教育意義,但仍然有用。」

它不是一個玩具,而是一個現代GPT項目,可以真正貫穿,但具有極簡主義的結構。

2.真正的可訓練性和工程價值

您可以不必在紙上交談,而是:

  • 火車莎士比亞GPT
  • 用GPT訓練你的寫作風格
  • 微調對話模型
  • 即使對於產品原型

3.這是了解大型LLC的跳板

閱讀nanoGPT後,您會更容易理解:

  • GPT-2
  • GPT-J
  • LLaMA系列
  • 西北風建築
  • Flash Attention如何工作

特別適合您進一步閱讀有關 變形金剛, nanoLLaMA 、將來等等。

你可以用nanoGPT做什麼?

有許多實際應用:

在您自己的文本上訓練「小ChatGPT」

例如:作品集文案、您最喜歡的作者的語氣、學習筆記、官方帳號風格。

嘗試製作一個「小型聊天機器人原型」

對小型數據集進行微調,讓它成為「您的風格助手」。"

了解大模特培訓的全過程

包括:
數據|代幣|批量|注意力計算|損失|優化|推理

在您自己的論文或項目中重複使用工程結構

因為它足夠乾淨,可以作為科學研究的基線。

代碼結構簡要描述

倉庫主要文件:

納米GPT/
- -train.py # 訓練主筆記本
- -sample.py #推廣/生成
- -model.py # GPT 模型定義
- -prepare.py # 數據預處理
- -數據/ # 示例數據
──配置/ # 各種訓練配置

它非常輕量級,您可以在幾分鐘內閱讀整個架構。

總結:一個真正值得「通讀原始碼」的項目

nanoGPT是那種只需閱讀一次原始碼即可理解的東西:

  • GPT的內部結構
  • 如何計算注意力
  • 如何輸入文本數據的模型
  • 如何訓練自回歸語言模型
  • 如何以最少的代碼運行現代LLM

對於像您這樣熱愛技術並需要進行內容創作的人來說,它非常適合:

  • 博客內容
  • 視頻評論
  • 學習教程
  • 人工智慧基礎項目模板

GitHub:https://github.com/karpathy/nanoGPT
管材:

返回頂端