2. 环境搭建:把吃饭的家伙先支棱起来
大家好,我是老张。做这行的第一天我就明白一个道理:环境搭不好,后面全白搞。搞分子生成,说白了就是跟化学空间、图神经网络、概率分布这些东西打交道。你想想看,要是连RDKit都装不上,PyTorch报错跟报菜名似的,哪还有心思调模型?
我个人习惯,一开始就把环境理得清清楚楚。这节课我们就把Python、RDKit、PyTorch/TensorFlow这些核心工具一股脑儿装好,顺带搞定GPU加速。嗯,一步到位。
2.1 Python 环境:选对版本,少走弯路
做分子生成,我个人建议用 Python 3.8 到 3.11 之间的版本。为什么?RDKit 和 PyTorch 的 stable 版本主要支持这个区间。你非得整 Python 3.12 或 3.13,那可能会碰到某些第三方扩展包还没适配,没必要给自己找麻烦。
我推荐用 Anaconda 来管理 Python 环境。它自带 conda 包管理器,能省掉一堆底层依赖的麻烦。尤其是 RDKit,用 conda 装比 pip 省心多了。
安装步骤很简单:
- 去 Anaconda 官网 下载对应系统的安装包(Windows/macOS/Linux)
- 一路默认安装,记得勾选「Add Anaconda to my PATH」(如果你熟悉命令行)
- 打开终端(Windows 用 Anaconda Prompt),验证安装
conda --version
python --version
输出应该是类似这样的:
conda 23.11.0
Python 3.11.5
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 |
+-----------------------------------------------------------------------------+
我曾经在一个客户服务器上,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 会自动匹配) |
好了,环境搞定了。你的机器现在是一台真正的「分子生成工作站」了。接下来我们可以开始写代码,做真正的分子生成实战了。