IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> pytorch搭建深度学习模型,哪些步骤占用显存 -> 正文阅读

[人工智能]pytorch搭建深度学习模型,哪些步骤占用显存

pytorch的显存机制,一直不明白,今天看了两篇文章,终于有些明白了,这两篇文章如下:
https://zhuanlan.zhihu.com/p/424512257
https://blog.csdn.net/qq_43827595/article/details/115722953

根据第一篇知乎文章及其评论,我自己写了一套代码来记录各个步骤中显存的占用情况,以下是通过jupyter notebook中转化而来得到的markdown文件内容:

import torch
import torch.nn as nn
class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.linear1 = nn.Linear(1024,1024, bias=False)
        self.linear2 = nn.Linear(1024, 1, bias=False)
    
    def forward(self, x):
        x = self.linear1(x)
        x = self.linear2(x)
        out = sum(x)
        return out
# 输入数据
inputs = torch.tensor([[1.0]*1024]*1024).cuda() # +4194304 
print(torch.cuda.memory_allocated())
4194304
# 模型初始化
net = Net().cuda()  # +4194304+4096 前者是第一个线性层的参数所占显存,后者是第二个线性层所占显存
print(torch.cuda.memory_allocated())
8392704
# 正向传播
out = net(inputs)  # +4194304+512,4194304是模型第一层输出所占显存之和,512是out所占显存
                    # 这里之所以不需要第二层的输出,是因为求导的时候用不到,pytorch在维护计算图的时候将其释放
                    # 每一层的输出,是否被舍弃,关键要看输出的结果是否在求导的表达式中
print(torch.cuda.memory_allocated())
12587520
# 后向传播
out.backward()     # +4096,这个4096,是模型第二层中每个参数的梯度,
                    # 因为第二层的输出被舍弃掉了,需要新开辟显存来存储梯度
print(torch.cuda.memory_allocated())
12591616
from torch.optim import Adam
optimizer = Adam(net.parameters(), lr=1e-3) # +4198912  优化器参数所占显存
print(torch.cuda.max_memory_allocated()) 
16790528
optimizer.step() # +16785408 优化器相关参数所占显存
print(torch.cuda.max_memory_allocated()) 
29377024
16790528 - 12591616
4198912

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:33:38  更:2022-03-04 15:38:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:20:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码