小麥 XIAOMAI LAB獨立研究,開放合作

週報 #110/5–10/11募資前紀錄

研究接續圖解:兩個新程序如何接回同一步,方法提案卡在哪裡

這週確認:研究參數改動後存檔,重開讀回來,核對的數字一個都沒變;從同一個存檔重開兩次,接續更新後核對的狀態與梯度也相同。這是之後檢查「改變能不能留下來」的前提,還不代表模型更會解題。讓模型自己提出研究方法,這次被格式擋下,沒有留下可用的方法。10/9 起暫停真模型實驗,雲端 GPU 已釋出;週報照常每週發。

本期研究版本小麥 True 1.2 研究線 · 研究權重第 8 版(10/9 正式研究保存點)

W41 / CONTINUATION ATLAS

存得下,也要接得回同一步。

六張圖,追查算子怎麼接到研究更新、重開後哪些數值相同,以及方法能力還卡在哪裡。

研究證據截至 10/910/26 圖解補編 · 未重跑研究
AI 生成概念插畫:同一琥珀保存匣分流到兩個透明運算匣後對照,非實際硬體、模型內部或執行畫面。
概念示意 · AI 生成 · 非實際硬體、模型內部或執行畫面

10/26 依原週報與當時公開來源補編圖解;研究證據仍截至 10/9,未重跑研究。原文所述暫停、保存點與未完成項目按當週日期判讀。

01

把更新拆成能追查的運算鏈

10/6–7:R13、R14、R16 先接通局部算子,再觀測研究更新。

局部 CPU 證據
01有界 CPU 算子R13 · R14 · R16
02PythonTape記錄前向與反向依賴
03梯度可追查指定運算與尺寸
04AdamW接入研究更新路徑
R13 / R14 / R16

接通的算子範例

sigmoid · softplus · projection · grouped convolution · rsqrt · SiLU

觀測能回到指定運算;不能把這批 CPU 路徑當成整個模型的執行覆蓋。

ORNITH-1.5-9B

研究參數更新,9B 底座凍結

25研究參數張量改變R17
799參數張量已盤點盤點不等於執行

證據邊界只涵蓋列出的有界運算;尚未完成整個 9B 的 Python 前向、反向與更新。每個張量包含許多數值,張量數不能當作純量數。

02

把「容差一致」與「冷恢復一致」分開

10/7:更新對照和存檔讀回各有自己的分母與判準。

兩種不同驗證
R17 · 更新對照

原生 vs. trace-off:容差一致

207 筆紀錄 · 3,108,566 個核對數值

左右滑動看完整圖,或展開下方數據表。

容差內,不等於逐位元相同207 筆比較紀錄都在預設容差內,其中 81 筆非逐位元相同。橫軸 0 至 207 筆。非逐位元相同的紀錄810103.5207紀錄數;分母只限本批比較
全部在預設容差內;保留「非逐位元相同」的差別,不轉成整體能力分數。
R17 · 冷讀回

保存後重開:讀回逐位元相同

2保存點各自冷讀回
181每次 CPU 狀態紀錄

2,960,497 個數值/每次冷讀回

這一批到「讀回」為止,沒有再做下一步更新;完整 CUDA RNG 與全部延後載入的底座值未包含在內。

查看圖表數據
R17
檢查紀錄/數值判準與結果
原生 vs. trace-off207 / 3,108,566預設容差內;81 筆非逐位元相同
每次冷讀回181 / 2,960,497逐位元相同;未接下一步

證據邊界兩批數據不可合併成通過率。R17 的 207 筆包含下一步 loss 純量;後面的 R19 206 筆只計 typed 狀態與梯度,loss 另比。筆數差異不代表兩批所有狀態相同。

03

新算子先在合成題裡對照

10/8:先驗證計算與接續,真模型上的新算子更新仍有獨立關卡。

CPU 合成資料
013 組合成初始化177 個參數元素
02PythonTape ↔ native相同 AdamW 對照
03保存 → 新程序第二步6 個新程序逐位元一致
R18–R19 · CPU SYNTHETIC

5 個機率算子,加上反向減法

exp · log · softmax · log_softmax · logsumexp

rsub · 另外測試的反向減法,不計入機率算子數。

比較結果

最大差異約 1.2e-7

原週報提供的約值;trace on / off 逐位元相同。

6新程序第二步一致
查看圖表數據
R18–R19 CPU synthetic
項目數值/結果
初始化3
參數元素177
最大差異約值1.2e-7
新程序第二步6 · 逐位元相同

證據邊界不是完整 9B,也不是新機率算子在真模型上梯度與更新等價的驗收。合成誤差不能與 R17 或 R19 的分母互換。

04

重開之後,同一步能否一致接續?

10/9 R19-A100:從指定正式保存點啟動兩個獨立新程序。

指定一步逐位元一致

左右滑動看完整圖,或展開下方數據表。

同一保存點,兩個新程序,各做指定下一步研究權重第 8 版分到兩個新程序,各更新 1 步,核對各 3108565 個數值。181 筆狀態與 25 筆梯度,差異 0。10/9 正式研究保存點研究權重第 8 版新程序 A3,108,565181 狀態 + 25 梯度 = 206 筆同一指定更新 × 1 步新程序 B3,108,565181 狀態 + 25 梯度 = 206 筆同一指定更新 × 1 步不同數值:0核對的 typed 紀錄逐位元相同
依當週數據繪製的比較圖,不是原始測試截圖。兩個新保存點沒有自動升格成正式入口。
查看圖表數據
R19-A100
核對項目每個新程序
更新後狀態181
新梯度25
typed 紀錄總數206
數值總數3,108,565
A / B 不同數值0

證據邊界25 份更新張量與梯度以 CPU FP32 計算,保存狀態另含 BF16;不涵蓋任意輸出、文字生成、全模型狀態或任意多步接續。狀態相同不是解題變好的證據。

05

一致保存之後,還有六個關卡

R15 的方法提案卡在格式;R19 的一致接續沒有代替能力驗收。

保留失敗與未完成
012 次生成各 144 個輸出 token
021 份不同提案回覆與 token IDs 相同
03格式拒絕收到字串 "-1.0"
040 個方法保存未進入執行、效用與重啟檢查

FINITE_NUMBERS_REQUIRED · 安全與成本檢查通過,不等於方法能力通過。兩次相同生成,也不是兩份獨立方法證據。

  1. 1完整 trace on / off

    10,800 秒後中止,exit -15;原因未定。

    下一步:先定位停住的運算再重試完整對照。
  2. 2真模型上的新機率算子

    梯度與更新等價仍未驗證。

    下一步:固定同一輸入與狀態,逐算子核對。
  3. 39B 全 Python 路徑

    前向、反向、更新未完成。

    下一步:以有界區段逐步擴大,不把盤點當執行。
  4. 4GPU/BF16 邊界

    新 sqrt GPU 與 BF16 機率運算未完整驗收。

    下一步:分 dtype、device 與邊界個別測試。
  5. 5修正後的自有文字生成

    CPU 預檢通過,GPU 尚未啟動。

    下一步:以凍結條件執行 GPU 生成對照。
  6. 6自主方法形成與重用

    這次格式失敗,沒有可用方法留下。

    下一步:先通過格式,再分開驗執行、效用、保存與新題轉移。

證據邊界這是當週未完成清單與下一步規劃,並非已執行的新實驗;10/26 只補編圖解,沒有加入之後各週的研究結果。

06

這週實際用了哪些開源工具?

完整 GitHub 倉庫網址直接列出;用途限定到當週可核對的執行證據。

2 個上游來源
01PyTorch原生算子對照、typed tensor
02NumPy張量轉 bytes
03保存與核對R13 witness 已執行收據

10/26 補編時核對 R13 source 與已執行收據的雜湊關聯;原始程式、完整收據與張量保持私有,這份摘要不提供完整重現。上游授權於補編日查核,不代表歷史安裝版本。清單不是全部依賴的 SBOM。

證據邊界清單限定 W41 的可核對實用工具。底座 ORNITH-1.5-9B 是模型來源,與這份工具清單分開;依賴存在不等於有本期執行證據。

接著閱讀原週報,保留每天的脈絡與失敗;核對當時固定版本的公開進度來源。

10/9|從同一個存檔重開兩次,各自再做一步

同一個存檔

重開 A

3,108,565個數字

181 筆狀態 + 25 筆梯度

重開 B

3,108,565個數字

181 筆狀態 + 25 筆梯度

不同的數字:0 個

依公開十月摘要繪製,不是原始測試畫面。兩個新程序從指定保存點各接續同一筆研究更新;核對的 181 筆更新後狀態與 25 筆新梯度(共 206 筆、含型別與形狀)逐位元相同。25 份更新參數與梯度在 CPU 以 FP32 計算,保存狀態另含 BF16。這只核對指定一步,不表示保存了所有模型狀態,或其他輸出與文字生成相同。 資料來源:十月進度與六項界線

這週做成了什麼

小麥建在開源模型 ORNITH-1.5-9B 上。目前 9B 底座保持凍結,只更新 25 份研究參數張量;每份張量包含多個數值。這週確認了兩件事:

  • 存檔讀回來,核對的數字都沒變。研究參數改動後存檔,再用全新啟動的程式讀回,核對的約 296 萬個數字逐位元相同(比對範圍見技術紀錄)。
  • 重開兩次,核對的狀態與梯度相同。從同一個存檔各自重開、再往下算一步,兩邊約 311 萬個數字逐位元相同(上圖)。這只比對這一步,不代表文字生成或解新題也一樣。

我之後想檢查的是:小麥留下的改變,重開之後還在不在、換一道題還能不能用。如果存檔本身會出錯,這些檢查都沒有意義,所以這週先把存檔顧好。另外又有更多基本運算(softmax、log、sigmoid 等)改寫成每一步都看得到的版本,目前只在 CPU 上的小型測試和原版對過。

沒做成的

10/7,讓模型自己提出研究方法,這次被格式擋下。我讓真模型自己寫一個想試的研究方法,連同它預期會看到的數字。模型確實寫完了,但第二個預測值寫成了帶引號的 "-1.0",系統只接受數字,整份提案被拒收,沒有留下任何方法。

模型 predictions 第 2 個值:"-1.0"(帶了引號,變成文字)系統 ✕ 拒收 FINITE_NUMBERS_REQUIRED(預測值必須是數字)
節錄:模型實際寫出的第二個預測值。這個值尚未收進公開的十月摘要,原始紀錄可供學術審查核對

就算格式修好,這個方法能不能執行、有沒有用都還沒檢查。這次照事先定好的規則判為失敗,不會事後放寬規則改判。

其他還卡著的:

  • 開著完整追蹤跑一次太慢,最近一次跑滿 3 小時上限被停掉,原因還沒查清。
  • 新改寫的五種機率運算,還沒在真模型上完整驗證;9B 本體大部分也還沒改成看得見的版本。
  • 小麥自己改寫的完整文字生成,還沒在 GPU 上跑過。

接下來

研究實驗恢復後,依序做三件事:

  • 查清開著追蹤為什麼這麼慢。
  • 在真模型上補驗這週新改寫的運算。
  • 處理格式問題(解析規則不放寬,也不替模型改回覆),再讓模型提一次方法。這次要看的是它能不能把方法存下來,重開後還能用。

小麥走到哪了

首頁的四個研究步驟,這週各自的狀態。

  1. 從未知出發,也追問自己怎麼研究

    尚未驗證

    還沒正式驗證。10 月初有探索性試驗,正式實驗還在設計。

  2. 把說出的理由,對回實際運算

    部分做到

    部分運算已能在 CPU 上逐步追查;在真模型上完整追查、把理由對回運算,還沒驗證。

  3. 讓新的理解,改變實際做法

    嘗試未成

    這次嘗試沒成功:模型提出的方法因格式被拒收。

  4. 重啟、換題之後,還能自己用上

    尚未驗證

    存檔和重開這一步已核對;重開、換題後自己選用方法,還沒驗證。

技術紀錄完整數字、範圍限制與每日紀錄,給研究者核對

每日紀錄

  1. R13sigmoid、softplus 反向計算可追蹤通過
  2. R14接上可追蹤的學習流程通過
  3. R15真模型自己提出研究方法:被拒收未通過
  4. R16投影、卷積等運算可追蹤通過
  5. R17凍結 9B 特徵上的研究更新、保存與讀回部分通過
  6. R18–R19機率類運算與 rsub 改寫通過
  7. R19-A100重開兩次,下一步逐位元相同通過
  8. 真模型實跑暫停,完成停點備份紀錄
  9. 公開十月進度與研究定位紀錄
  10. 文件修訂、補上引用紀錄

本週完成

  • 版本:10/9 起的正式存檔是研究權重第 8 版,沿用 True 1.2(9/22 標記)的研究線名稱;之後的兩個新存檔沒有升格。版本名稱本身不表示完整狀態等價;升版時另附正式入口、冷恢復核對範圍及發版說明。存檔傳承紀錄在私人 repo,可供學術審查核對。其中 9/23–9/24、9/30–10/1 尚缺逐檔指紋,不能宣稱整條傳承已完成逐位元核對;版本名稱也不表示全部原始模型權重或執行狀態均未改變。
  • 10/6–10/7:R13、R14、R16 在 CPU 上把 sigmoid、softplus、投影、分組卷積、rsqrt 與 SiLU 的反向計算接上 Python Tape 與 AdamW,可追蹤。範圍是限定算子與尺寸的 CPU 核對。
  • 10/7:R15 在 A100 上讓真模型生成方法提案,兩組設定各產生 144 tokens、自然結束,原始回覆與 token IDs 完全相同,共 2 次生成,只有 1 份不同提案,不能算成兩份獨立提案。第二個預測值是字串 "-1.0",原解析器以 FINITE_NUMBERS_REQUIRED 拒收,沒有保存方法。
  • 10/7:R17 用凍結 9B 在 GPU 上算出的特徵,完成研究更新、Python Tape 反向、AdamW 更新與保存,25 份研究參數張量改變;兩個保存點各由新程序讀回核對。
  • 10/8:R18–R19 把 exp、log、softmax、log_softmax、logsumexp 與 rsub 接上同一張 Python Tape,完成合成資料的 CPU 數值、追蹤開關與存檔後第二步核對。
  • 10/9(R19-A100):指定的研究保存點,在兩個獨立新程序中各接著做下一筆研究更新,結果逐位元一致;這兩個新保存點沒有自動升為正式入口。同日完成停點備份。
  • 10/10–10/11:公開十月進度、研究定位與來源修訂(5ad2e49、cb12b77)。文件發布不算新的模型實驗。

驗證與數字

  • R17 原生與關閉追蹤兩條路徑:207 筆數值紀錄、3,108,566 個值都在預定容差內,其中 81 筆非逐位元一致。兩次冷恢復各核對 181 筆研究狀態、2,960,497 個值,逐位元一致;不含完整 CUDA 亂數狀態與全部延遲載入的底座值,這一批也沒有執行下一筆更新。
  • R18–R19:三組合成初始化、177 個參數元素,和原生自動微分加相同 AdamW 比較,最大差約 1.2e-7;追蹤開關逐位元一致;六個新程序讀回存檔後的第二步一致。全為 CPU 合成測試。
  • R19-A100:兩個新程序比較 206 筆含型別與形狀的紀錄(181 筆存檔後狀態、25 筆新梯度),共 3,108,565 個純量值逐位元一致。範圍是這一筆研究更新,不代表任意輸出、文字生成或 9B 全模型反向等價。R17 的 207 筆計數另含 1 個下一步損失純量;R19-A100 的 206 筆逐位元計數只統計含型別與形狀的狀態與梯度,損失另有比較,不列入這個計數。這是兩批紀錄的計數差異,不能據此認定兩批使用相同狀態。
  • 公開摘要不含模型權重、保存點與完整原始紀錄,無法只靠公開 repo 重現完整流程;學術審查或合作討論時可提供核對。

失敗與未完成

  • R15:兩組真模型嘗試自然結束,成本與執行安全通過審查,但有效方法的保存、獨立執行與新題比較都沒有完成。執行安全通過不等於方法能力通過。
  • 完整追蹤開/關的核對未完成。最近一次開啟追蹤的診斷達 10,800 秒上限,先後收到 SIGINT、SIGTERM,以 -15 結束;耗時原因未判定。
  • 新增五個機率算子在真模型研究參數上的梯度與更新等價,尚未核對。
  • 9B 底座的 Python 前向、反向與更新尚未完成;已盤點 799 份參數,盤點不等於能執行。
  • sqrt 新候選的 GPU 核對、BF16 機率運算與完整邊界待驗。修正後的文字生成候選通過 CPU 預檢,GPU 尚未啟動。

作者與 AI 分工

郭俊逸負責研究方向、專案整合、範圍與判準決定,以及執行授權。AI 工具協助程式實作、文件草擬與來源交叉核對;本期週報也由 AI 協助整理;作者對公開內容與研究判準負責。開源模型與程式的來源及授權見個人貢獻與來源。這些協助不代表小麥模型自主完成研究。

下一步

  • 先整理五個新算子的真梯度與更新對照、sqrt 與精度邊界,再拆解追蹤的耗時;任何新實跑都事先定好來源、保存點、預算與判準,不重跑同一版失敗。
  • 文字生成通過真模型檢查後,再測新版 R15 的方法執行、保存、重啟與新題比較。9B 全部改寫另走分層路線,不是 R15 的前置條件。
  • 本期是募資前的先行紀錄,不表示募資成功或回饋已開始。NT$300「支持小麥」方案規劃在六個月開發期間每週公開進度、每月一版整合成果,另每月寄送白話摘要共六份。初步排程是 2027 年 2–7 月開發、8 月結案,前提是募資成功、款項與運算資源於 2027 年 1 月底到位。

核對來源

所有研究週報