PyTorch Autograd内部实现

原文:

克補 爆炸篇 25s (youtube.com)

必应视频 (bing.com)icon-default.png?t=N7T8https://www.bing.com/videos/riverview/relatedvideo?&q=PyTorch+autograd&qpvt=PyTorch+autograd&mid=1B8AD76943EFADD541E01B8AD76943EFADD541E0&&FORM=VRDGAR

前面只要有一个node的requires_grad为True,则后面所有node都要为True:

forward阶段,ctx里存放其backward操作需要的值,也就是forward时的部分input或output值;

requires_grad为False的(Tensor b),不会计算其梯度;

requires_grad为True,且is_leaf为Tree的,会将梯度累积到其grad成员上;

优化:如果is_leaf=False,则说明不需要该Tensor的grad,所以,grad_fn直接将output梯度传递给下一个grad_fn了,绕开对该Tensor的grad的更新;(节省一步梯度加和操作的时间,也节省一个grad数据存储空间)

用_version号来防止backward时用到的activation在之前发生改动;如果_version号跟本次backward源头的_version号不同了,则报错;

我:Pipeline并行,如果直接做,就会有这种报错出现;

如果是Add操作这种,压根不需要某些activation的值,所以这种值发生改动,不影响backward传递参数,因此就不会报错

每个运算,是一个独立的operator,对应backward也是独立的:

Tensor.detach(),用在什么情况:想保留结果值,但又想把原始计算图垃圾回收释放掉;新Tensor和老Tensor共享数据内存(data),但不在hold指向计算图的reference了(grad_fn=None)

 

相关推荐

  1. Redis的数据类型内部实现

    2024-07-17 15:44:04       42 阅读
  2. Pytorch实用教程:nn.LSTM内部是如何实现

    2024-07-17 15:44:04       39 阅读
  3. nodejs 实现内部之间接口的相互调用

    2024-07-17 15:44:04       58 阅读
  4. 如何实现docker内部容器之间的端口访问

    2024-07-17 15:44:04       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 15:44:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 15:44:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 15:44:04       58 阅读
  4. Python语言-面向对象

    2024-07-17 15:44:04       69 阅读

热门阅读

  1. C# —— (左移 右移 异或 与 或 )运算规则

    2024-07-17 15:44:04       21 阅读
  2. 知识加油站

    2024-07-17 15:44:04       21 阅读
  3. 鹈鹕优化算法(POA)及其Python和MATLAB实现

    2024-07-17 15:44:04       22 阅读
  4. 互联网开发工作现状的深度剖析

    2024-07-17 15:44:04       20 阅读
  5. 用c语言写一个贪吃蛇游戏

    2024-07-17 15:44:04       25 阅读
  6. 【VUE】9、VUE项目中使用VUEX完成状态管理

    2024-07-17 15:44:04       21 阅读
  7. 前后端延迟问题应该如何解决

    2024-07-17 15:44:04       21 阅读
  8. ES6 数组的扩展(十六)

    2024-07-17 15:44:04       20 阅读
  9. 如何查看极狐GitLab Helm Chart?

    2024-07-17 15:44:04       19 阅读
  10. .Net--CLS,CTS,CLI,BCL,FCL

    2024-07-17 15:44:04       23 阅读
  11. Python 基础——元组

    2024-07-17 15:44:04       22 阅读
  12. uniapp 手写签名实现

    2024-07-17 15:44:04       22 阅读