12-slater-determinant 问答笔记¶
Q1:缩到 N 个 3 维后,对应的存储复杂度怎么变化?请给出计算细节¶
原文:"从'任意 3N 维反对称函数'缩到'N 个 3 维(+自旋)单电子函数 \(\phi_i\) 的结构化组合'"
这是 DFT 整条化简链上最关键的一步压缩——从指数到线性。
三种存储方式的公式对比¶
| 方式 | 存储的对象 | 公式 | 增长类型 |
|---|---|---|---|
| 1. 暴力存多体波函数 | \(\psi_e(\vec{r}_1, ..., \vec{r}_N)\) 的全空间取值 | \(g^{3N} \cdot 2\)(空间和自旋分开存) | 指数 \(\propto g^{3N}\) |
| 2. Slater 行列式(化简 2) | \(N\) 个单电子轨道 \(\phi_i(\vec{r}, s)\) | \(2 \cdot N \cdot g^3\) | 线性 \(\propto N\) |
| 3. Kohn-Sham + 密度(化简 3–4) | 电子密度 \(\rho(\vec{r})\) + \(N\) 个 KS 轨道 | \(g^3 + 2Ng^3\) | 线性 \(\propto N\) |
其中每维网格 \(g\)(如 100),每复数按 16 字节存。
具体数值代入(g = 100,每复数 16 字节)¶
| N | 方式 1(暴力) | 方式 2(Slater) | 压缩比 |
|---|---|---|---|
| 2(He) | \(10^{12}\) 复数 ≈ 16 TB | \(2 \times 2 \times 10^6 = 4 \times 10^6\) 复数 ≈ 64 MB | \(2.5 \times 10^5\) 倍 |
| 8(Si 原胞) | \(10^{48}\) 复数(天文) | \(2 \times 8 \times 10^6 = 1.6 \times 10^7\) 复数 ≈ 256 MB | \(6 \times 10^{40}\) 倍 |
| 10(CH₄ 价电子) | \(10^{60}\)(荒谬) | \(2 \times 10 \times 10^6 = 2 \times 10^7\) 复数 ≈ 320 MB | \(5 \times 10^{52}\) 倍 |
| 100(中等分子) | \(10^{600}\)(无意义) | \(2 \times 100 \times 10^6 = 2 \times 10^8\) 复数 ≈ 3.2 GB | \(5 \times 10^{591}\) 倍 |
计算细节详解¶
方式 1:暴力存 \(\psi_e(\vec{r}_1, s_1, \ldots, \vec{r}_N, s_N)\)¶
输入的维度构成: - 每个电子有 3 个空间维度(\(x_i, y_i, z_i\)) - 每个电子有 1 个自旋维度(\(s_i \in \{\uparrow, \downarrow\}\),2 个取值) - 所以完整输入 = \((3N\) 空间 \(+ N\) 自旋\()\) 维
每维离散化为 \(g\) 格点(空间)或 2 格点(自旋),输出是复数:
自旋部分贡献 \(2^N\)——对 N=10 是 \(1024\) 倍,不是主导项;主导项是空间的 \(g^{3N}\)。
方式 2:Slater 行列式¶
Slater 行列式完全由 \(N\) 个单电子轨道 \(\phi_1, ..., \phi_N\) 决定:
只存轨道即可(行列式是关于轨道的结构化函数,不需单独存)。
每个轨道 \(\phi_i(\vec{r}, s)\) 是 3 空间维度 + 1 自旋维度的函数:
(\(g^3\) 空间格点 × 2 自旋 × 2 实数 × 8 字节)
\(N\) 个轨道总存储:\(N \cdot 32 g^3\) 字节。
关键数学:为什么不是 \(g^{3N}\) 而是 \(N \cdot g^3\)¶
这是两种不同的"参数化":
- 方式 1(暴力):把 \(\psi\) 当作完全任意的 3N 维函数,在 3N 维空间每个点存一个值 → \(g^{3N}\) 个值
- 方式 2(Slater):通过结构化假设(行列式形式),只需 N 个 3D 轨道就能重建整个 \(\psi\) → \(N \cdot g^3\) 个值
本质是从"无结构查表"变成"参数化函数"。
ML 类比: - 方式 1 像 KNN,存所有训练样本 - 方式 2 像参数化模型,存 \(N\) 个"基函数"的系数
计算复杂度(不仅是存储)¶
压缩的不只是存储,更重要的是可以算:
| 操作 | 方式 1(暴力) | 方式 2(Slater) |
|---|---|---|
| 算期望值 \(\langle \hat{H} \rangle\) | \(O(g^{3N})\) 次积分 | \(O(N^2 g^3)\)(HF 交换最贵项) |
| 算密度 \(\rho(\vec{r})\) | \(O(g^{3N})\) 的积分 | \(O(N g^3)\)(直接求和 $\sum |
| 变分优化一步 | \(O(g^{3N})\) 梯度计算 | \(O(N^2 g^3)\) 梯度计算 |
从指数爆炸降到 \(N^2\) 多项式——这是 DFT 和 HF 能实际运行的根本原因。
实际 QE 中的数字(Si 原胞)¶
Si 原胞 8 价电子,QE 用平面波基组(化简 8)进一步压缩:
| 量 | 值 |
|---|---|
| 有效维度 | \(N_b \sim 2000\) 个平面波(不是 \(g^3 = 10^6\) 网格点) |
| KS 轨道数 | \(N_{orb} \sim 16\)(8 价电子 + buffer) |
| 单个轨道存储 | \(N_b \times 2 \times 16\) 字节 ≈ 64 KB |
| 所有轨道(一个 k 点) | \(64 \times 16 = 1\) MB |
| 所有 k 点(~30 个不可约) | ~30 MB |
| KS Hamiltonian 矩阵 | \(N_b \times N_b\) 复数 ≈ 32 MB |
| 每次对角化 FLOPS | \(O(N_b^3) \sim 10^{10}\) |
整个计算内存峰值约几百 MB,而暴力方法是 \(10^{48}\) 复数——差 \(10^{40}\) 个数量级。
化简链总账(把这一步放到全局看)¶
┌─────────────────────────────────────────────────────────┐
│ 暴力存多体波函数 O(g^(3N)) ← 指数 │
│ │ │
│ 化简 2 Slater 行列式 │ 从任意反对称函数 → N 个轨道 │
│ ↓ │
│ 存 N 个单电子轨道 O(N · g^3) ← 线性 │
│ │ │
│ 化简 3 HK 定理 │ 把 N 个轨道的信息压到 3 维密度 │
│ ↓ │
│ 存电子密度(+ KS 轨道) O(g^3 + N · g^3) ← 还是线性 │
│ │ │
│ 化简 6–10 基组 + k 采样 │ 从网格 → 傅里叶系数 │
│ ↓ │
│ 平面波系数 O(N_PW · N_orb · N_k) ≈ 10^6 │
│ │
│ 最终 DFT 计算:几百 MB 存储 + 秒–分钟 CPU │
└─────────────────────────────────────────────────────────┘
化简 2 这一步的贡献:把"指数爆炸"打掉——从这里开始一切都在多项式复杂度里。
后面化简 3–10 继续把常数项压小,但指数爆炸的问题在 Slater 这步就解决了。所以 Carleo & Troyer 2017 的神经网络波函数、MPS 等方法本质都是在找"比 Slater 更灵活但仍是多项式存储"的表示。
代价¶
免费午餐不存在。Slater 行列式压到 \(N \cdot g^3\) 的代价:
- 只能表示单参考电子态(描述不了强关联、多组态系统)
- 真实基态一般是多 Slater 线性组合 \(\Psi_0 = \sum_I c_I \Psi_I^{\text{Slater}}\)
- 错误能量典型 ~几 eV/原子(HF 误差)
- DFT 通过 \(E_{xc}\) 修正把这部分追回来(化简 5)
所以化简 2 只是个子空间限制——从"所有反对称函数"到"单 Slater 函数"——付出的代价交给化简 5 的 XC 泛函去补救。
本轮 1 个问题速览¶
| # | 主题 | 关键数字 |
|---|---|---|
| Q1 | Slater 行列式的存储复杂度 | 从 \(O(g^{3N})\)(指数)到 \(O(N \cdot g^3)\)(线性);Si 原胞从 \(10^{48}\) 降到几百 MB,压缩 \(10^{40}\)+ 倍;这是整条化简链上打掉指数爆炸的关键一步 |
Q2:这一步有什么 LLM 需要完成的任务吗?¶
Slater 行列式本身是 DFT 框架里的结构性假设,表面上不需要 LLM 参与。但它映射到 QE 输入时有一组参数控制"用什么样的 Slater 行列式"——这些参数 LLM 必须根据材料类型决定。设错会让计算塌到非物理解。
与 Slater 相关的 QE 输入参数¶
| 参数 | 含义 | LLM 需要推断 |
|---|---|---|
nbnd |
计算的 KS 轨道数(= Slater 行列式里的行数) | 价电子数 / 2 + buffer |
nspin |
自旋处理方式 | 1(配对)/ 2(自旋极化) |
starting_magnetization(i) |
每类原子的初始磁矩 | 磁性材料必须设,非磁可不设 |
occupations |
占据方式 | fixed / smearing / tetrahedra |
noncolin + lspinorb |
非共线磁性 + 自旋轨道耦合 | 拓扑/重原子材料需要 |
tot_charge |
总电荷 | 离子/带电体系 |
tot_magnetization |
总磁矩约束 | 特定自旋态想固定时 |
按材料类别看 LLM 需要做的判断¶
金属(Al, Cu, Fe, W 等)
- 必须 occupations='smearing' + smearing='mv' 或 'gaussian'
- degauss=0.01–0.02 Ry
- 失败模式:忘加 smearing → SCF 在费米面附近震荡,永远不收敛
- benchmark 里 10 种金属都要处理这个
磁性(Fe, Co, Ni, NiO, MnO, Cr₂O₃ 等)
- 必须 nspin=2
- 必须设合理的 starting_magnetization(i)(Fe ~1.0, Co ~0.6, Ni ~0.3)
- 反铁磁(NiO, MnO)要在不同原子位上设正负交替的初始磁矩(需超胞)
- 失败模式:
- 忘 nspin=2 → 塌到非磁解(能量差几百 meV,结构也可能错)
- 初始磁矩设 0 → 对称性保护让 SCF 留在非磁极小
- AFM 没破缺对称 → 得到 FM 或非磁错解
- benchmark 里磁性类 LLM 通过率 <6%,主要就是这些参数搞砸
拓扑 / 重原子(Bi, Bi₂Se₃, SnTe, HgTe, Au, Pb)
- 必须 noncolin=.true. + lspinorb=.true.
- 必须用全相对论(FR)赝势(PseudoDojo/FR_v0.4/ 目录)
- 开 SOC 后 Slater 行列式变成 spinor 形式(每个"轨道"是 2 分量旋量)
- 失败模式:用普通 SR 赝势 + lspinorb=.true. → QE 静默忽略 SOC,能带错
半导体/绝缘体(Si, NaCl 等)
- occupations='fixed'(默认)通常够
- nspin=1(非磁)
- nbnd 默认等于价电子数 / 2,够用
- 最简单的一类,LLM 容易做对
价带-导带边界需要分析(band gap, DOS 任务)
- nbnd 需要加 buffer(比如 +10–20 条空带)
- 不加 buffer → 只能看到价带,算不出带隙
benchmark 中的具体映射¶
看 00-simplification-chain.md 的对应表,这步参数出现在 QE 输入的 &SYSTEM 块:
&SYSTEM
ibrav = 2 ! 化简 7
celldm(1) = 10.20 ! 化简 7
nat = 2
ntyp = 1
ecutwfc = 40.0 ! 化简 8
ecutrho = 320.0 ! 化简 8
nbnd = 8 ! ← 化简 2 的 LLM 任务
nspin = 2 ! ← 化简 2 的 LLM 任务
starting_magnetization(1) = 0.5 ! ← 化简 2 的 LLM 任务
occupations = 'smearing' ! ← 化简 2 的 LLM 任务
smearing = 'mv'
degauss = 0.02
noncolin = .true. ! ← 化简 2 的 LLM 任务(拓扑)
lspinorb = .true. ! ← 化简 2 的 LLM 任务(拓扑)
/
LLM 必须从 prompt 里的材料名 + 类别信息(如 "Fe, ferromagnetic metal"、"Bi₂Se₃, topological insulator")推断这些参数该怎么设。
评分中的体现¶
| 评分字段 | 对应化简 2 的 LLM 任务做对后才能算准 |
|---|---|
| 总能量 | 磁性体系 nspin=2 + 对的初始磁矩 |
弛豫结构 a, b, c |
磁性体系磁矩正确才能给出正确力/应力 |
| 空间群 | AFM 破缺对称性导致"磁性空间群" ≠ 结构空间群——评分字段可能错 |
| (未来)磁矩 | nspin=2 + starting magnetization 必须对 |
经验总结:化简 2 的 LLM 能力考查三道关¶
- 识别对称性需求:材料是否磁性/拓扑/自旋轨道敏感?
- 设对初始条件:
starting_magnetization、noncolin等必须破缺对称性 - 配对赝势:SOC 要 FR 赝势,否则静默失败
这三项做不对,benchmark 评分就会直接错——尤其在磁性(10 种)和拓扑(10 种)两个类别,占 100 材料里的 20%。论文观察到磁性类通过率最低(<6%),根因就在这一步的 LLM 推断失败率高。
小结¶
Slater 行列式本身是数学结构(LLM 不参与),但它在 QE 里通过一组自旋/占据/磁性参数控制"具体长什么样"——这些参数 LLM 必须从材料类型推断。
| 任务层面 | LLM 要做什么 |
|---|---|
| 数学框架 | 不管(固定用 Slater) |
| QE 参数映射 | nbnd, nspin, starting_magnetization, occupations, noncolin, lspinorb 等都要 LLM 根据材料类别决定 |
| benchmark 考查 | 磁性类 + 拓扑类材料集中考查这一步 |
从这个角度看,化简 2 不是"LLM 无关"的一步,反而是区分 LLM 能力高低的关键环节之一。
| # | 主题 | 核心 |
|---|---|---|
| Q2 | Slater 层面 LLM 的任务 | 映射到 QE 的一组自旋/占据/磁性参数(nspin, starting_magnetization, noncolin, lspinorb, occupations, nbnd 等);benchmark 磁性(<6% 通过率)和拓扑类集中考查 |