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

苏州建设厅网站深圳市外贸公司

苏州建设厅网站,深圳市外贸公司,网站建设 深圳信科公司,进销存永久免费gradient checkpointing 一般来说#xff0c;训练的过程需要保存中间结果#xff08;不管是GPU还是CPU#xff09;。前向传播根据输入(bottom_data)计算输出(top_data)#xff0c;后向传播由top_diff计算bottom_diff#xff08;如果某个变量打开梯度进行训练的话#xff…gradient checkpointing 一般来说训练的过程需要保存中间结果不管是GPU还是CPU。前向传播根据输入(bottom_data)计算输出(top_data)后向传播由top_diff计算bottom_diff如果某个变量打开梯度进行训练的话。top和bottom是包含数据和梯度的两个结构体整个网络的每层top和bottom在训练的过程中都会保存这消耗了大量的内存。 如果不保存这些变量每次传播时重新分配和计算会大大减少内存的使用量但是也会使得网络的训练时间无限延长。为了平衡这两个矛盾论文Training Deep Nets with Sublinear Memory Cost 使用亚线性内存成本训练深度网络我们提出了一种系统方法来减少深度的内存消耗 神经网络训练。具体来说我们设计了一种成本高昂的算法 Osqrtn 内存来训练 n 层网络只需计算成本 每个小批量的额外前向传递。每隔 sqrt(n)保留一个检查点的feature map。 CODE https://pytorch.org/docs/stable/checkpoint.html // https://discuss.pytorch.org/t/trying-to-understand-torch-utils-checkpoint/95224 import torch from torch import nn from torch.utils.data import Dataset, DataLoader import numpy as np from tqdm.notebook import tqdmfrom torch import optim import torchvision.models as models from torch import nnCHECKPOINT True BATCH_SIZE 32 dev cuda:0class ImageDataset(Dataset):def __init__(self,length 100000,size 244):self.length lengthself.size 244def __len__(self):return self.lengthdef __getitem__(self,idx,display False):return torch.from_numpy(np.random.randn(2,3,self.size,self.size)) train ImageDataset() trainloader DataLoader(train,batch_size BATCH_SIZE,num_workers 24,pin_memory True )resnet models.resnet50(pretrained False)class MODEL(nn.Module):def __init__(self,model):super(MODEL,self).__init__()self.model modelself.LR nn.Linear(1000,1000)def forward(self,x):if CHECKPOINT False:o1 self.model(x[:,0])o2 self.model(x[:,1])else:o1 torch.utils.checkpoint.checkpoint(self.model,x[:,0])o2 torch.utils.checkpoint.checkpoint(self.model,x[:,1])return torch.mean((self.LR(o1)-o2)**2)resnet MODEL(resnet).to(dev)optimizer optim.SGD(resnet.parameters(),lr .001)for T in tqdm(trainloader):out torch.mean(resnet(T.float().to(dev)))optimizer.zero_grad()out.backward()optimizer.step()CG https://github.com/merrymercy/dtr-prototype ZeRO-Offload https://arxiv.org/pdf/2101.06840.pdf 大规模模型训练一直是少数人的比赛场地 需要复杂的模型重构和访问昂贵的 GPU 集群。ZeRO-Offload 通过使 几乎每个人都可以访问大型模型训练。它可以训练模型 单个 GPU 上超过 13 亿个参数与 GPU 相比大小增加了 10 倍 流行的框架如PyTorch它不需要任何模型就可以做到这一点。 从数据科学家改变或牺牲计算效率。 ZeRO-卸载通过卸载数据和计算来实现大型模型训练 中央处理器。为了保持计算效率它旨在最大限度地减少数据 移入/移出 GPU减少 CPU 计算时间同时最大化内存 节省 GPU 成本。因此ZeRO-Offload可以在单个上实现40 TFlops / GPU。 NVIDIA V100 GPU 用于 10B 参数模型与单独使用 PyTorch 的 30TF 相比 对于 1.4B 参数模型可以训练而不会耗尽的最大参数模型 的记忆。ZeRO-Offload 还设计为在以下情况下在多个 GPU 上进行扩展 可用可在多达 128 个 GPU 上提供近乎线性的加速。此外它可以 与模型并行性协同工作训练超过 70 亿的模型 单个 DGX-2 盒子上的参数与模型尺寸相比增加了 4.5 倍 单独使用模型并行性。通过将计算和内存效率与 易于使用ZeRO-Offload 使大规模模型训练民主化使其成为 即使是数据科学家也可以访问只需访问一个 GPU。 梯度累积 训练时大的batch一般能得到更稳定的训练效果梯度累积训练方法是一种用于训练深度神经网络的技术旨在减少显存需求并提高训练效果。在传统的训练方法中模型的参数是通过单个批次batch的数据计算得到的梯度平均值进行更新。但在梯度累积训练中模型的参数更新是通过多个批次的梯度累积得到的。 以下是梯度累积训练的基本步骤 设置梯度累积步数accumulation steps它决定了要累积多少个批次的梯度。 初始化模型的参数。 对于每个训练批次batch 使用当前批次的数据进行前向传播计算损失。对损失进行反向传播计算梯度。累积当前批次的梯度到之前的梯度值上。 当累积达到设置的步数时将累积的梯度应用于模型参数的更新 通过将累积的梯度平均化来获得参数的更新值。使用更新值来更新模型的参数。 重复步骤3和4直到完成所有的训练批次。 梯度累积训练的主要优势在于能够降低每个批次所需的显存量允许在具有有限显存的硬件上训练更大的模型。此外梯度累积还可以改善模型的收敛性提高模型的性能和泛化能力。
http://www.dnsts.com.cn/news/143639.html

相关文章:

  • 公司支付网站款做凭证免费网站建设案例
  • 织梦网站修改使用教程优化营商环境工作总结
  • 网站建设公司模板专业建设的基本要素
  • 新建网站seo优化怎么做柘林网站建设
  • 网站开发完整教程网站开发需要自己写代码吗
  • 北京商城网站设计网站设计制作用软件
  • 网站内页做友链专门做悬疑推理小说的阅读网站
  • 上海教育网站前置审批科技网站设计
  • 孟村做网站价格新手网站设计定价
  • 如何做网站推广方法装饰公司在哪个网站上接活
  • 大型搜索网站开发edm营销网站
  • 网站做字工具wordpress漏洞破解
  • 京东电子商务网站建设wordpress崩溃
  • 招聘网站数据分析怎么做网站建设开发费入什么科目
  • 网站运营总结网络营销推广的主要形式为
  • 国外的智慧城市建设网站dz插件网站和自己做的网站区别
  • 成都网站建设公司服务商seo综合诊断工具
  • 公司网站域名是什么网站联系方式设计
  • 好搭建网站建设建设文明网站平台的意义与概述
  • 网站建设是系统工程搜索百度网址网页
  • wordpress网站统计插件下载wordpress如何建站呢
  • 龙岩网站推广软件免费搭建购物网站
  • 湖南服务专业的网站制作冀州网站建设
  • 网站内链怎么坐锚文本做租赁哪个网站好
  • 广东省著名商标在什么网站做iis如何做同时运行两个网站80端口
  • 公司网站手机版长沙网站建设公司招聘
  • 微信公众号链接的网站怎么做的宿州建设银行网站
  • 做优惠卷网站东莞设计公司有哪些
  • 广州网站建设策划商务网站建设个人总结
  • 万户网站深圳vi设计公司全力设计