← Back to list

化學資訊學實作:pySCF 與 GPU4PySCF — — 比 Psi4 更快的 DFT 計算

同樣的 DFT 精度,GPU 加速後比 Psi4 快 5–7 倍 — — pySCF 的安裝、工作流程與實測比較。

Chemistry with data magic · 2026-06-29 08:19 · 0 claps · 7.7 min read
#cheminformatics #dft #pyscf #psi4 #materials-informatics
Open on Medium ↗
Wiki topics: OPS · LLMOps & Inference

化學資訊學實作:pySCF 與 GPU4PySCF — — 比 Psi4 更快的 DFT 計算

同樣的 DFT 精度,GPU 加速後比 Psi4 快 5–7 倍 — — pySCF 的安裝、工作流程與實測比較。

在上一篇「化學資訊學實作:GFN2-xTB 的安裝與應用 — 與 Psi4 的速度與精度比較」中,我們用半經驗方法在 1 秒內完成了幾何優化。這次要進入精度更高的一層 — — pySCF + GPU4PySCF,一套純 Python 的 DFT 套件且支援GPU加速,安裝比 Psi4 簡單(直接 pip),在計算速度也更有優勢。

這是量子化學入門工具三部曲(Psi4 → xTB → pySCF)的最後一篇,重點在於說明 pySCF 在什麼情況下比 Psi4 更適合,以及如何在 Google Colab 的免費 T4 GPU 上使用。

pySCF 是什麼?與 Psi4 的定位比較

pySCF(Python-based Simulations of Chemistry Framework)是由 Qiming Sun 等人在 2018 年發表的開源量子化學套件,以純 Python(+ C 延伸)實作,涵蓋 HF、DFT、CCSD、CASSCF 等方法。GPU4PySCF 是其 CUDA 加速版本,可在 Google Colab 上的T4、L4、A100、H100 等 GPU 上執行。

與 Psi4 相比,pySCF 的主要優勢是安裝極為簡單(pip 一行),以及 GPU 加速支援 — — Psi4 目前沒有官方 GPU 版本。此外 pySCF 支援 NMR 化學位移計算(Psi4 不支援),在大分子的 Hessian 矩陣計算上也有 GPU 加速。

Google Colab 安裝:比 Psi4 簡單得多

Psi4 在 Colab 上需要 condacolab 或 miniconda,環境設置需要多步驟且容易因 kernel 重啟失敗。pySCF 直接 pip 安裝,GPU 版也只需一行,是目前在 Colab 上最容易上手的 DFT 套件。

# pySCF — CPU 版(pip,最簡單)
!pip install pyscf

# GPU4PySCF(需 CUDA 12,Colab A100/L4/T4 可用)
!pip install gpu4pyscf-cuda12x

# 驗證安裝
from pyscf import gto
from gpu4pyscf.dft import rks
print("pySCF + GPU4PySCF OK")

簡單計算範例:SMILES → DFT → HOMO-LUMO

pySCF 的工作流程與 Psi4 類似:使用 gto.Mole 定義分子,dft.RKS(或 GPU 版 gpu4pyscf.dft.rks.RKS)執行 SCF,然後直接從 mf.mo_energy 取出軌域能量。

from rdkit import Chem
from rdkit.Chem import AllChem
from pyscf import gto
from gpu4pyscf.dft import rks   # 改成 from pyscf.dft import rks 即為 CPU 版

# ── SMILES → pySCF Mole ───────────────────────────────────────────────
smiles = 'Cn1cnc2c1c(=O)n(c(=O)n2C)C'   # caffeine
mol_rd = Chem.AddHs(Chem.MolFromSmiles(smiles))
AllChem.EmbedMolecule(mol_rd, AllChem.ETKDGv3())
AllChem.MMFFOptimizeMolecule(mol_rd)

# 輸出 XYZ 字串給 pySCF
conf  = mol_rd.GetConformer()
atoms = [(mol_rd.GetAtomWithIdx(i).GetSymbol(),
          conf.GetAtomPosition(i)) for i in range(mol_rd.GetNumAtoms())]
atom_str = '; '.join(f'{sym} {p.x:.4f} {p.y:.4f} {p.z:.4f}' for sym, p in atoms)

# ── pySCF SCF(M06-2X/6-31+G(d,p))────────────────────────────────
mol_ps = gto.Mole()
mol_ps.atom  = atom_str
mol_ps.basis = '6-31+g(d,p)'
mol_ps.build()

mf = rks.RKS(mol_ps, xc='m06-2x').density_fit()
mf.max_cycle = 200
e_scf = mf.kernel()

# HOMO-LUMO gap
import numpy as np
mo_occ  = mf.mo_occ
mo_e    = mf.mo_energy
homo_ev = mo_e[mo_occ > 0][-1] * 27.2114
lumo_ev = mo_e[mo_occ == 0][0] * 27.2114
print(f'HOMO: {homo_ev:.3f} eV, LUMO: {lumo_ev:.3f} eV, Gap: {lumo_ev-homo_ev:.3f}

切換 CPU 版與 GPU 版只需改一行 import — — 這是 pySCF 設計上的一大優點,讓同一份程式碼可以在本地 CPU 開發、在 Colab GPU 上加速執行。

GPU 加速效能實測:從 T4 到 H100

以 B3LYP/6–31G(d) 幾何優化為基準,比較 Psi4 CPU、pySCF CPU 及各型 GPU 的計算時間:

各方法的幾何優化計算時間(大分子,~25 heavy atoms)及 Colab T4/L4/A100/H100 的加速比。

各方法的幾何優化計算時間(大分子,~25 heavy atoms)及 Colab T4/L4/A100/H100 的加速比。

關鍵洞察有三點。小分子(CO/甲醇、苯酚)方面,pySCF CPU 反而比 Psi4 CPU 慢,這是因為 pySCF 有初始化 overhead,在小分子上不划算;大分子方面,A100 GPU 的計算時間(53s)比 Psi4 CPU(289s)快 5.4 倍,H100 更達 7.4 倍;Colab 免費 T4 的表現(241s)已接近 Psi4 CPU 水準,在大多數入門場景下已夠用。

這個結果意味著:若分子超過 15–20 個重原子,配合付費版 Colab 並使用 GPU4PySCF,就能獲得可觀的加速;對於小分子計算,Psi4 CPU 仍然比較有效率。

HOMO-LUMO gap 與 UV-Vis 比較

四個分子的 HOMO-LUMO gap — — GFN2-xTB(黃)vs M06–2X pySCF(綠)。xTB 系統性偏低 3–4 eV。

四個分子的 HOMO-LUMO gap — — GFN2-xTB(黃)vs M06–2X pySCF(綠)。xTB 系統性偏低 3–4 eV。

上圖是對應上一篇 xTB 文章的結果:pySCF M06–2X 的絕對值比 xTB 高 3–4 eV,但兩者的相對排名高度一致(Pearson r > 0.99)。這再次確認了 xTB 作為「相對篩選」工具的可靠性,以及需要絕對精度時升級到 DFT 的必要性。

# ── TD-DFT UV-Vis(pySCF)────────────────────────────────────────────
from pyscf import tdscf

td = tdscf.TDDFT(mf)
td.nstates = 5   # 計算前 5 個激發態
td.kernel()

# 輸出波長與振子強度
for i, (e, f) in enumerate(zip(td.e, td.oscillator_strength())):
    wl = 45.5640 / e   # Hartree → nm(近似)
    print(f'S{i+1}: {wl:.1f} nm, f = {f:.4f}')

xTB、Psi4、pySCF的選用指南

量子化學工具三部曲的結論可以濃縮成一個選擇框架:

  • 需要快速篩選 > 1,000 個分子時用 xTB(幾秒一個)
  • 需要 DFT 精度且有 GPU(包含 Colab T4)時用 pySCF + GPU4PySCF
  • 在只有 CPU 環境或需要特定功能(如 CC耦合簇方法方法、廣泛 basis set 支援)時選 Psi4

xTB + DFT 的工作流管線:xTB 做幾何優化與大規模預篩選,保留前 5–10% 的候選,再用 pySCF 或 Psi4 DFT 精算性質、TD-DFT 計算光譜。換句話說,合理的組合使用可以在不犧牲精度的前提下,把計算效率提升 10 倍以上。

結語

pySCF 與 GPU4PySCF 代表著量子化學工具現代化的一個重要節點:DFT 計算不再被 conda 環境和 CPU 算力所限制,任何有 Google 帳號的研究者都能在 Colab 上免費使用 T4 GPU 跑 M06–2X/TD-DFT。

在化學資訊學的背景下,pySCF 最大的貢獻是讓「DFT 標籤生成」這個步驟變得更可及:不需要昂貴的本地計算集群,就能為 QSAR 訓練集補充量子化學描述符(HOMO-LUMO gap、偶極矩、TDDFT 激發能)。

至此,量子化學工具三部曲告一段落。下一個系列將把這三個工具整合進一條完整的計算驅動分子設計管線:xTB 預篩選 → pySCF DFT 精算 → QSAR 建模 → 主動學習優化。


메타데이터
post_id
34cb3e57f7b2
slug
化學資訊學實作-pyscf-與-gpu4pyscf-比-psi4-更快的-dft-計算-34cb3e57f7b2
url
https://medium.com/@cheninformatics/%E5%8C%96%E5%AD%B8%E8%B3%87%E8%A8%8A%E5%AD%B8%E5%AF%A6%E4%BD%9C-pyscf-%E8%88%87-gpu4pyscf-%E6%AF%94-psi4-%E6%9B%B4%E5%BF%AB%E7%9A%84-dft-%E8%A8%88%E7%AE%97-34cb3e57f7b2
canonical_url
https://medium.com/@cheninformatics/%E5%8C%96%E5%AD%B8%E8%B3%87%E8%A8%8A%E5%AD%B8%E5%AF%A6%E4%BD%9C-pyscf-%E8%88%87-gpu4pyscf-%E6%AF%94-psi4-%E6%9B%B4%E5%BF%AB%E7%9A%84-dft-%E8%A8%88%E7%AE%97-34cb3e57f7b2
author_url
https://medium.com/@cheninformatics
status
ok
fetched_at
2026-07-09 13:13:48