很高興發布新的程式碼庫:nanochat! (這是我寫過的最瘋狂的程式碼庫之一)。與我之前類似的程式碼庫 nanoGPT(僅涵蓋預訓練)不同,nanochat 是一個極簡的、從零開始的全端訓練/推理流程,它是基於一個單一的、依賴最少的代碼庫構建的簡單 ChatGPT 克隆版本。你啟動一個雲端 GPU 盒,執行一個腳本,只要 4 小時後,你就可以在類似 ChatGPT 的 Web UI 中與你自己的 LLM 對話。它大約有 8,000 行程式碼,在我看來相當簡潔,用於:- 使用新的 Rust 實現訓練標記器 - 在 FineWeb 上預訓練 Transformer LLM,評估多個指標的 CORE 分數 - 使用 SmolTalk 的用戶助手對話、多項選擇題和工具使用進行中期訓練。 - SFT,在世界知識多項選擇題(ARC-E/C、MMLU)、數學(GSM8K)、程式碼(HumanEval)上評估聊天模型 - 可選使用「GRPO」在 GSM8K 上對模型進行強化學習 - 在具有鍵值快取的引擎中高效推理模型,使用簡單的預填充/解碼、工具(輕量級的 FPT 工具」中的 Python),透過類似器來解釋連接器、工具(DUI) - 編寫一份 Markdown 報告卡,總結並遊戲化整個過程。即使成本低至約 100 美元(在 8XH100 節點上約 4 小時),您也可以訓練一個小型 ChatGPT 克隆模型,您可以與之對話,它可以編寫故事/詩歌,回答簡單的問題。大約 12 小時超過了 GPT-2 的核心指標。隨著成本進一步增加到約 1000 美元(約 41.6 小時的訓練),它很快就會變得更加連貫,可以解決簡單的數學/程式碼問題並參加多項選擇題測驗。例如,一個訓練了24小時的深度為30的模型(這大約相當於GPT-3 Small 125M和GPT-3的千分之一的FLOPs)在MMLU上可以達到40秒,在ARC-Easy上可以達到70秒,在GSM8K上可以達到20秒,等等。我的目標是將完整的「強基線」堆疊整合到一個內聚、精簡、可讀、可破解、最大程度可分叉的倉庫。 nanochat將是LLM101n的頂點專案(目前仍在開發中)。我認為它也有潛力發展成為研究工具或基準,類似於先前的nanoGPT。它遠未完成、調整或優化(實際上我認為可能有很多唾手可得的成果),但我認為它的整體框架已經足夠完善,可以上傳到GitHub,在那裡它的各個部分都可以進行改進。回復中提供了 repo 連結和 nanochat speedrun 的詳細演練。
GitHub repo:hgithub.com/karpathy/nanoc…更詳細、更專業的演練:https://t.co/YmHaZfNjcJ WebUI 中 100 美元github.com/karpathy/nanoc…:) 更大的模型(例如 12 小時深度 26 或 24 小時深度 30)很快就會變得更加連貫。
首先,在報告卡中,我們先來看看這次 100 美元速通產生的一些總結指標範例。目前的程式碼庫略超過 8000 行,但我盡量保持程式碼簡潔,並添加了充足的註解。接下來是有趣的部分——調優和爬坡。