![]()
剛剛,Andrej Karpathy發布了一個新的項目:nanochat。
與之前只覆蓋預訓練的nanoGPT不同,nanochat是一個從頭開始、代碼極簡的全棧式ChatGPT克隆體訓練/推理流水線。它被集成在一個單一、依賴極少的代碼庫中
Karpathy表示,用戶只需啟動一個云端GPU機器,運行一個腳本,最快4小時后,就能在類似ChatGPT的網頁界面中與自己訓練的LLM對話
![]()
整個項目代碼量約8000行,覆蓋了以下完整流程:
訓練分詞器:使用新的Rust實現
預訓練:在FineWeb上預訓練一個Transformer LLM,并根據多項指標評估CORE分數
中間訓練:在來自SmolTalk的用戶-助手對話、多項選擇題和工具使用數據上進行訓練
SFT(監督微調):在世界知識選擇題(ARC-E/C, MMLU)、數學(GSM8K)和代碼(HumanEval)上對聊天模型進行微調和評估
RL(強化學習):可選地使用“GRPO”在GSM8K上對模型進行強化學習
高效推理:在帶有KV緩存的引擎中進行高效推理,支持簡單的prefill/decode和工具使用(在輕量級沙箱中調用Python解釋器),并可通過命令行或類似ChatGPT的WebUI進行交互
生成報告卡:撰寫一份markdown格式的報告卡,對整個過程進行總結和游戲化呈現
成本與性能
Karpathy詳細介紹了不同投入下的模型表現:
約100美元成本(在8xH100節點上訓練約4小時):可以訓練出一個能進行簡單對話、寫故事/詩歌、回答簡單問題的小ChatGPT克隆體
約12小時訓練:CORE指標超過GPT-2
更高投入,約1000美元成本(約41.6小時訓練):模型會變得更加連貫,能夠解決簡單的數學和代碼問題,并參加多項選擇題測試
例如,一個深度為30、訓練24小時的模型(其FLOPs約等于GPT-3 Small 125M,是GPT-3的1/1000),在MMLU測試上得分40多分,ARC-Easy上70多分,GSM8K上20多分
Karpathy的目標是將完整的強基線技術棧整合到一個有凝聚力、最小化、可讀、可破解、最大程度可fork的倉庫中。nanochat也將成為他仍在開發的LLM101n課程的頂點項目。他認為,這個項目有潛力發展成為一個研究工具或基準,就像之前的nanoGPT一樣
他也坦言,項目遠未完成、調優或優化,可能還有很多容易優化的部分,但目前的整體框架已經足夠好,可以發布到GitHub上,讓社區共同改進。
GitHub倉庫地址:
https://github.com/karpathy/nanochat
更詳細的技術介紹:
https://github.com/karpathy/nanochat/discussions/1
技術細節與問答
在發布后,Karpathy也回答了網友們關心的一些問題。
問:這個模型訓練的架構是什么?
Karpathy:基本上類似Llama,但更簡單一些,也受到一些修改版nanoGPT的影響。我試圖為這個規模找到一個堅實的基線:
密集Transformer
旋轉嵌入(RoPE),無位置嵌入
QK Norm
Embedding和Unembedding權重不綁定
Token embedding后接Norm
MLP中使用relu^2激活函數
RMSNorm中無可學習參數
線性層中無偏置項
多查詢注意力(MQA)
Logit softcap
優化器是Muon+AdamW,深受修改版nanoGPT的影響。我有一個TODO是嘗試很好地調整Adam的學習率(例如按模塊調整)以移除Muon,但我還沒有足夠努力地去嘗試。
問:我可以用它來訓練我自己的數據嗎?比如我所有的Notion筆記、健康數據和其他LLM聊天記錄,來做一個理解我的個人聊天機器人?
Karpathy:好問題。我認為這個倉庫不適合做這件事。你應該把這些微型模型更多地看作是非常年幼的孩子(比如幼兒園水平),它們不具備那些更大模型的原始智能。如果你用自己的數據對它進行微調/訓練,你可能會得到一些有趣的模仿,風格上感覺像你的寫作,但內容會很糟糕。
要實現你想要的效果,你需要更復雜的流程:
1.獲取你的原始數據。
2.在其之上進行大量的合成數據生成和重寫(這很棘手,不簡單,屬于研究范疇)。
3.在一個最先進的開源LLM上進行微調。
4.你可能還需要混合大量的預訓練數據,以避免在微調過程中損失過多的原始智能。
基本上,要讓這個工作得很好,仍然是研究領域的范疇,并不簡單。你最好的非研究選擇是,把你的所有寫作內容交給像NotebookLM這樣的工具,它會通過RAG(檢索增強生成)來處理你的數據。你的數據通過RAG進入上下文窗口,但不會影響模型權重。所以模型并不真正“了解你”,但這可能是你最容易接近的效果。
問:這些代碼有多少是你手寫的?
Karpathy:好問題,基本上完全是手寫的(配合Tab自動補全)。我試過幾次使用Claude/Codex的AI智能體,但它們的效果根本不夠好,最終沒什么幫助,可能是因為這個倉庫偏離了它們的數據分布太遠
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.