PyTorch 架构梳理
PyTorch 完整架构流程图
关键组件详解
Python Code
- 作用:用户编写的模型定义、训练脚本
- 示例:
model = nn.Linear(10, 2); output = model(input)
- 特点:高级API,易用性强
Python Frontend
- 组成:
torch
,torch.nn
,torch.optim
等模块 - 功能:提供神经网络层、优化器、张量操作等高级接口
- 关键类:
Tensor
,Module
,Optimizer
- 组成:
Eager Execution
- 机制:命令式编程模式,操作立即执行
- 优点:调试方便,动态图灵活性高
- 示例:
x = torch.tensor([1.0]); y = x * 2
(立即计算)
JIT/TorchScript
- 作用:将Python模型编译为优化后的静态图
- 流程:
torch.jit.script(model)
→ 生成IR → 优化 - 优势:部署友好,性能优化空间大
pybind11 Bindings
- 功能:Python与C++间的双向绑定层
- 实现:自动生成包装代码,实现无缝调用
- 效率:接近原生C++性能的跨语言调用
C++ Frontend (libtorch)
组件 功能 TorchScript 支持 加载/执行 Python 导出的模型(.pt 文件) ATen 张量库 核心张量操作(CPU/CUDA) 神经网络模块 torch::nn
命名空间下的层实现自动求导引擎 C++ 环境下的 autograd 支持 序列化工具 模型保存/加载(torch::save()/load()) 多后端支持 CPU/CUDA/ROCM 硬件加速 - 定位:PyTorch的C++核心库
- 功能:提供与Python API对应的C++接口
- 使用场景:高性能推理、嵌入式部署
Autograd Engine
- 核心功能:动态构建计算图并管理梯度计算
ATen (A Tensor Library)
- 角色:PyTorch的核心张量库
- 特性:
- 500+张量操作
- 统一CPU/CUDA接口
- 自动微分支持
- 路径:
aten/src/ATen/native/
(算子实现)
Intermediate Representation (IR)
- 作用:TorchScript的中间表示形式
- 结构:基于图的表示,包含节点(Node)、边(Edge)
- 优化:常量折叠、算子融合等
Operator Dispatch
机制:根据设备类型分发算子
伪代码:
def add(tensor): if tensor.device == 'cuda': return cuda_add_kernel(tensor) else: return cpu_add_kernel(tensor)
CPU Kernels
- 优化技术:
- SIMD指令集 (AVX2/AVX512)
- 多线程并行 (OpenMP)
- 数学加速库 (MKL, oneDNN)
- 典型操作:矩阵乘法、卷积等
- 优化技术:
CUDA Kernels
架构:
加速库:cuDNN (深度学习), cuBLAS (线性代数)
异步执行:通过CUDA流实现计算/传输并行
完整执行流程示例
参考资料:
《deep learning with pytorch》15.3 与PyTorch JIT 编译器交互,第一版中文版
PyTorch Architecture | harleyszhang/llm_note | DeepWiki
《PyTorch: An Imperative Style, High-Performance Deep Learning Library》
https://pytorch.org/blog/a-tour-of-pytorch-internals-1/
https://pytorch.org/blog/a-tour-of-pytorch-internals-2/
https://zhuanlan.zhihu.com/p/598044604
https://zhuanlan.zhihu.com/p/708375873
https://zhuanlan.zhihu.com/p/338256656
https://blog.ezyang.com/2019/05/pytorch-internals/
https://deepwiki.com/harleyszhang/llm_note/5.2-pytorch-architecture?utm_source=chatgpt.com
https://medium.com/@hxu296/a-trip-to-kernels-understanding-pytorchs-internal-architecture-fc955aafd54c
https://zhuanlan.zhihu.com/p/609288586
https://mlfrontiers.substack.com/p/understanding-ml-compilers-the-journey
https://se.ewi.tudelft.nl/desosa2019/chapters/pytorch/#fnref:3
https://medium.com/@hxu296/a-trip-to-kernels-understanding-pytorchs-internal-architecture-fc955aafd54c
https://blog.christianperone.com/2018/03/pytorch-internal-architecture-tour/
https://docs.pytorch.org/tutorials/beginner/saving_loading_models.html#saving-loading-a-general-checkpoint-for-inference-and-or-resuming-training