PyTorch 是什么:概念介绍
一、PyTorch 是什么:概念介绍
PyTorch 是一个基于动态计算图的深度学习框架:张量运算在 Python 里逐行执行,计算图随代码运行实时构建,调试时可以直接 print 中间张量、可以下断点、可以按条件改网络结构。这一点让它跟早期「先定义静态图再喂数据」的框架体验完全不同,也是它在研究与工程界同时流行的原因。
它要解决的核心问题是把「求导」这件事自动化。写模型时只需要写前向计算,反向传播由 autograd 沿计算图自动完成;再往上一层,torch.nn 提供网络层,torch.optim 提供优化器,torch.utils.data 提供数据加载与并行取数,分布式由 torch.distributed 覆盖单机多卡到多机多卡。
与相邻方案的区别
| 框架 | 计算图 | 调试体验 | 典型定位 |
|---|---|---|---|
| PyTorch | 动态(define-by-run) | 与普通 Python 一致,可直接断点 | 研究、训练、推理全覆盖,生态最广 |
| TensorFlow | 以图/编译为中心(新版亦有 eager) | 需要理解图与函数签名 | 大规模生产部署、TF Serving 体系 |
| JAX | 函数式,纯函数 + JIT 变换 | 变换规则严格,写法受限 | 科研、大规模并行计算 |
| PaddlePaddle | 动态为主 | 接近 PyTorch | 国内生态、国产化需求 |
核心术语
| 术语 | 含义 |
|---|---|
| Tensor | 多维数组,含 dtype、shape、device 三个关键属性 |
| autograd | 自动微分引擎,requires_grad=True 的张量会记录计算历史 |
| nn.Module | 网络模块基类,管理参数与子模块,forward 定义前向 |
| device | 张量所在设备,cpu / cuda:0 等,跨设备运算会报错 |
| CUDA / cuDNN | NVIDIA 的并行计算与深度学习加速库,PyTorch 的 GPU 后端 |
| AMP | 自动混合精度,前向用半精度、关键处保持单精度 |
| DDP | DistributedDataParallel,多卡数据并行的事实标准 |
| torch.compile | 把模型编译成更快的图,减少 Python 开销 |
| state_dict | 模型参数的字典,保存与加载权重的标准载体 |
