PyTorch 源码学习

最近在学习 PyTorch 的源码,记录一下。

PyTorch 官方

  • 源码仓库
  • 中文文档
  • 开发者文档

源码解读

  • PyTorch : ezyang’s blog
    • PyTorch internals : ezyang’s blog → 翻译 → ① 一文搞懂 PyTorch 内部机制 ② 万字综述,核心开发者全面解读PyTorch内部机制
      • 查看Pytorch源码(为查看torch函数的具体实现,需要查看"aten/src/ATen/" 部分的内核代码)
  • PyTorch – Internal Architecture Tour → 翻译 → PyTorch为何如此高效好用?来探寻深度学习框架的内部架构(张量存储)
    • 想读读PyTorch底层代码?这份内核机制简介送给你(CPU/GPU 内存分配)
  • 如何阅读pytorch框架的源码? - 小飞的回答 - 知乎(个人学习经验)
    • PyTorch源码学习系列 - 1.初识(从自己的理解讲了 PyTorch 架构、目录结构,介绍了用 GDB 去调试 PyTorch 的方法)
    • PyTorch源码学习系列 - 2. Tensor(对 Tensor 进行了详细的介绍,包括概念、存储、创建等)
    • PyTorch源码学习系列 - 3. 算子(介绍了算子的定义、声明、实现和求导)
    • PyTorch源码学习系列 - 4. Autograd(介绍了自动求导的原理、计算图、实现和引擎)
      • PyTorch 中的 grad_fn 属性(grad_fn 属性的含义和作用)
  • 小白学习pytorch源码(一):torch包函数如何实现?揭秘__init__.py(介绍了 torch 包函数实现、使用 C++ 和 cuda 编程改变 pytorch 默认训练函数的方法)
    • 小白学习pytorch源码(二):setup.py最详细解读(详细介绍了 setup.py 文件)
    • 小白学习pytorch源码(三):理解torch.tensor模块(详细介绍了 torch.tensor 模块)
  • PyTorch源码浅析:简介(展示了 PyTorch 源码目录结构,分享了自己的源码阅读方法和一篇关于C++的笔记)(这个系列对应的版本比较老了)
    • PyTorch源码浅析(1):THTensor(THTensor & THStorage)
    • PyTorch源码浅析(2):THC(这篇价值比较高,讲了 THCState、THCAllocator 和 THCApply,THCAllocator 部分涉及到内存和显存分配)
    • PyTorch源码浅析(3):NN(主要讲了 Tanh 的实现和 2D Convolution 前向和反向传播的实现)
    • PyTorch源码浅析(4):Autograd(介绍了自动微分引擎的实现,计算图的原理,相关数据结构和 backward() 函数的实现,动态建立计算图的实现)
    • PyTorch源码浅析(5):Python扩展(介绍了 C++ 代码怎么与 Python 交互,里面扩展了 2 个帖子,熟悉 C++ 后可以再看看)
  • 如何阅读pytorch框架的源码? - jhang的回答 - 知乎(python api 接口到底层 c++ 接口的调用依赖关系)
  • 如何有效地阅读PyTorch的源代码? - 李辰的回答 - 知乎(setup.py 中的主要安装过程;一些模块详情)
  • 如何有效地阅读PyTorch的源代码? - 罗秀哲的回答 - 知乎(重点读懂张量运算库TH)
    • PyTorch源码浅析(目录)
    • PyTorch源码浅析(一)(THTensor 和 THStorage,文章里介绍了很多 C 语言的部分,有些过时了)
    • PyTorch源码浅析(二)(THC 中重新对存储在 GPU 上的张量进行了定义,分别为 THCStorage 和 THCTensor)
    • PyTorch源码浅析(三)(CUDA C++ 中大部分语法和 C++ 是一样的;在 GPU 上提供 BLAS 和线性代数算法支持的库是 cuBLAS 和 Magma)
    • PyTorch源码浅析(四)(静态图和动态图)
    • PyTorch源码浅析(五)(多重派发机制)
  • pytorch 源码解读进阶版 - 总述(基于 v2.1.1,讲了整体代码结构、c10/core 的代码结构)(作者还在更新中,只是速度较慢)
    • pytorch 源码解读进阶版 - 当你 import torch 的时候,你都干了些什么?(施工中)(作者还没写完,提到了 python 代码的组织规范)
      • 扩展阅读:各类Python项目的项目结构及代码组织最佳实践 (优秀的程序员都使用规范的项目代码结构,了解这些好的习惯方式,有助于快速读懂代码)
        • Python项目打包与部署(一):模块与包的概念与关系
        • Python项目打包与部署(二): __init__.py的作用及内容
        • Python项目打包与部署(三):打包与部署的实际操作流程
  • pytorch源码阅读(简要介绍了算子配置文件、反向算子配置文件、算子表层实现文件、算子底层实现文件)
  • v2.0.1:Pytorch底层源码解读(一)概览(主要讲了 torch__init__.py;附带讲了 pytorch 源码的所有目录)
    • Pytorch底层源码解读(二)libtorch源码浅析(pytorch - python 前端 = libtorch;Tensor 的源码实现机理,以及 Storage 和 Tensor 的关系)
  • v1.10.0:PyTorch项目源码学习(1)(提到了很多参考资料,基本上都读过了)
    • PyTorch项目源码学习(2)——Tensor代码结构初步学习(Tensor 的代码结构)
    • PyTorch项目源码学习(3)——Module类初步学习(torch.nn.Module 的源代码分析)
  • Pytorch源代码分析(Tensor、数据读入、前向反向计算)
    • pytorch之empty源代码(empty() 的源码实现)
    • PyTorch Autograd(构建 autograd 图的过程、反向传播的过程)
    • PyTorch Dispatch(dispatch 解决了一个问题:该调用哪个 kernel)
    • PyTorch DispatchStub(声明,定义,注册,调用四个阶段)
    • PyTorch CUDACachingAllocator(详细介绍如何使用 CUDACachingAllocator 来管理 GPU 内存,可以重点看)
  • 一文读懂 PyTorch 显存管理机制(这篇对 pytorch 显存管理机制介绍得很详细全面)

编译相关

关于 setup.py:Python项目打包及发布
关于 build 和 install:简述python setup.py install的过程

  • 一次对 Pytorch 源码编译过程的解析尝试(主要讲了和编译相关的内容)
  • PyTorch Internals Part II - The Build System → 翻译 → PyTorch内部2-The Build System(从最终用户的角度解释构建过程;通过只构建修改的那部分代码来提升迭代开发的速度)
    • A Tour of PyTorch Internals (Part I) → 翻译 → 教程 | PyTorch内部机制解析:如何通过PyTorch实现Tensor(内容没怎么看懂,先存一下)
  • Pytorch源码编译简明指南(介绍了 PyTorch 源码的目录结构、核心文件夹等)
    • 如何对Pytorch进行“深入”的DEBUG(在 vs code 进行 debug 的方法)
    • 一个Tensor的生命历程(Pytorch版)(没太看懂,先存一下)
  • how-to-debg_pytorch_sourcecode_into_cpp_part

计算图相关

  • 一点 PyTorch 源码阅读心得(作者发了很多计算图相关的文章,后面可以重点看下
  • PyTorch源码解析(1)- 整体预览(PyTorch 代码架构、前后端、动静态图)
    • PyTorch源码分析(2)——动态图原理(算子支持、Dispatch机制、反向传播、动态图执行过程)

你可能感兴趣的:(PyTorch,pytorch)