第3章:深度学习框架:PyTorch/TensorFlow环境搭建、基础操作
搭建深度学习环境这事儿,说实话我踩过不少坑。尤其是ADMET研究,数据量和模型复杂度都比较特殊,一个稳定的环境能省下几周调试时间。
3.1 硬件与操作系统准备
你想想看,深度学习训练的核心其实是GPU。CPU当然也能跑,但对于ADMET数据中的高维特征,GPU提速可不是一星半点。
我个人习惯先检查硬件环境,再决定装什么版本。下面是常见的配置要求:
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| GPU | NVIDIA GTX 1050 (4GB) | NVIDIA RTX 3090 (24GB) 或以上 |
| CPU | 4核 2.5GHz | 8核 3.5GHz 以上 |
| 内存 | 16GB | 32GB 或 64GB |
| 硬盘 | SSD 256GB | SSD 1TB (NVMe) |
| 操作系统 | Ubuntu 20.04 / Windows 10 | Ubuntu 22.04 / Windows 11 |
注意:装PyTorch或TensorFlow的GPU版本,你得先看看自己的显卡。NVIDIA卡用CUDA,AMD卡得另找路径。我刚开始用PyTorch时,就因为没装对CUDA版本,白白折腾了一天。
3.2 CUDA与cuDNN的安装
说白了,CUDA是NVIDIA的并行计算平台,cuDNN是深度学习加速库。两个都得装对版本。
我以前在项目中遇到过,CUDA 11.8配PyTorch 1.13挺稳,但换成2.x系列就必须用CUDA 12.1以上。为什么会这样?因为框架版本跟CUDA是绑定的。
安装步骤其实不复杂:
- 去NVIDIA官网下载CUDA Toolkit(选.run或.deb包)。
- 安装完成后,配环境变量。
- 下载cuDNN库,解压后把文件复制到CUDA目录下。
举个例子,这是Ubuntu下配环境变量的写法:
export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-12.1
小建议:装好后执行 nvcc --version 和 nvidia-smi,看看CUDA版本对不对。我曾经忘了重启终端,查了半天才发现错位。
3.3 创建虚拟环境(Anaconda推荐)
在ADMET项目中,不同模型可能依赖不同版本的库。我一般用Anaconda管理环境,想切就切,不会污染系统。
安装命令很简单:
wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
bash Anaconda3-2023.09-0-Linux-x86_64.sh
装好后,创建一个专属环境:
conda create -n admet_env python=3.9
conda activate admet_env
嗯,这里要注意。Python版本别追新,3.9或3.10对大部分框架最友好。
3.4 PyTorch安装与验证
PyTorch现在在ADMET研究圈子里很流行。它的动态图机制调试起来挺顺手的。
安装命令取决于你的CUDA版本。用conda装最省心:
conda install pytorch torchvision torchaudio cudatoolkit=12.1 -c pytorch -c nvidia
或者用pip也行:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
验证是否装好:
import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.cuda.device_count())
print(torch.cuda.get_device_name(0))
如果看到 True 和你的显卡型号,说明环境亮了。我刚开始用PyTorch时,就是靠这几行代码确认GPU调通的。
3.5 TensorFlow安装与验证
TensorFlow的安装路子跟PyTorch不太一样。它更依赖CUDA和cuDNN的精确匹配。
我的建议是直接用官方推荐版本:
pip install tensorflow==2.15.0
pip install tensorflow-gpu==2.15.0
验证代码:
import tensorflow as tf
print(tf.__version__)
print(tf.config.list_physical_devices('GPU'))
print(tf.test.is_gpu_available())
关键点:TensorFlow 2.x以后,tensorflow-gpu包已经整合到主包。但你得装对CUDA版本。我遇到过装好但找不到GPU的问题,结果是CUDA版本对不上。
3.6 基础操作:张量与设备分配
说白了,深度学习操作的核心是张量(Tensor)。PyTorch和TensorFlow都靠它。
在实际的ADMET工作中,你得把数据加载到GPU上。比如:
import torch
# 创建张量并移到GPU
tensor_cpu = torch.randn(3, 4)
tensor_gpu = tensor_cpu.cuda()
print(tensor_gpu.device)
# 反向操作
tensor_cpu_again = tensor_gpu.cpu()
TensorFlow的操作类似:
import tensorflow as tf
# 查看默认设备
print(tf.config.list_physical_devices())
# 显式分配
with tf.device('/GPU:0'):
tensor_gpu = tf.random.normal([3, 4])
print(tensor_gpu.device)
我自己的习惯是:在大数据加载时,先用CPU处理,再批量移到GPU。这样能避免显存炸掉。
3.7 本章知识图谱
下面这张图概括了环境搭建的核心流程和关键节点。你跟着走就不会乱:
3.8 实践中的避坑建议
讲几个我这些年踩过的坑:
- 版本冲突:尽量不要混合使用conda和pip装依赖。我一般先在conda里装核心包,缺什么再用pip补。
- 多环境隔离:每个ADMET项目创建一个独立环境。我试过一个环境跑多个模型,结果TensorFlow和PyTorch互相抢CUDA版本。
- 检查GPU状态:每次跑任务前,跑一下
nvidia-smi,看看显存够不够用。
说白了,环境搭建是门细活。你花一小时配置好,后面省去十几个小时排错。我刚开始做ADMET时,就因为版本不匹配,整整调了两天。
好了,环境搭好、基础操作也跑通,剩下的就是在具体项目里磨炼了。