2. 环境搭建:把吃饭的家伙先支棱起来

大家好,我是老张。做这行的第一天我就明白一个道理:环境搭不好,后面全白搞。搞分子生成,说白了就是跟化学空间、图神经网络、概率分布这些东西打交道。你想想看,要是连RDKit都装不上,PyTorch报错跟报菜名似的,哪还有心思调模型?

我个人习惯,一开始就把环境理得清清楚楚。这节课我们就把Python、RDKit、PyTorch/TensorFlow这些核心工具一股脑儿装好,顺带搞定GPU加速。嗯,一步到位。

环境搭建拓扑图 Python 3.8-3.11 conda / venv RDKit · NumPy PyTorch / TensorFlow CUDA + cuDNN 验证脚本:import all 依赖关系:Python → 虚拟环境 → RDKit/NumPy → 深度学习框架 → GPU → 全链路验证

2.1 Python 环境:选对版本,少走弯路

做分子生成,我个人建议用 Python 3.8 到 3.11 之间的版本。为什么?RDKit 和 PyTorch 的 stable 版本主要支持这个区间。你非得整 Python 3.12 或 3.13,那可能会碰到某些第三方扩展包还没适配,没必要给自己找麻烦。

我推荐用 Anaconda 来管理 Python 环境。它自带 conda 包管理器,能省掉一堆底层依赖的麻烦。尤其是 RDKit,用 conda 装比 pip 省心多了。

我的习惯: 每做一个新项目,都新建一个干净的 conda 环境。这样项目之间不会互相污染,版本冲突了删了重建就行,十分钟搞定。

安装步骤很简单:

  1. 去 Anaconda 官网 下载对应系统的安装包(Windows/macOS/Linux)
  2. 一路默认安装,记得勾选「Add Anaconda to my PATH」(如果你熟悉命令行)
  3. 打开终端(Windows 用 Anaconda Prompt),验证安装
conda --version
python --version

输出应该是类似这样的:

conda 23.11.0
Python 3.11.5
注意: Windows 用户装完 Anaconda 后,如果命令行找不到 conda,记得重启一下终端或把 Anaconda 的 Scripts 目录加到 PATH 里。

2.2 创建虚拟环境:隔离是最好的保护

这里有个小经验。我刚开始做项目的时候,所有库都装在 base 环境里,结果有一次装了一个新版本的 rdkit,直接把之前跑通的分子指纹代码给搞崩了。那叫一个酸爽。从那以后,每个项目我必建独立环境。

创建分子生成项目专用环境:

conda create -n molgen python=3.10 -y
conda activate molgen

看,就这么简单。环境名叫 molgen,Python 3.10。你也可以换成 3.9 或 3.11,但最好跟团队保持一致。

2.3 RDKit 安装:分子处理的核心武器

RDKit 是分子生成 Pipeline 的基石。读分子、写分子、计算指纹、做子结构匹配、画分子图,全得靠它。我个人倾向于用 conda 安装,因为它会自动拉好 OpenSSL、Boost 这些底层依赖。

在 molgen 环境里执行:

conda activate molgen
conda install -c conda-forge rdkit -y

装完之后,我们来验证一下能不能用。写个小脚本:

from rdkit import Chem
from rdkit.Chem import Draw

# 随便创建一个分子
mol = Chem.MolFromSmiles('CCO')
print(Chem.MolToSmiles(mol))
# 应该输出 CCO

跑一下:

python -c "from rdkit import Chem; print(Chem.MolToSmiles(Chem.MolFromSmiles('CCO')))"

如果输出 CCO,说明 RDKit 装好了。我曾遇到过有些 Linux 系统上 RDKit 报 libX11 相关的错,那多半是缺了图形界面依赖,用 apt-get install libx11-dev 之类的东西补上就行。

2.4 PyTorch 与 TensorFlow:二选一还是双持?

分子生成任务中,PyTorch 是绝对的主力选手。你看到的 GAN、VAE、Normalizing Flow、Diffusion 模型,大部分都是用 PyTorch 实现的。TensorFlow 当然也能做,但生态上稍微吃亏一点。

我个人更倾向 PyTorch,但为了课程全面性,我两个都讲。

安装 PyTorch

先确认你手里的 GPU 型号,然后再挑命令。去 PyTorch 官网 找到对应的 CUDA 版本。比如常见的 CUDA 11.8 或 12.1:

conda activate molgen
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

如果你只有 CPU,去掉 CUDA 后缀即可:

pip install torch torchvision torchaudio

安装 TensorFlow

TensorFlow 的安装稍微朴实一点:

pip install tensorflow

如果你想用 GPU 版本,注意要提前装好 CUDA 和 cuDNN(后面会讲)。

2.5 GPU 环境配置:不白嫖算力就是浪费

做分子生成训练,动辄生成几万几十万个分子。你要是用 CPU 跑,一个 batch 要等半分钟,迭代几百轮……不如直接关机睡觉。GPU 加速是刚需。

GPU 配置说白了就是三件事:

  • 显卡驱动(NVIDIA Driver)
  • CUDA Toolkit
  • cuDNN(深度神经网络加速库)

第一步:检查显卡驱动

nvidia-smi

如果看到类似下面的输出,说明驱动正常:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.08    Driver Version: 545.23.08    CUDA Version: 12.3     |
+-----------------------------------------------------------------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
+-----------------------------------------------------------------------------+
|   0  NVIDIA GeForce RTX 4090   Off | 00000000:01:00.0  On |                  Off |
+-----------------------------------------------------------------------------+
关键数字: 看右上角的 CUDA Version,那是你驱动支持的最高 CUDA 版本。比如显示 12.3,那你装 CUDA 12.x 都没问题。如果驱动版本太老,先去官网更新一下。

我曾经在一个客户服务器上,nvidia-smi 能看到显卡,但 PyTorch 就是调不动 GPU。查了半下午,发现是 CUDA Toolkit 没装,驱动只是个空壳子。

第二步:安装 CUDA Toolkit

去 NVIDIA 官网下载对应的 CUDA Toolkit 安装包。建议选 runfile (local) 方式,不要用 deb 或 exe,这样你能控制安装路径。用 conda 安装也可以:

conda install cudatoolkit=11.8 -c conda-forge

或者直接用 NVIDIA 官方 runfile:

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

装完后配一下环境变量:

export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

第三步:安装 cuDNN

cuDNN 需要 NVIDIA 开发者账号才能下载。你要嫌麻烦,也可以用 conda 装:

conda install cudnn -c conda-forge

2.6 全链路验证:一次跑通,心里有底

环境装完了,光说装了没用,得跑个完整的验证脚本。我习惯写一个文件,从 Python 版本到 RDKit 到深度学习框架到 GPU 全部测一遍:

import sys
import numpy as np
from rdkit import Chem

print(f"Python 版本: {sys.version}")

# 验证 RDKit
mol = Chem.MolFromSmiles('CCO')
print(f"RDKit 测试: {Chem.MolToSmiles(mol)}")

# 验证 PyTorch
try:
    import torch
    print(f"PyTorch 版本: {torch.__version__}")
    print(f"CUDA 可用: {torch.cuda.is_available()}")
    if torch.cuda.is_available():
        print(f"GPU 名称: {torch.cuda.get_device_name(0)}")
        # 做个简单张量运算验证
        a = torch.randn(3, 3).cuda()
        b = torch.randn(3, 3).cuda()
        c = a @ b
        print(f"GPU 张量运算测试通过: {c.shape}")
except ImportError:
    print("PyTorch 未安装")

# 验证 TensorFlow
try:
    import tensorflow as tf
    print(f"TensorFlow 版本: {tf.__version__}")
    gpus = tf.config.list_physical_devices('GPU')
    print(f"TensorFlow GPU 数量: {len(gpus)}")
    if gpus:
        print(f"GPU 名称: {gpus[0].name}")
except ImportError:
    print("TensorFlow 未安装")

print("✅ 环境验证全部完成 - 可以开始分子生成实战了!")
跑这个脚本之前: 确保你在 molgen 环境里。如果所有输出都正常,尤其是 torch.cuda.is_available() 返回 True,那你的环境就完美了。

2.7 常见问题速查表

这里我列几个我实际在项目中踩过的坑,你碰到了直接照方抓药就行。

现象 原因 解决方式
conda install 特别慢 默认源在国外 换清华或中科大镜像源
RDKit 导入报错 libssl.so OpenSSL 版本冲突 conda install -c conda-forge openssl
PyTorch 检测不到 GPU CUDA Toolkit 没装或版本不匹配 检查 nvidia-smi 的 CUDA 版本,重装对应 CUDA
TensorFlow 报 cudart64_*.dll 找不到 cuDNN 没装或路径不对 把 cuDNN 的 bin 目录加到 PATH
import torch 直接 segfault PyTorch 和 CUDA 版本不匹配 用 conda 重新装(conda 会自动匹配)
再啰嗦一句: 如果你用的是 Windows,装好 GPU 环境后记得把 CUDA 的 bin 目录(比如 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin)加到系统环境变量 PATH 里。不然很多底层库加载会找不到。

好了,环境搞定了。你的机器现在是一台真正的「分子生成工作站」了。接下来我们可以开始写代码,做真正的分子生成实战了。