Python虚拟环境与深度学习环境配置详细笔记
Python虚拟环境与深度学习环境配置详细笔记
1. Python虚拟环境的选择与使用
1.1 主流虚拟环境方案详细对比
venv(Python标准库自带)
1
2
3
4
5
6
7
8# 创建环境
python -m venv myenv
# 激活环境
# Windows
myenv\Scripts\activate
# Linux/macOS
source myenv/bin/activate- 优点:
- 轻量级,不占用额外空间
- Python标准库自带,无需额外安装
- 使用pip管理包,过程简单直观
- 缺点:
- 功能相对简单
- 科学计算包可能需要额外编译
- 适用场景:
- Web开发项目
- API开发
- 轻量级Python应用
- 需要部署到资源受限环境的项目
- 优点:
conda(Anaconda自带)
1
2
3
4
5
6
7
8# 创建指定Python版本的环境
conda create -n myenv python=3.9
# 激活环境
conda activate myenv
# 安装包示例
conda install numpy pandas scikit-learn- 优点:
- 提供完整的科学计算环境
- 包含Jupyter Notebook、Spyder等IDE
- 预编译的科学计算库,安装快速
- 强大的包管理和环境管理功能
- 支持Python之外的其他编程语言
- GPU相关配置更简单
- 缺点:
- 安装包体积大(几GB)
- 占用磁盘空间较多
- 学习曲线相对较陡
- 适用场景:
- 数据科学项目
- 机器学习研究
- 需要大量科学计算的项目
- 跨平台开发需求
- 优点:
virtualenv(第三方工具)
1
2
3
4
5# 安装virtualenv
pip install virtualenv
# 创建环境
virtualenv myenv- 优点:
- 比venv功能更丰富
- 可以指定Python版本
- 更灵活的配置选项
- 缺点:
- 需要单独安装
- 配置相对复杂
- 适用场景:
- 需要特定Python版本的项目
- 需要更多控制选项的场景
- 优点:
pipenv(集成工具)
1
2
3
4
5# 安装pipenv
pip install pipenv
# 在项目目录下创建环境
pipenv install- 优点:
- 自动管理项目依赖
- 集成了包管理和虚拟环境功能
- 提供锁文件确保环境一致性
- 缺点:
- 使用方式与传统虚拟环境不同
- 某些情况下速度较慢
- 适用场景:
- 注重依赖管理的项目
- 团队协作项目
- 优点:
1.2 深度学习项目的环境选择
为什么选择Anaconda
- 预装了大量机器学习相关包
- CUDA和cuDNN的配置更简单
- 环境管理更直观,便于切换不同框架版本
- 预编译的科学计算库减少了安装错误
- 跨平台支持好,便于在不同系统间迁移项目
实际使用中的重要特性
在conda环境中使用pip:
1
2
3# 激活环境后使用pip安装
conda activate myenv
pip install tensorflow包会被正确安装到当前conda环境
环境复制和分享:
1
2
3
4
5# 导出环境配置
conda env export > environment.yml
# 从配置文件创建环境
conda env create -f environment.yml
2. 深度学习环境配置实战
2.1 版本选择与兼容性分析
深度学习框架与CUDA版本对应关系
TensorFlow支持的CUDA版本:
- TensorFlow 2.17.0:支持CUDA 12.3
- TensorFlow 2.18.0:支持CUDA 12.3
PyTorch支持的CUDA版本:
- PyTorch 2.4.0:支持CUDA 12.1
- PyTorch 2.5.1:支持CUDA 12.1和12.4
Python版本选择考虑
- Python 3.9:部分旧版本框架的选择
- Python 3.10:PyTorch 2.4.0的最低要求
- Python 3.11:最新版本的推荐选择
最终挑选版本组合
1
2
3
4
5Python: 3.11
CUDA: 12.4
cuDNN: 9.3
TensorFlow: 2.18.0
PyTorch: 2.5.1
2.2 NVIDIA驱动与CUDA安装详解
系统环境检查
1
2# 检查NVIDIA驱动版本和当前CUDA支持
nvidia-smi示例输出分析:
1
NVIDIA-SMI 565.57.01 Driver Version: 565.57.01 CUDA Version: 12.7
- Driver Version表示当前安装的NVIDIA驱动版本
- CUDA Version表示驱动支持的最高CUDA版本,注意这里不是安装的版本
CUDA安装方法选择
a. 包管理器安装(不推荐):
1
2
3
4wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get install cuda-toolkit-12-4遇到的问题:
- Ubuntu 24.04兼容性问题,即使成功添加还是无法安装
- 依赖关系复杂
b. runfile安装(推荐):
1
2
3
4
5# 下载runfile(从NVIDIA官网)
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run
# 使用推荐的参数安装
sudo sh cuda_12.4.XX_linux.run --no-drm --silent --toolkit --override --override-driver-check参数说明:
--no-drm
:不安装NVIDIA驱动模块--silent
:静默安装--toolkit
:只安装CUDA工具包--override
:忽略兼容性检查--override-driver-check
:忽略驱动检查
这里不得不忽略各种检查,否则因为我安装了新版本的显卡驱动,一直无法安装12.4版本的toolkit。
处理已有CUDA版本
检查现有CUDA安装:
1
ls -l /usr/local/cuda*
如果发现多个版本:
1
2
3
4
5
6
7
8
9# 删除不需要的版本
sudo rm -rf /usr/local/cuda-12.6
# 确认软链接指向
ls -l /usr/local/cuda
# 如需要,重新创建软链接
sudo rm /usr/local/cuda
sudo ln -s /usr/local/cuda-12.4 /usr/local/cuda安装过程中的常见问题
a. 权限相关:
1
2# 下载文件时的权限错误
sudo wget [URL] # 使用sudo解决b. 驱动冲突(比较麻烦,不建议首选):
1
2
3
4
5# 检查现有驱动
nvidia-smi
# 如果需要重新安装驱动
sudo apt-get --purge remove '*nvidia*'c. 安装失败排查:
1
2
3
4
5# 查看安装日志
less /var/log/cuda-installer.log
# 查看驱动安装日志
less /var/log/nvidia-installer.log
2.3 环境变量配置与验证
CUDA环境变量设置
1
2
3
4
5
6
7
8
9# 编辑~/.bashrc文件
vim ~/.bashrc
# 添加以下内容
export PATH=/usr/local/cuda-12.4/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# 使设置生效
source ~/.bashrcCUDA版本验证与分析
1
2
3
4
5# 检查CUDA编译器版本
nvcc -V
# 检查NVIDIA驱动和CUDA支持
nvidia-smi版本不一致分析:
nvcc -V
显示实际安装的CUDA工具链版本nvidia-smi
显示驱动支持的最高CUDA版本- 开发时以
nvcc -V
显示的版本为准
2.4 深度学习框架安装与GPU验证
创建环境并安装框架
1
2
3
4
5
6
7
8
9# 创建conda环境
conda create -n dl_env python=3.11
conda activate dl_env
# 安装TensorFlow
pip install tensorflow[and-cuda]
# 安装PyTorch(CUDA 12.4)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124TensorFlow GPU验证
1
2
3
4
5
6
7
8
9
10import tensorflow as tf
# 检查GPU设备
print(tf.config.list_physical_devices('GPU'))
# GPU计算测试
A = tf.random.normal([10, 10])
B = tf.random.normal([10, 10])
C = tf.matmul(A, B)
print(tf.reduce_sum(C))输出分析:
1
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
表示成功检测到GPU设备
常见警告说明:
- cuFFT/cuDNN/cuBLAS插件重复注册:不影响功能
- CPU指令集优化警告:仅影响CPU计算性能
PyTorch GPU验证
1
2
3
4
5
6
7
8
9
10import torch
# 检查CUDA是否可用
print(torch.cuda.is_available())
# 查看可用的GPU数量
print(torch.cuda.device_count())
# 查看当前GPU设备名称
print(torch.cuda.get_device_name(0))
3. 参考资源
官方文档
- TensorFlow安装指南
- PyTorch安装指南
- NVIDIA CUDA Toolkit文档
- 注意文档语言调成英文,因为中英文的官方文档更新并不同步
软件下载
- CUDA Toolkit:https://developer.nvidia.com/cuda-downloads
- cuDNN:https://developer.nvidia.com/cudnn
- NVIDIA驱动:https://www.nvidia.com/Download/index.aspx
Python虚拟环境与深度学习环境配置详细笔记
https://blakehansen130.github.io/2024/11/19/comprehensive-learning-notes/