字节开源ByteQC:GPU加速大规模量子化学计算,助力材料、制药和催化领域研究

字节开源ByteQC,GPU加速量子化学计算工具集,实现大规模体系高精度模拟,助力材料等领域研究。

原文标题:大规模实用化量子化学计算曙光显现,ByteDance Research开源工具集ByteQC

原文作者:机器之心

冷月清谈:

字节跳动研究团队开源了ByteQC,一个基于GPU加速的大规模量子化学计算工具集。该工具集利用GPU强大的算力,显著提高了常用量子化学算法的计算速度,并结合前沿的量子嵌入方法,在保证高精度的同时,实现了大规模量子化学体系的模拟。

ByteQC针对GPU显存较小和架构差异等问题,进行了多项优化:

1. 引入高效计算库cuTENSR/cuTENSORMG,优化张量缩并计算。
2. 高效实现了周期性体系屏蔽计算的动态生产者-消费者模型和Fock矩阵构建中的竞态求和。
3. 通过缓存分析和原位操作,最大限度地减少了显存占用。

基准测试显示,ByteQC在多种量子化学算法上实现了显著的加速,例如单GPU可比100核CPU快60倍。此外,ByteQC的量子嵌入功能使其能够在保持高精度的情况下计算更大规模的体系,例如包含数千轨道的分子团簇和表面吸附问题。

怜星夜思:

1、ByteQC主要针对GPU平台进行优化,那么它在CPU平台上的性能如何?是否有针对CPU的优化计划?
2、文章提到了量子嵌入方法,这种方法在实际应用中有哪些优势和局限性?
3、相比于其他量子化学计算软件,例如Gaussian、ORCA等,ByteQC有哪些独特的优势和不足?

原文内容

机器之心发布

机器之心编辑部


真实化学体系包含大量的微观粒子,其精确的严格计算需要指数高的复杂度,对这些体系的模拟一直是材料、制药和催化等领域的难点和前沿。


为了解决这一问题,近日字节跳动 ByteDance Research 团队开发并开源了 ByteQC —— 基于 GPU 加速的大规模量子化学计算工具集。该工具集使用强大的 GPU 算力,大幅度加速了常见的量子化学算法,同时结合领域内前沿的量子嵌入方法实现了量子化学「黄金标准」精度下的大规模量子化学体系的模拟。论文以大尺寸分子团簇,表面吸附问题为例,展示了 ByteQC 在真实材料计算中的应用潜力。



  • 论文链接:https://arxiv.org/abs/2502.17963
  • 代码链接:https://github.com/bytedance/byteqc

该论文作者中还包括 NVIDIA 和北京大学的合作者。

摘要

在大规模体系中应用量子化学算法需要大量的计算资源,并且计算资源的需求随着体系规模和所需精度的提高而增长。字节团队开发并发展了开源项目 ByteQC(ByteDance Quantum Chemistry)。

在硬件层面,ByteQC 在现代 GPU 上高效实现了多种标准量子化学算法,包括平均场计算(Hartree-Fock 方法和密度泛函理论)以及后 Hartree-Fock 方法(如 Møller-Plesset 微扰理论、随机相位近似、耦合簇方法和量子蒙特卡洛方法)。

在算法层面,ByteQC 提供了一种量子嵌入方法,该方法在保持量子化学「黄金标准」精度的同时,显著扩展了可计算的体系规模。

图 1. ByteQC 软件架构

方法

GPU 的显存显著小于 CPU 内存,同时架构的不同导致很多 CPU 可以高效实现的复杂逻辑在 GPU 上很难实现。为了解决这些问题 ByteQC 在开发过程中主要使用了以下方法:

1. 引入高效计算库

张量缩并是量子化学计算的主要热点之一,为此作者团队引入了 NVIDIA 提供的高效张量计算库 cuTENSR/cuTENSORMG。该计算库在最小占用显存的前提下高效计算张量缩并。作者团队完善了相关的函数封装,将其引入到了 Python / Cupy 的生态中。

2. 高效实现复杂计算逻辑

在周期性体系屏蔽计算中需要在 GPU 上实现高效的动态生产者 - 消费者模型,作者团队提出使用动态的 warp 特例化高效实现。在平均场 Fock 矩阵构建中,涉及相邻任意多的线程竞态求和的问题。CUDA 自带求和函数并未针对该特殊情况优化,作者团队使用 warp 内的 shuffle 指令实现了高效地求和。

图 2. 基于 warp 特例化的生产者-消费者模型

图 3. 基于 warp 同步原语的相邻 7 个线程的竞态求和

3. 优化缓存和简单高效的原位操作

ByteQC 的诸多代码实现均进行了详细的缓存分析,最大限度地实现了缓存的复用,减少了显存需求。此外大量地使用 Cupy 提供的 kernel 接口,通过 CUDA kernel 实现了原位操作,减少了显存的占用。

结果

基准测试表明相比于 100 核 CPU,ByteQC 的标准量子化学算法最高可实现单 A100 GPU 60 倍加速,大多数模块的多卡标度可达到线性加速。对应可以单 GPU 计算的体系规模也大幅提升:

  • 耦合簇单、双激发(CCSD):1,610 轨道
  • 带微扰三重激发(CCSD (T)):1,380 轨道
  • 二阶 Møller-Plesset 微扰理论(MP2):11,040 轨道
  • 开放边界条件下的平均场计算:37,120 轨道
  • 周期边界条件下的平均场计算:超过 100,000 轨道
 
图 4. ByteQC 的子模块加速比(数据点)和计算规模(虚线)

此外,结合 ByteQC 中提供的量子嵌入功能,团队在 2,753 轨道的水团簇问题和 3,929 轨道的氮化硼表面水吸附问题上均实现了 CCSD (T) 水平的「黄金标准」精度的计算。

图 5. (左)水团簇结构和(右)氮化硼表面水吸附结构

总结

字节跳动 ByteDance Research 团队开发并开源的 ByteQC 软件包克服了 GPU 开发过程中显存受限,复杂逻辑难以高效实现的问题,实现了量子化学方法的高效 GPU 化。

此外,结合量子嵌入方法,ByteQC 可以在保持 CCSD (T) 的精度的前提下,计算更大的规模。通过这些创新和优化,ByteQC 有望成为推动量子化学领域发展的工具。

© THE END 
转载请联系本公众号获得授权
投稿或寻求报道:[email protected]

就ByteQC的介绍来看,它最大的优势在于GPU加速,可以显著提高计算效率,尤其是在处理大规模体系时。不足之处可能在于功能还不够完善,例如缺少一些常用的分析工具。

量子嵌入方法好像有很多种,比如密度矩阵嵌入理论(DMET)和动力学平均场理论(DMFT)。不同的方法可能有不同的适用范围和优缺点,需要根据具体的体系进行选择。

ByteQC是开源的,这对科研人员来说是一个很大的优势,可以方便地进行二次开发和定制。相比之下,Gaussian和ORCA等商业软件的成本较高,而且代码不公开。

关于量子嵌入方法,我的理解是它能够在保证计算精度的同时,显著降低计算复杂度,从而能够处理更大规模的量子化学体系。不过,它可能也存在一些局限性,比如如何选择合适的嵌入方案,以及如何评估嵌入方法引入的误差。

针对这个问题,我个人认为虽然ByteQC主要针对GPU优化,但在CPU上的表现应该也不会太差。毕竟很多底层算法是通用的,GPU只是加速了计算过程。不过,如果官方能提供一些CPU平台的性能数据就更好了,这样大家可以更直观地进行比较。

ByteQC的GitHub页面好像没有提到CPU的性能数据,我猜测可能是因为他们主要关注GPU平台。不过,如果未来能加入对CPU的支持或优化,相信会吸引更多用户。

从文章来看,ByteQC的核心在于利用GPU的并行计算能力来加速量子化学计算,所以它的设计理念更偏向于GPU平台。至于CPU上的性能,我估计不会是他们的主要关注点,毕竟CPU的并行计算能力相对较弱。

与Gaussian和ORCA这些成熟的量子化学软件相比,ByteQC还比较年轻,一些功能还在开发中。不过,它的发展潜力很大,值得关注。

我记得量子嵌入方法的核心思想是将一个大的量子体系分解成小的子体系,然后通过某种方式将子体系之间的相互作用考虑进去。这样就可以降低计算复杂度,同时还能保持一定的精度。