当前位置: 首页 > news >正文

pytorch底层原理学习--PyTorch 架构梳理

文章目录

      • PyTorch 完整架构流程图
    • 训练部署完整架构:
      • 关键组件详解
      • 完整执行流程示例

PyTorch 架构梳理

PyTorch 完整架构流程图

Hardware Layer
Backend Layer
Core Engine (C++)
Binding Layer
Python Layer
JIT Compiler
CPU指令
GPU执行
(CUDA/Shader)
专用加速器
CPU Kernels
(MKL/oneDNN/OpenMP)
CUDA Kernels
(cuDNN/cuBLAS)
其他后端
(ROCm/XLA)
C++ Frontend
(libtorch)
Autograd Engine
(动态图构建/梯度计算)
ATen
(张量库)
Operator Dispatch
(算子分发)
JIT 核心引擎
TorchScript IR
(中间表示)
Graph Optimization
(图优化)
Graph Execution
(图执行)
pybind11 Bindings
(Python-C++接口)
Python Code
(模型定义/训练脚本)
Python Frontend
(torch.nn, torch.optim)
Eager Execution
(动态图即时操作执行)
JIT/TorchScript
(静态图编译接口)

训练部署完整架构:

如下图:

硬件层
后端层
C++ 部署层
核心引擎 (C++)
绑定层
Python 层
推理路径
Eager 执行
JIT 编译
模型文件
调用
训练模式
推理模式
CPU
GPU
加速器
CPU Kernels
CUDA Kernels
其他后端
C++ 代码
模型加载
模型推理
C++ Frontend
(libtorch)
训练路径
Autograd Engine
动态图记录
梯度计算
ATen
(张量库)
算子分发
JIT 执行引擎
设备特定优化
无梯度模式
pybind11 Bindings
Python 代码
Python Frontend
(torch, torch.nn, torch.optim)
JIT 接口
torch.jit.script/trace
语法解析
生成 IR
图优化
序列化为 .pt 文件
Eager 操作
动态图构建

关键组件详解

  1. Python Code

    • 作用:用户编写的模型定义、训练脚本
    • 示例model = nn.Linear(10, 2); output = model(input)
    • 特点:高级API,易用性强
  2. Python Frontend

    • 组成torch, torch.nn, torch.optim等模块
    • 功能:提供神经网络层、优化器、张量操作等高级接口
    • 关键类Tensor, Module, Optimizer
  3. Eager Execution

    • 机制:命令式编程模式,操作立即执行
    • 优点:调试方便,动态图灵活性高
    • 示例x = torch.tensor([1.0]); y = x * 2 (立即计算)
  4. JIT/TorchScript

    • 作用:将Python模型编译为优化后的静态图
    • 流程torch.jit.script(model) → 生成IR → 优化
    • 优势:部署友好,性能优化空间大
  5. pybind11 Bindings

    • 功能:Python与C++间的双向绑定层
    • 实现:自动生成包装代码,实现无缝调用
    • 效率:接近原生C++性能的跨语言调用
  6. C++ Frontend (libtorch)

    组件功能
    TorchScript 支持加载/执行 Python 导出的模型(.pt 文件)
    ATen 张量库核心张量操作(CPU/CUDA)
    神经网络模块torch::nn 命名空间下的层实现
    自动求导引擎C++ 环境下的 autograd 支持
    序列化工具模型保存/加载(torch::save()/load())
    多后端支持CPU/CUDA/ROCM 硬件加速
    • 定位:PyTorch的C++核心库
    • 功能:提供与Python API对应的C++接口
    • 使用场景:高性能推理、嵌入式部署
  7. Autograd Engine

    • 核心功能:动态构建计算图并管理梯度计算
  8. ATen (A Tensor Library)

    • 角色:PyTorch的核心张量库
    • 特性
      • 500+张量操作
      • 统一CPU/CUDA接口
      • 自动微分支持
    • 路径aten/src/ATen/native/ (算子实现)
  9. Intermediate Representation (IR)

    • 作用:TorchScript的中间表示形式
    • 结构:基于图的表示,包含节点(Node)、边(Edge)
    • 优化:常量折叠、算子融合等
  10. Operator Dispatch

    • 机制:根据设备类型分发算子

    • 伪代码

      def add(tensor):if tensor.device == 'cuda':return cuda_add_kernel(tensor)else:return cpu_add_kernel(tensor)
      
  11. CPU Kernels

    • 优化技术
      • SIMD指令集 (AVX2/AVX512)
      • 多线程并行 (OpenMP)
      • 数学加速库 (MKL, oneDNN)
    • 典型操作:矩阵乘法、卷积等
  12. CUDA Kernels

    • 架构

      CUDA Kernel
      线程块
      32线程束
      单个线程
    • 加速库:cuDNN (深度学习), cuBLAS (线性代数)

    • 异步执行:通过CUDA流实现计算/传输并行

完整执行流程示例

Python Code Python Frontend pybind11 C++ Frontend Autograd Engine ATen CUDA Kernel model(input) 张量操作请求 调用libtorch 记录前向图 执行张量计算 分发到CUDA内核 结果返回 存储梯度函数 返回输出张量 C++ → Python 返回结果 获得预测结果 Python Code Python Frontend pybind11 C++ Frontend Autograd Engine ATen CUDA Kernel

参考资料:

《deep learning with pytorch》15.3 与PyTorch JIT 编译器交互,第一版中文版

PyTorch

PyTorch Architecture | harleyszhang/llm_note | DeepWiki

(PyTorch源码分析(1)- 整体预览 - 知乎

《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

http://www.dtcms.com/a/263338.html

相关文章:

  • 3.前端和后端参数不一致,后端接不到数据的解决方案
  • 16014.rtsp推流服务器
  • 详解Kafka如何保证消息可靠性
  • 大语言模型(LLM)笔记
  • YOLOv12_ultralytics-8.3.145_2025_5_27部分代码阅读笔记-instance.py
  • [15-2] 读写内部FLASH读取芯片ID 江协科技学习笔记(20个知识点)
  • MySQL DATETIME 类型时间精度陷阱:一次由毫秒引发的数据“消失”之谜
  • 【Actix Web】Rust Web开发实战:Actix Web框架全面指南(2025企业级应用版)
  • java初学习(-2025.6.30小总结)
  • TCP 三次握手协商 MSS 前,如何确定 MSS 值
  • SQL规范
  • 【软考高项论文】论信息系统项目的范围管理
  • 剑指offer51_数组中数值和下标相等的元素
  • 机器人仿真(1)Ubuntu24.04下CLion的ROS2开发环境配置
  • [ C++ ] | unordered_map 底层实现原理
  • Linux-进程概念(1)
  • 亚马逊,塔吉特采购,测评防砍单封号的养号下单黄金法则
  • 华为云Flexus+DeepSeek征文 | Word办公软件接入华为云ModelArts Studio大模型,实现AI智能办公
  • 【C++指南】C++ list容器完全解读(三):list迭代器的实现与优化
  • Deploy StarRocks with Docker
  • ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
  • Deepoc 大模型在无人机行业应用效果的方法
  • Python函数参数实例练习--输出信息
  • 抗量子域名系统:全面的系统级研究
  • 前端领域的技术热点与深度解析
  • 对selenium进行浏览器和驱动进行配置Windows | Linux
  • [面试]手写题-Promise.all() Promise.race()
  • 博图SCL编程:结构体(STRUCT)使用详解与实战案例
  • HTML<span>元素详解
  • 安装bcolz包报错Cython.Compiler.Errors.CompileError: bcolz/carray_ext.pyx的解决方法