1、Pytorch介绍
PyTorch 是一个基于 Python 的科学计算库,专门针对深度学习(Deep Learning)而设计。它主要由 Facebook 的人工智能研究团队(FAIR)开发并维护,现在已成为全球最流行的深度学习框架之一。
PyTorch 的核心特点
-
动态计算图(Dynamic Computation Graph)
-
也称为"define-by-run",即计算图在代码运行时动态构建。
-
这使得调试更直观(可像普通 Python 代码一样使用
print或pdb调试),并允许灵活调整模型结构(如循环神经网络中的可变长度输入)。
-
-
Python 原生风格
-
PyTorch 的 API 设计非常贴近 Python 习惯,学习成本较低,易读性强。
-
与 NumPy 高度兼容,通常只需将
numpy.array替换为torch.Tensor即可。
-
-
强大的 GPU 加速
- 通过 CUDA 支持,可以轻松将张量计算转移到 GPU 上,大幅提升训练速度。
-
自动微分(Autograd)
- 内置自动求导系统,无需手动计算梯度,只需在张量上设置
requires_grad=True,即可自动跟踪计算并反向传播。
- 内置自动求导系统,无需手动计算梯度,只需在张量上设置
-
丰富的生态系统
-
TorchVision(计算机视觉)
-
TorchText(自然语言处理)
-
TorchAudio(音频处理)
-
PyTorch Lightning(简化训练流程的高级封装)
-
Hugging Face Transformers(预训练 NLP 模型)
-
PyTorch 的主要用途
-
学术研究
- 因其灵活性和易调试性,成为学术界最受欢迎的框架之一,许多新论文的官方实现都基于 PyTorch。
-
原型设计与实验
- 动态图特性使得快速迭代模型结构变得非常方便,适合探索性项目。
-
生产部署
-
通过 TorchScript 或 ONNX 可将模型导出为独立于 Python 的格式,部署到服务器、移动端或嵌入式设备。
-
配合 TorchServe 可构建高性能推理服务。
-
-
计算机视觉(CV)
- 图像分类、目标检测、图像生成等(如使用 ResNet、YOLO、GANs)。
-
自然语言处理(NLP)
- 文本分类、机器翻译、语音识别(如 BERT、GPT 的实现)。
-
强化学习
- 得益于动态图的灵活性,适合实现需要动态控制流的强化学习算法。
简单代码示例
import torch
import torch.nn as nn
# 1. 定义一个简单的神经网络
class SimpleNet(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(10, 5) # 10维输入 -> 5维输出
def forward(self, x):
return self.fc(x)
# 2. 创建模型和输入
model = SimpleNet()
x = torch.randn(3, 10) # 批量大小3, 特征维度10
# 3. 前向传播
output = model(x)
print(output.shape) # 输出 torch.Size([3, 5])
# 4. 自动梯度示例
x = torch.tensor([2.0], requires_grad=True)
y = x ** 2 + 3
y.backward()
print(x.grad) # 梯度 dy/dx = 2x → 4.0
与 TensorFlow 的对比
-
PyTorch 更 Pythonic,适合研究和快速实验。
-
TensorFlow 的静态图模式(已支持动态图)在部署和生产优化方面有优势,但 PyTorch 通过 TorchScript 正在迎头赶上。
学习资源
-
官方教程 :pytorch.org/tutorials
-
经典课程:
-
斯坦福 CS231n(计算机视觉)
-
李沐《动手学深度学习》(中文教程,基于 PyTorch)
-
-
实践:在 Kaggle 或 GitHub 上参与开源项目。
PyTorch 是一个灵活、直观且强大的深度学习框架,尤其适合需要快速迭代的研究、原型设计和教育领域。随着生态的成熟,其在工业界的应用也越来越广泛。如果你是深度学习新手,PyTorch 是一个非常好的起点!
2、Pytorch安装(window)
安装前置条件
1.Python 环境已安装
可参考:Python 在 Windows 和 Linux 上的安装指南_windows python安装包-CSDN博客
2.chocolatey 巧克力味插件安装
# 1. 安装 Chocolatey(以管理员身份运行 PowerShell)
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# 2. 使用 Chocolatey 安装 Python
choco install python
# 3. 验证安装
python --version
# 4.更新版本
choco upgrade chocolatey
3.pip软件管家安装
#cmd 以管理员运行
pip install pip
4.验证插件安装
# 以管理员身份运行
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu126
验证
为了确保 PyTorch 正确安装,我们可以通过运行示例 PyTorch 代码来验证安装情况。这里我们将构造一个随机初始化的张量。
从命令行输入:
# 第一步
python
# 第二步
import torch
x = torch.rand(5, 3)
print(x)
正确输出
tensor([[0.3380, 0.3845, 0.3217],
[0.8337, 0.9050, 0.2650],
[0.2979, 0.7141, 0.9069],
[0.1449, 0.1132, 0.1375],
[0.4675, 0.3947, 0.1426]])
其他输出说明某个插件没装或安装失败了
AI 图形模型主推gpu 我们来一起看下gpu和cpu区别
GPU和CPU的核心区别在于架构设计,这决定了它们在处理不同任务时的效率差异:
核心区别
-
CPU(中央处理器)
-
设计目标:通用计算、串行处理
-
核心特点:少量强大核心(通常4-16个)、复杂控制单元
-
擅长:逻辑判断、分支预测、单线程性能
-
-
GPU(图形处理器)
-
设计目标:并行计算、图形渲染
-
核心特点:数千个小型核心、高度并行化
-
擅长:矩阵运算、浮点计算、批量数据处理
-
AI模型运行选择
推荐GPU的场景:
✅ 深度学习训练 - 需要大量矩阵运算
✅ 大规模推理任务 - 如实时图像处理
✅ 大语言模型 - 如GPT、LLaMA等
✅ 计算机视觉模型 - CNN、Transformer
可能选择CPU的场景:
✅ 小规模模型推理 - 轻量级AI应用
✅ 边缘设备部署 - 功耗限制严格
✅ 预处理/后处理 - 非并行计算任务
✅ 内存需求极高 - CPU通常有更大RAM
性能对比
| 任务类型 | GPU优势 | CPU优势 |
|---|---|---|
| 矩阵乘法 | 快10-100倍 | 适合小矩阵 |
| 训练时间 | 天/小时级 | 周/月级 |
| 能耗比 | 更高 | 较低 |
| 灵活性 | 专用优化 | 通用性强 |
实际建议
-
训练阶段:强烈推荐GPU(NVIDIA卡最佳,CUDA生态完善)
-
部署阶段:
-
云端/服务器:GPU或专用AI芯片(TPU、NPU)
-
移动端:专用AI加速器或优化后的CPU
-
嵌入式:根据功耗和性能平衡选择
-
-
预算考虑:
-
入门:NVIDIA RTX 4060/4070(8-12GB显存)
-
专业:RTX 4090、Tesla系列
-
云服务:按需租用GPU实例(灵活成本)
-
特殊芯片
除了传统GPU,还有:
-
TPU:Google专为AI设计的芯片
-
NPU:手机/边缘设备的AI加速单元
-
FPGA:可编程硬件,灵活性高
对于大多数AI模型,GPU是更合适的选择,尤其是在训练和大规模推理时。但对特定场景,CPU或专用AI芯片可能是更优解。
3、模型安装导出
.onnx 文件是 Open Neural Network Exchange(开放神经网络交换) 格式的文件。
什么是 .onnx 文件?
核心特性:
-
跨框架模型格式 - 可以在不同深度学习框架间转换和共享模型
-
PyTorch → ONNX → TensorFlow
-
TensorFlow → ONNX → MXNet 等
-
-
标准化表示 - 包含:
-
模型结构(计算图)
-
模型权重参数
-
输入输出定义
-
-
高性能推理 - 针对推理进行了优化
离线使用 ONNX 文件
✅ 完全可以离线使用!
离线使用的优势:
-
无需网络连接 - 模型完全本地化
-
快速加载 - 模型已序列化,加载速度快
-
部署方便 - 单文件包含所有信息
如何使用:
1. Python 环境:
import onnxruntime as ort
import numpy as np
# 加载 ONNX 模型
session = ort.InferenceSession("model.onnx")
# 准备输入
input_name = session.get_inputs()[0].name
input_data = np.random.randn(1, 3, 224, 224).astype(np.float32)
# 推理(完全离线)
outputs = session.run(None, {input_name: input_data})
-
C++ 环境:
#include <onnxruntime_cxx_api.h>
Ort::Session session(env, "model.onnx", Ort::SessionOptions{});
// 离线推理...
3. 移动端/嵌入式:
-
Android/iOS 均可使用 ONNX Runtime
-
资源占用少,适合边缘设备
常见使用场景:
生产部署:
训练框架(PyTorch/TF) → 导出为 ONNX → 部署到:
├── 服务器(CPU/GPU)
├── 移动端(Android/iOS)
├── 嵌入式设备(树莓派等)
└── Web(通过 ONNX.js)
优点:
-
一次导出,处处运行
-
硬件加速支持(CUDA、TensorRT、OpenVINO等)
-
内存高效 - 单文件包含所有
限制:
-
主要用于推理(inference),训练支持有限
-
某些复杂操作可能不完全支持
使用清华镜像源
pip install onnxruntime-gpu -i https://pypi.tuna.tsinghua.edu.cn/simple
或者使用阿里云镜像源
pip install onnxruntime-gpu -i https://mirrors.aliyun.com/pypi/simple/
或者使用豆瓣镜像源
pip install onnxruntime-gpu -i https://pypi.douban.com/simple/