Skip to content

決策記錄:PR #30 → PR #31 重寫的精度回歸分析與修復路線 #36

@thc1006

Description

@thc1006

背景

PR #30(leo07010)提交了 HI-NQS v3 演算法,在 C2H2 (24Q) 上達到 -76.025 Ha。該 PR 有 3 個 API 崩潰 bug、硬 import optional dependency、刪除向後相容性,因此由我們重寫為 PR #31

PR #31 初期精度顯著退化:

系統 PR #30 PR #31 (初期) 差距
C2H2 24Q -76.0245 Ha (9,091 configs) -75.9294 Ha (3,102 configs) 96 mHa
N₂ 40Q 未測試 -109.0299 Ha (3,830 configs) vs CASSCF: 126 mHa

根因分析

精度差距來自:

  1. 缺少 IBM solve_fermion:PR feat: HI-NQS v3 with PT2 selection + PySCF FCI + sparse SCI + FCIDUMP #30 用的 α×β Cartesian product + factored Davidson,我們用 gpu_solve_fermion(無 Cartesian product),有效空間差 10-100 倍
  2. 取樣量不足:2000 vs 5000 samples/iter
  3. S-CORE 不適用:量子硬體噪聲修復,對 NQS 樣本無效且導致 NH₃ 1.5hr

決策與執行結果

✅ 方案 B(IBM solve_fermion 整合)— 成功

自動啟用 IBM solver,α/β marginals 做 teacher weights,移除 S-CORE,加 nuclear_repulsion

最終結果(PR #31 修復後 + SCI 對比,充足參數)

C2H2 24Q — HI-NQS 超越 SCI:

方法 能量 (Ha) 組態數 時間
SCI(自然收斂) -76.0245276 7,406 1,088s
HI-NQS IBM(5K samples) -76.0245738 5,432 456s
PR #30 HI-NQS v3 -76.0245715 9,091 141s

HI-NQS 低 SCI 0.46 mHa,低 PR #30 v3 0.02 mHa,快 SCI 2.4 倍。

N₂ 40Q — SCI 更低但代價巨大:

方法 能量 (Ha) 組態數 時間 RAM
SCI(50K 上限,未收斂) -109.2132 50,000 3h45m 60 GB
HI-NQS IBM(5K samples) -109.1844 6,868 20 min ~2 GB

SCI 低 28.8 mHa,但 11.5x 時間、30x 記憶體。

小分子驗證: H₂O FCI exact, NH₃ FCI exact (S-CORE 移除後 1.5hr → 5s)

教訓

  1. 重寫不等於改善 — 程式碼品質提升但精度下降是倒退
  2. 先建立 benchmark regression test — 在重寫前應該先固定目標精度
  3. 理解演算法再重寫 — Cartesian product 是 solve_fermion 的核心優勢
  4. 不同系統規模需要不同策略 — 24Q 的最佳做法在 40Q 不一定可行
  5. S-CORE 是量子硬體專用 — 不要在經典 NQS 樣本上使用

行動項目

相關

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions