一個 GitHub 專案掛著 5.7 萬顆星,標題寫著:3 塊錢、2 小時,從零訓練一個 64M 的語言模型。我把那個 64M 數了三次。
一句話結論:MiniMind 的 64M 是真的(實測 63,912,192 個參數,誤差 0.14%),但「3 塊錢」對不上倉庫自己標的 SFT 成本 1.43 元 —— 要把預訓練加回去,才是 2.31 小時、3.00 元。
資料讀取時間:2026 年 9 月 2 日 00:08 UTC。倉庫版本 commit 7a6fddd(2026-08-31),星數 57,033,Apache-2.0。以下每個數字都標明是「倉庫寫的」還是「我量的」。
MiniMind 到底是什麼?
它不是一個你拿來用的聊天機器人,是一份可以跑的教材。作者 jingyaogong 用純 PyTorch 把一個語言模型的完整訓練鏈路重寫了一遍:預訓練、監督微調、LoRA、DPO、PPO、GRPO、工具呼叫、模型蒸餾,全部不依賴 trl、peft 這類高階封裝。
賣點就是那句標題:普通人租一張顯示卡,兩小時內能親手把一個模型從隨機權重訓練到會講話。這個承諾如果成立,它就是目前門檻最低的「自己訓練一個 LLM」入口。
64M 這個數字是真的嗎?
是真的,而且準得有點漂亮。我用三種互相獨立的方法數,三次都落在同一個數上:63,912,192。
| 數法 | 做了什麼 | 結果 |
|---|---|---|
| ① 讀原始碼算 | 從 model/model_minimind.py 把 MiniMindConfig 的預設值解析出來,照模組樹逐個張量列出來相加 | 63,912,192 |
| ② 讀已發布權重 | 抓 Hugging Face jingyaogong/minimind-3 的 model.safetensors 檔頭,把 90 個張量的 shape 逐個相乘再相加 | 63,912,192 |
| ③ 用檔案大小反推 | 63,912,192 × 2 bytes(F16)+ 9,776(檔頭)+ 8 = 127,834,168 | 與 HF 標的 content-length 逐 byte 相同 |
63,912,192 對「64M」,差 0.14%。順帶把它另一個宣稱也算了:README 說模型體積約為 GPT-3 的 1/2700,175B ÷ 63,912,192 = 2,738,也對得上。
方法②那一步值得多講一句,因為它不是在核對倉庫的說法,是在核對倉庫交出來的東西。原始碼可以寫一套、實際發布的權重可以是另一套;safetensors 的檔頭記著每個張量的真實形狀,那是已經上傳的檔案自己說的話。兩邊完全吻合,代表程式碼跟權重沒有分岔。
設定值:hidden_size 768、8 層、詞表 6,400、8 個 attention head(4 個 KV head)、intermediate_size 2,432、embedding 與輸出層共用權重。
三處來源一致:倉庫原始碼、README 結構表、Hugging Face 上的 config.json
詞表只有 6,400,相對於主流模型的 6 萬到 15 萬是刻意壓的。在 64M 這個量級,embedding 加輸出層很容易吃掉一半參數,砍詞表是把預算留給中間層的工程取捨。
那「2 小時、3 塊錢」呢?
這裡出現落差。同一份 README,對同一件事給了兩組數字。
標題那句寫的是:
此开源项目旨在完全从 0 开始,仅用 3 块钱成本与 2 小时训练时间,即可训练出规模约为 64M 的超小语言模型 MiniMind。
README.md 第 34 行(原文為簡體)
往下八行,有一行註腳替這兩個數字定義了範圍:
「2 小时」指 SFT 阶段在单张 NVIDIA 3090 上跑完 1 epoch 的实测耗时,「3 块钱」指对应时段的 GPU 租用成本。
README.md 第 42 行(原文為簡體);英文版 README 第 42 行用字完全一致,不是翻譯造成的差異
問題是,同一份 README 再往下 580 行,有一張訓練開銷表。表裡 SFT 那一格寫的不是 2 小時,也不是 3 塊錢。
| 階段(minimind-3,64M,單卡 3090) | 時間 | 成本 |
|---|---|---|
預訓練 pretrain_t2t_mini | ≈1.21h | ≈1.57¥ |
監督微調 sft_t2t_mini | ≈1.10h | ≈1.43¥ |
工具呼叫 toolcall | ≈0.9h | ≈1.17¥ |
強化學習 RLAIF | ≈1.1h | ≈1.43¥ |
| 預訓練 + 監督微調(倉庫自己相加) | ≈2.31h | ≈3.00¥ |
照註腳的說法,「2 小時 3 塊錢」= SFT 這一格 = 1.10 小時、1.43 元。時間差 1.8 倍,錢差 2.1 倍。
但把預訓練加回去,兩個數字立刻對上:1.21 + 1.10 = 2.31 小時,1.57 + 1.43 = 3.00 元。「3 塊錢」這個數,只有在「預訓練 + 監督微調」這個讀法下才湊得出來。而且這也是唯一跟標題那句「完全從 0 開始」相容的讀法 —— 跳過預訓練,就沒有「從 0」可言。
我沒有說作者在灌水,因為兩組數字的性質本來就不同:註腳寫的是「實測耗時」,表格明寫是「經驗估算值」。實測跟估算差一倍,在不同批次大小、不同序列長度下完全可能發生。真正的問題是讀者無法從這份文件裡分辨哪一個才是自己會遇到的數。一個標成實測、一個標成估算,兩個都掛在同一個階段名下,而標題只印了其中一組。
還有一個小的:2.31 小時被寫成「2 小時」,往下捨了 13%。倉庫在另一處(第 645 行)說的是「約 2 小時量级」,加了「量級」兩個字就準確得多;標題那句沒有。
那我到底要花多少?自己點一下
下面這個試算機直接用倉庫那張表的數字,勾哪幾個階段就加哪幾格。你會看到標題那個「3 塊錢」是怎麼來的,以及多勾兩格之後會變成多少。
還有哪些成本沒算進那 2 小時?
三項,倉庫沒藏,但也沒放進標題。
- 2.8GB 資料要先下載。「快速復現」那組是
pretrain_t2t_mini.jsonl(1.2GB)加sft_t2t_mini.jsonl(1.6GB)。下載時間不在那 2.31 小時裡面。 - 那 2 小時不是在你的筆電上。基準是單張 RTX 3090(24GB 顯示記憶體),租金按倉庫寫的 1.3¥/h 計。沒有這張卡,數字要重算;用 CPU 或一般內顯,不是同一個量級的事。
- 「完整版」是另一個世界。主線推薦的組合是
pretrain_t2t(10GB)加sft_t2t(14GB),24GB 資料。README 對這條路徑沒有給 2 小時的承諾,它從頭到尾講的都是 mini 那組。
訓練完,我會拿到一個什麼東西?
一個會講中文、但答題準確率跟丟骰子差不多的模型。這句不是我刻薄,是倉庫自己的評測表。
| 模型 | 參數 | C-Eval / CMMLU(中文) |
|---|---|---|
| minimind-3 | 64M | 24.89 / 25.38 |
| SmolLM2-135M(HuggingFace) | 135M | 24.44 / 24.71 |
| gpt2-medium(OpenAI) | 360M | 23.18 / 25.00 |
| TinyLlama-1.1B | 1,100M | 25.71 / 25.03 |
這類四選一的測驗,亂猜的期望值就是 25 分。整張表沒有一個模型脫離這條線 —— 包括參數量是 MiniMind 十七倍的 TinyLlama。所以正確的讀法不是「MiniMind 很廢」,而是這個量級的模型全都還沒摸到這類測驗的地板以上。倉庫在表格上方自己寫了「结果仅供娱乐」,也解釋了隨機作答為什麼是很強的下界。這一段它是誠實的。
README 裡貼的實際對話樣本也印證這件事:問它「介紹一下自己」,回覆是通順的中文;問它魯迅或者叫它寫快速排序,就開始跑火車。它學會的是語言的形狀,不是知識。
把它當成「我親手訓練出來的第一個模型」,它值那 3 塊錢。把它當成「我自己的 ChatGPT」,那 3 塊錢就是白花的。
誰該跑一次,誰該直接跳過?
| 你是 | 建議 | 為什麼 |
|---|---|---|
| 想搞懂 LLM 每一層在做什麼的人 | 值得跑 | 核心演算法全部原生 PyTorch 寫出來,沒有被 trl / peft 包起來,可以逐行讀 |
| 要在履歷或報告裡寫「從零訓練過模型」的人 | 值得跑 | 2.31 小時、3 元,這是目前門檻最低的完整鏈路之一 |
| 想要一個能用的中文助理 | 跳過 | 直接用現成的開源模型,64M 這個量級不是拿來辦事的 |
| 沒有 NVIDIA 顯示卡、也不想租卡的人 | 跳過 | 那 2.31 小時的前提是單張 3090,換硬體等於換一組數字 |
有沒有替代方案?
同一條路上還有幾個選擇,方向不太一樣:
- Karpathy 的教學專案:英文語料為主、程式碼更精簡,適合英文閱讀沒問題的人。我們之前寫過他用 $10 和 5,500 行程式碼做的那次實驗。
- 不想訓練,只想在自己電腦上跑大模型:那是另一件事,看 colibrì 把 744B 模型塞進 25GB 記憶體那篇。
- 想要小而真的有用:VibeThinker 3B 那種量級才開始有實用價值,代價是你不會是從零訓練它的人。
常見問題
問:MiniMind 真的只要 3 塊錢嗎?
要看你把哪幾個階段算進去。倉庫自己的表:預訓練 1.57 元 + 監督微調 1.43 元 = 3.00 元,這才是「3 塊錢」的來源。只跑監督微調是 1.43 元,跑滿四個階段是 5.60 元。另外這是單卡 3090 的租金估算,不是買卡的錢。
問:64M 參數是誇大的嗎?
不是。實測 63,912,192 個參數,跟 64M 差 0.14%。用原始碼、已發布權重檔頭、檔案大小三種方法互相驗證,三次結果相同。
問:沒有顯示卡可以跑嗎?
程式碼跑得動,但那 2.31 小時的數字直接作廢。整份 README 的時間與成本都以單張 RTX 3090 為基準,換硬體要自己重測。
問:訓練出來的模型能拿來當客服或助理嗎?
不能。倉庫自己的評測表顯示它在中文選擇題上是 24.89 / 25.38,四選一亂猜的期望值就是 25。它是教材,不是產品。
結論
MiniMind 該拿的分它拿到了:參數量三種數法全中,成本表內部的加法、乘法全部自洽(每一格都剛好是時數 × 1.3),評測那一段甚至主動告訴你成績等於亂猜。這在動輒把倍數寫大三倍的開源專案裡並不常見。
它唯一失手的地方,是那行本來要讓標題變誠實的註腳,把兩個標題數字歸給了單一階段 —— 而那個階段在它自己的表裡,只值 1.43 元。寫註腳的人想補上的是範圍,結果補窄了。
對讀者來說,結論很簡單:3 塊錢是真的,只是那 3 塊錢買的是「預訓練 + 監督微調」兩段,不是註腳說的那一段。想清楚這點再去租卡,你不會失望。
本文所有數字讀取於 2026 年 9 月 2 日 00:08 UTC,對應倉庫 commit 7a6fddd。GitHub 星數、參數量、檔案大小為本站實測;訓練時間與成本為倉庫 README 標示的估算值,本站未實跑訓練,不保證你的環境會得到相同結果。開源專案更新頻繁,數字可能已變動。本文不構成任何投資或採購建議。
同主題延伸閱讀
AI 工具實測與工作流
實用工具與下一步 · 免費工具 →




發佈留言