Python虚拟环境与深度学习环境配置详细笔记

Python虚拟环境与深度学习环境配置详细笔记

1. Python虚拟环境的选择与使用

1.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应用
      • 需要部署到资源受限环境的项目
  2. 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)
      • 占用磁盘空间较多
      • 学习曲线相对较陡
    • 适用场景:
      • 数据科学项目
      • 机器学习研究
      • 需要大量科学计算的项目
      • 跨平台开发需求
  3. virtualenv(第三方工具)

    1
    2
    3
    4
    5
    # 安装virtualenv
    pip install virtualenv

    # 创建环境
    virtualenv myenv
    • 优点:
      • 比venv功能更丰富
      • 可以指定Python版本
      • 更灵活的配置选项
    • 缺点:
      • 需要单独安装
      • 配置相对复杂
    • 适用场景:
      • 需要特定Python版本的项目
      • 需要更多控制选项的场景
  4. pipenv(集成工具)

    1
    2
    3
    4
    5
    # 安装pipenv
    pip install pipenv

    # 在项目目录下创建环境
    pipenv install
    • 优点:
      • 自动管理项目依赖
      • 集成了包管理和虚拟环境功能
      • 提供锁文件确保环境一致性
    • 缺点:
      • 使用方式与传统虚拟环境不同
      • 某些情况下速度较慢
    • 适用场景:
      • 注重依赖管理的项目
      • 团队协作项目

1.2 深度学习项目的环境选择

  1. 为什么选择Anaconda

    • 预装了大量机器学习相关包
    • CUDA和cuDNN的配置更简单
    • 环境管理更直观,便于切换不同框架版本
    • 预编译的科学计算库减少了安装错误
    • 跨平台支持好,便于在不同系统间迁移项目
  2. 实际使用中的重要特性

    • 在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 版本选择与兼容性分析

  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
  2. Python版本选择考虑

    • Python 3.9:部分旧版本框架的选择
    • Python 3.10:PyTorch 2.4.0的最低要求
    • Python 3.11:最新版本的推荐选择
  3. 最终挑选版本组合

    1
    2
    3
    4
    5
    Python: 3.11
    CUDA: 12.4
    cuDNN: 9.3
    TensorFlow: 2.18.0
    PyTorch: 2.5.1

2.2 NVIDIA驱动与CUDA安装详解

  1. 系统环境检查

    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版本,注意这里不是安装的版本
  2. CUDA安装方法选择

    a. 包管理器安装(不推荐):

    1
    2
    3
    4
    wget 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。
  3. 处理已有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
  4. 安装过程中的常见问题

    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 环境变量配置与验证

  1. 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 ~/.bashrc
  2. CUDA版本验证与分析

    1
    2
    3
    4
    5
    # 检查CUDA编译器版本
    nvcc -V

    # 检查NVIDIA驱动和CUDA支持
    nvidia-smi

    版本不一致分析:

    • nvcc -V显示实际安装的CUDA工具链版本
    • nvidia-smi显示驱动支持的最高CUDA版本
    • 开发时以nvcc -V显示的版本为准

2.4 深度学习框架安装与GPU验证

  1. 创建环境并安装框架

    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/cu124
  2. TensorFlow GPU验证

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import 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计算性能
  3. PyTorch GPU验证

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import torch

    # 检查CUDA是否可用
    print(torch.cuda.is_available())

    # 查看可用的GPU数量
    print(torch.cuda.device_count())

    # 查看当前GPU设备名称
    print(torch.cuda.get_device_name(0))

3. 参考资源

  1. 官方文档

  2. 软件下载


Python虚拟环境与深度学习环境配置详细笔记
https://blakehansen130.github.io/2024/11/19/comprehensive-learning-notes/
发布于
2024年11月19日
许可协议