PyTorch 简介与环境搭建

462 阅读7分钟

PyTorch 简介与环境搭建


1. 什么是 PyTorch?

  • 定义: PyTorch 是一个开源的机器学习库,基于 Torch 库,主要由 Facebook 的人工智能研究团队(FAIR)开发和维护。它是一个以 Python 为优先接口的库,提供了两个高级功能:

    1. 强大的 GPU 加速的张量(Tensor)计算:类似于 NumPy,但可以在 NVIDIA GPU 上运行以极大地加速计算。
    2. 构建在基于磁带的自动求导系统(tape-based autograd system)上的深度神经网络:这使得构建和训练神经网络变得非常灵活和直观。
  • 核心特点与优势:

    • Python 优先 (Python-first): PyTorch 的设计哲学使其感觉非常“Pythonic”。你可以像使用其他 Python 库(如 NumPy, SciPy)一样自然地使用它,易于学习和调试。
    • 动态计算图 (Dynamic Computational Graphs): 这是 PyTorch 的一个标志性特性。与 TensorFlow 1.x 等框架的静态图不同,PyTorch 允许你在运行时定义、修改和执行计算图。这使得处理可变长度输入(如文本)和构建复杂的、条件控制的模型更加容易。
    • 强大的 GPU 加速: 深度学习计算量巨大,GPU 加速是必不可少的。PyTorch 提供了对 NVIDIA CUDA 的良好支持。
    • 丰富的生态系统:
      • torchvision:包含流行的计算机视觉数据集、模型架构和图像转换工具。
      • torchaudio:用于音频处理。
      • torchtext:用于文本处理和自然语言处理。
      • 还有许多第三方库和工具。
    • 活跃的社区与研究应用: PyTorch 在学术界和研究领域非常受欢迎,许多最新的研究论文会提供 PyTorch 实现。这意味着你可以很容易地找到前沿模型的代码。
    • 易于调试: 由于其动态性和 Pythonic 的特性,使用标准的 Python 调试器(如 pdb)就可以轻松调试 PyTorch 代码。
  • PyTorch 的两个核心组件(我们后续会详细学习):

    1. 张量 (Tensors): 多维数组,是 PyTorch 中数据存储和运算的基本单位。
    2. 自动求导 (Autograd): torch.autograd 包提供了张量上所有操作的自动微分功能,是神经网络训练的核心。

2. 为什么选择 PyTorch?

对于初学者和研究人员来说,PyTorch 通常因为以下原因而备受青睐:

  • 易学易用: 如果你熟悉 Python 和 NumPy,上手 PyTorch 会相对较快。
  • 灵活性高: 动态图带来了极大的灵活性,方便快速原型设计和实验。
  • 调试方便: 出错信息通常更清晰,可以直接用 Python 调试器。
  • 社区活跃: 遇到问题时,很容易找到解决方案或获得帮助。
  • 研究友好: 许多顶会论文使用 PyTorch,方便复现和学习最新成果。

3. 环境搭建

在开始编写 PyTorch 代码之前,你需要先在你的计算机上安装它。

  • 前提条件:

    • Python: PyTorch 需要 Python 环境。推荐使用 Python 3.7 或更高版本。你可以从 python.org 下载并安装。
    • pip: Python 的包安装器,通常随 Python 一起安装。
    • (可选但强烈推荐) Anaconda/Miniconda: Anaconda 是一个流行的数据科学平台,它包含了 Python、许多有用的包以及一个强大的环境管理器 conda。Miniconda 是 Anaconda 的轻量级版本。使用 conda 可以非常方便地创建和管理独立的 Python 环境,避免不同项目之间的包版本冲突。
  • 选择安装版本:

    • CPU 版本: 如果你的计算机没有 NVIDIA GPU,或者你只是想初步学习,可以选择 CPU 版本。
    • GPU 版本: 如果你的计算机有受支持的 NVIDIA GPU,并且你想进行实际的深度学习模型训练,强烈建议安装 GPU 版本。这需要你的系统安装了对应版本的 CUDA Toolkit。
  • 安装步骤:

    1. 强烈建议:创建虚拟环境

      • 为什么? 虚拟环境可以为你的项目创建一个隔离的 Python 环境,使得不同项目的依赖包不会相互干扰。
      • 使用 conda (推荐):
        # 创建一个名为 mytorch_env 的新环境,指定 python 版本 (例如 3.9)
        conda create -n mytorch_env python=3.9
        # 激活环境
        conda activate mytorch_env
        
      • 使用 venv (Python 自带):
        # 创建一个名为 .venv 的虚拟环境文件夹
        python -m venv .venv
        # 激活环境 (Windows)
        .\.venv\Scripts\activate
        # 激活环境 (Linux/macOS)
        source .venv/bin/activate
        
      • 注意: 后续所有安装命令都在激活的虚拟环境中执行。
    2. 访问 PyTorch 官网获取安装命令

      • 这是最推荐的方式,因为官网会根据你的操作系统、包管理器 (pip/conda)、计算平台 (CPU/CUDA 版本) 生成最合适的安装命令。
      • 官网地址:pytorch.org/get-started…
      • 在官网上,你需要选择:
        • PyTorch Build: Stable (稳定版) 或 LTS (长期支持版) 或 Nightly (最新开发版)。初学者建议选择 Stable
        • Your OS: Windows, Linux, macOS.
        • Package: Conda, Pip, LibTorch, Source. 初学者建议选择 Conda (如果你用了 Anaconda/Miniconda) 或 Pip
        • Language: Python 或 C++/Java。选择 Python
        • Compute Platform: CPU, 或不同版本的 CUDA (如 CUDA 11.8, CUDA 12.1)。
          • 如果你不确定是否有 NVIDIA GPU 或 CUDA 版本,可以选择 CPU
          • 如果你有 NVIDIA GPU,可以在命令行输入 nvidia-smi 查看 GPU 信息和支持的 CUDA Driver Version。PyTorch 安装的 CUDA Runtime 版本需要与你的驱动兼容。通常选择官网上列出的较新的 CUDA 版本即可,PyTorch 会捆绑所需的 CUDA 运行时。
    3. 执行安装命令

      • 官网会生成类似下面的命令 (具体命令以官网为准):
        • Conda + CPU 示例:
          conda install pytorch torchvision torchaudio cpuonly -c pytorch
          
        • Pip + CPU 示例:
          pip3 install torch torchvision torchaudio
          
        • Conda + CUDA 11.8 示例:
          conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
          
        • Pip + CUDA 11.8 示例:
          pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
          
      • 复制官网生成的命令,在已激活的虚拟环境的终端中执行。安装过程可能需要一些时间,因为它会下载几个较大的包。
  • 验证安装: 打开 Python 解释器 (直接在终端输入 python 或使用 IDE) 或 Jupyter Notebook,然后输入以下代码:

    import torch
    
    # 打印 PyTorch 版本
    print(f"PyTorch Version: {torch.__version__}")
    
    # 检查 CUDA 是否可用 (如果你安装了 GPU 版本)
    cuda_available = torch.cuda.is_available()
    print(f"CUDA Available: {cuda_available}")
    
    if cuda_available:
        # 打印当前 CUDA 设备名称
        print(f"CUDA Device Name: {torch.cuda.get_device_name(0)}")
        # 创建一个 GPU 张量
        gpu_tensor = torch.rand(2, 3).cuda()
        print(f"GPU Tensor:\n{gpu_tensor}")
        print(f"GPU Tensor Device: {gpu_tensor.device}")
    
    # 创建一个 CPU 张量
    cpu_tensor = torch.rand(2, 3)
    print(f"CPU Tensor:\n{cpu_tensor}")
    print(f"CPU Tensor Device: {cpu_tensor.device}")
    

    如果代码成功运行并打印出版本号和张量信息,说明 PyTorch 安装成功。如果安装了 GPU 版本,CUDA Available 应该为 True

  • 推荐的开发工具:

    • Jupyter Notebook / JupyterLab: 非常适合交互式学习和实验。可以逐个单元格运行代码,并立即看到结果。
      # 在激活的虚拟环境中安装 (如果还没有)
      pip install notebook jupyterlab
      # 启动 Jupyter Notebook
      jupyter notebook
      # 或启动 JupyterLab
      jupyter lab
      
    • VS Code: 一个功能强大的代码编辑器,通过 Python 扩展和 Jupyter 扩展,可以很好地支持 PyTorch 开发和调试。
    • PyCharm: 另一个流行的 Python IDE,专业版对科学计算和 Jupyter Notebook 也有很好的支持。

4. 第一个 PyTorch "Hello World" (实践)

我们已经在上面的“验证安装”中做了一个简单的测试。这里再给出一个明确的“Hello World”步骤:

  1. 确保你的 PyTorch 环境已激活。

  2. 创建一个 Python 文件,例如 hello_pytorch.py,或者打开一个 Jupyter Notebook 单元格。

  3. 输入以下代码:

    import torch
    
    # 1. 创建一个未初始化的 5x3 张量
    x = torch.empty(5, 3)
    print("未初始化的 5x3 张量 x:")
    print(x)
    
    # 2. 创建一个随机初始化的 5x3 张量
    y = torch.rand(5, 3)
    print("\n随机初始化的 5x3 张量 y:")
    print(y)
    
    # 3. 创建一个全零的 5x3 张量,数据类型为 long
    z = torch.zeros(5, 3, dtype=torch.long)
    print("\n全零的 5x3 long 张量 z:")
    print(z)
    
    # 4. 直接从数据创建张量
    data_list = [[1, 2], [3, 4]]
    a = torch.tensor(data_list)
    print("\n从数据列表创建的张量 a:")
    print(a)
    
    # 5. 张量加法
    result = y + z.float() # 注意 z 是 long 类型,需要转换为 float 进行加法
    print("\n张量 y + z (z转为float):")
    print(result)
    
    print(f"\nPyTorch 安装成功!版本号: {torch.__version__}")
    
  4. 运行脚本:

    • 如果是 .py 文件:python hello_pytorch.py
    • 如果是 Jupyter Notebook:运行该单元格。