2. 环境搭建:Python、PyTorch与RDKit安装,虚拟环境配置,GPU支持验证
搞AI药物发现,环境搭不好,后面全是坑。我见过太多同学花一周配环境,最后发现GPU没用上,模型跑三天三夜白费功夫。这一章咱们就把地基打牢,一步到位。
2.1 为什么需要虚拟环境
说白了,虚拟环境就是给你的项目隔出一个小房间。每个项目有自己的Python版本、包依赖,互不干扰。
举个例子。你手头有两个项目:一个用PyTorch 1.13,另一个用PyTorch 2.0,它们依赖的CUDA版本还不一样。没有虚拟环境的话,你只能二选一,或者把系统搞得乱七八糟。我去年有个项目,就是因为在base环境里装了一堆包,最后依赖冲突到没法修,索性把整个Anaconda重装了——折腾一整天。
核心原则:每个项目一个独立环境,永远不要在base环境里装项目依赖。
2.2 Python版本选择
做ADMET建模,Python 3.9到3.11是目前最稳妥的选择。为什么这样说?
- Python 3.9:兼容性最好,老项目迁移首选
- Python 3.10:性能有提升,目前PyTorch官方推荐
- Python 3.11:速度更快,但部分老库可能还没适配
| Python版本 | PyTorch支持 | RDKit支持 | 推荐场景 |
|---|---|---|---|
| 3.9 | 稳定 | 稳定 | 迁移旧项目 |
| 3.10 | 稳定 | 稳定 | 新项目首选 |
| 3.11 | 部分版本 | 2023.03+ | 尝鲜或追求性能 |
我个人习惯用Python 3.10,平衡了兼容性和性能。你如果拿不准,也选3.10准没错。
2.3 虚拟环境配置实战
有两种主流方式:conda 和 venv。做药物化学相关的工作,我强烈推荐conda——它对RDKit这类有C++后端的包支持得更好。
2.3.1 安装Miniconda
去官网下载Miniconda。嗯,别下Anaconda,太大,里面一堆你用不到的包。
# 安装完成后,验证一下
conda --version
# 输出应该是类似:conda 23.10.0
2.3.2 创建虚拟环境
# 创建名为admet_env的环境,指定Python版本
conda create -n admet_env python=3.10
# 激活环境
conda activate admet_env
# 验证Python版本
python --version
小技巧:环境名别起太长,不然每次激活都要打一堆字。我常用缩写,比如"admet"、"dmpk"之类。
2.4 PyTorch安装与GPU支持
PyTorch是深度学习建模的核心。安装时最关键的,是匹配好CUDA版本。
2.4.1 查看你的GPU和CUDA能力
先搞清楚你机器上有什么硬件。我在项目中遇到过最头疼的事,就是在没有GPU的机器上装了GPU版PyTorch,一跑就报错。
# 查看NVIDIA驱动信息
nvidia-smi
# 输出中的CUDA Version就是驱动支持的最高版本
# 比如:CUDA Version: 12.1
2.4.2 安装PyTorch
去PyTorch官网(pytorch.org)用它的配置器生成安装命令。记住:一定要选对CUDA版本。
# 以CUDA 12.1为例
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# 或者用conda(推荐,依赖处理更好)
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
2.4.3 GPU支持验证
装完之后,别急着往下走。先跑个验证脚本,确保GPU真的能用。
python -c "import torch; print(torch.cuda.is_available())"
# 应该输出:True
python -c "import torch; print(torch.cuda.get_device_name(0))"
# 输出你的GPU型号,比如:NVIDIA GeForce RTX 4090
避坑指南:我曾经装完PyTorch后torch.cuda.is_available()返回False,折腾了两小时才发现是CUDA Toolkit版本和驱动不匹配。解决方法是先升级NVIDIA驱动,再重装PyTorch。驱动版本一定要 >= PyTorch要求的CUDA版本。
2.5 RDKit安装
RDKit是处理化学分子结构的核心工具。按我的经验,conda安装最省心。
# 在激活的环境中安装RDKit
conda install -c conda-forge rdkit
# 验证安装
python -c "from rdkit import Chem; print(Chem.MolFromSmiles('CCO'))"
# 输出应该是一个分子的内存地址,比如:
2.6 其他必备科学计算库
做ADMET建模,下面这些库也跑不掉,顺手装了吧。
# 科学计算基础
conda install numpy pandas scikit-learn scipy
# 可视化
conda install matplotlib seaborn
# 进度条(跑大模型的时候很有用)
pip install tqdm
# 数据处理
pip install openpyxl # 处理Excel文件
2.7 环境验证全流程
最后,把整个环境串起来验证一遍。我通常会写一个这样的脚本:
import sys
import torch
import numpy as np
from rdkit import Chem
print(f"Python版本: {sys.version}")
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)}")
print(f"CUDA版本: {torch.version.cuda}")
print(f"NumPy版本: {np.__version__}")
# 测试RDKit
mol = Chem.MolFromSmiles("CCO")
print(f"RDKit分子对象: {mol}")
# 测试PyTorch在GPU上的张量运算
if torch.cuda.is_available():
x = torch.randn(3, 3).cuda()
y = torch.randn(3, 3).cuda()
z = x @ y
print(f"GPU矩阵运算测试通过: {z.shape}")
跑完这个脚本,如果所有输出都正常,恭喜你,环境搭好了。
一句话总结:好的环境是成功建模的一半。花半小时配好环境,能省下后面几十小时的调试时间。