ABACUS 专题

ABACUS:生成机器学习哈密顿量标签

以十个Si双原子晶胞演示DFT矩阵输出、固定数据划分、格式转换与两种框架的数据准备。

更新于 2026-11-12约 5 分钟阅读按任务与环境选择适用配置
阅读本篇目录

机器学习哈密顿量需要的不只是总能量和原子力,还需要同一轨道基组下的实空间哈密顿量H(R)和重叠矩阵S(R)。后面由它们重建H(k)、S(k),求解广义本征值问题获得能带。

本例在鸢算科技集群实际计算了10个Si双原子晶胞,使用相同赝势、SZ轨道和电子占据方式。晶格参数覆盖5.33–5.50Å,训练前固定划分为6个训练、2个验证、2个独立测试结构。它是小范围流程示例;SZ基组和稀疏k网格没有达到硅材料能带的生产精度,不能拿这个小模型直接研究缺陷、表面或其他元素。

下载输入、矩阵、两种框架数据与参考结果。

unzip abacus-ml-labels-wave695-*.zip
cd abacus-ml-labels
bash results.sh
bash plot.sh

十个结构的数据划分和矩阵重建比较

1. 先决定训练和测试结构#

用途 编号 常规立方晶格参数/Å
训练 Si-00至Si-05 5.33、5.36、5.40、5.43、5.47、5.50
验证、选择模型 Si-06、Si-07 5.38、5.45
独立测试 Si-08、Si-09 5.35、5.48

测试结构不用于训练、学习率调整或挑选模型。所有结构采用相同Gaussian展宽0.01 Ry,不能把固定占据和展宽占据产生的标签混合起来。

2. 生成ABACUS输入#

重新计算需要ABACUS个人RI/LCAO环境与机器学习个人环境。ABACUS固定beta10源码,C/C++使用icx/icpx 2024.2,Intel MPI 2021.13和顺序MKL 2024.2,LCAO使用ELPA;运行每个结构1个MPI进程、1个线程。

bash use-tools.sh ../abacus-ml-env ../abacus-ri-env/toolchain
bash prepare.sh
cat inputs/Si-03/INPUT
cat inputs/Si-03/STRU
cat inputs/Si-03/KPT

prepare.sh从固定ABACUS源码中的公开测试资源复制相同赝势和轨道文件。以Si-03为例,完整INPUT如下:

INPUT_PARAMETERS
suffix labels
calculation scf
basis_type lcao
ntype 1
nspin 1
nelec 8
nbands 8
ecutwfc 100
scf_thr 1e-6
scf_nmax 160
dft_functional pbe
symmetry -1
ks_solver genelpa
smearing_method gauss
smearing_sigma 0.01
mixing_type broyden
mixing_beta 0.3
cal_force 0
cal_stress 0
out_mat_hs 1 12
out_wfc_lcao 1
out_hsr 1 12
out_chg 1 12
out_element_info 1

out_hsr 1 12输出实空间H、S矩阵,保留12位精度;out_mat_hs 1 12还输出k空间矩阵方便比较。scf_thr 1e-6是电子收敛标准。smearing_sigma单位为Ry。不要在换体系后机械沿用8条能带或同一轨道文件。

完整STRU:

ATOMIC_SPECIES
Si 28.0855 Si_dojo_nsoc.upf

NUMERICAL_ORBITAL
Si_dojo_6au_sz.orb

LATTICE_CONSTANT
1.889726877774355

LATTICE_VECTORS
0 2.71500000 2.71500000
2.71500000 0 2.71500000
2.71500000 2.71500000 0

ATOMIC_POSITIONS
Direct
Si
0
2
0.000000000000000 0.000000000000000 0.000000000000000 1 1 1
0.25 0.25 0.25 1 1 1

这里使用2原子的原胞,三个晶格矢量以常规立方晶格参数的一半组成;a=5.43Å不意味着三个原胞矢量长度都等于5.43Å。位置以Direct分数坐标给出。LATTICE_CONSTANT使用Bohr,使其与以Å列出的矢量相配。

完整KPT:

K_POINTS
0
Gamma
2 2 2 0 0 0

这是2×2×2均匀网格的SCF标签,不是高对称能带路径。

3. 提交并检查标签#

sbatch labels.slurm
squeue -u "$USER"

CPU节点恢复可用后使用上述CPU分区脚本;参考数据已经随包提供,查看和训练参考模型不必等待重新计算。作业依次计算10个结构,并生成analysis-gaussian/Si-label-summary.csv。

cat analysis-gaussian/Si-label-summary.csv

每个结构都应有电子收敛标记。矩阵维数均为8,即2个Si各4个s+p轨道。参考数据中,H(R)/S(R)傅里叶重建的本征值与原生8个k点、每点8条能带最大相差约8.6×10⁻¹² eV。

4. 转成框架数据#

计算和分析结束后:

bash convert.sh

转换分两个独立子进程调用DeePTB、DeepH原生读取器,避免依赖混用。配套转换处理新版CSR的表头与换行,以及旧读取器要求的字段名称;原始输出不覆盖,数字和轨道物理含义不改。

H以Ry输出,训练标签转成eV;S无量纲。DeePTB与DeepH使用的实球谐轨道顺序不同,不能把一个框架的HDF5直接改名交给另一个。

目录 用途
deeptb-data/ 随包提供的DeePTB参考数据
deeph-data/ 随包提供的DeepH完整参考矩阵
deeph-geometry-data/ DeepH按几何7Å半径建图的训练数据
deeptb-parsed-compatible-v2/ 自己重新计算、转换后的DeePTB数据
deeph-parsed-compatible/ 自己重新计算、转换后的DeepH数据

DeepH图只使用元素、原子位置、晶胞和7Å半径。CSR明确省略的零块可表示为已知零,但不能把未知DFT结果补成零。半径之外的小H矩阵块也有截断误差;本例另行检查并保留完整参考矩阵,后续能带与完整参考比较。

5. 接着做训练#

转到DeePTB或DeepH。默认使用包内参考数据;如果要用自己重新生成的数据,DeePTB准备脚本优先读取新转换目录,DeepH训练读取自己生成的deeph-geometry-data。需要比较新测试结构时,也要把DeepH完整参考数据路径改为对应的新目录,不能拿旧矩阵充当新结构参考。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗