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

做任务领游戏的网站pk10网站开发

做任务领游戏的网站,pk10网站开发,武钢建工集团建设公司网站,广州推广seogradient 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/203576.html

相关文章:

  • 简历模板免费网站昆明做烤瓷牙哪去柏德L网站
  • 找做网站个人网页版微信小程序
  • 深圳做网站的公司dw做网站可以做毕业设计吗
  • 荣欣建设集团有限公司网站网站会员推广邀请系统
  • 建站平台在线提交表格天津网站经营性备案
  • 做电影网站解析wordpress添加文档
  • 网站内如何做论坛东莞望牛墩网站建设
  • 丹徒网站建设机构企业电子商务网站有哪些功能
  • 九讯鹿网站建设海南seo
  • 怎么设置网站默认首页企业网站建设基本流程图
  • 咖啡网站模板html个人网站怎么制作成图片
  • 怎样提高网站访问速度石排镇做网站
  • 怎么样用自己电脑做网站html手机版下载
  • 柳州网站建设11天津网站建设价格多少
  • 网站服务器组建wordpress 邀请码注册衔接
  • 中国交建招标平台优化网络的软件
  • 淄博网站建设hidddwordpress 模版 psd
  • 网站开发设计需要什么证书国内最大的网页模板网站
  • 手机网站用户体验网站建设服务流程
  • 长春 网站 设计上海人才网站官网入口
  • 帝国cms网站地图生成器企业管理咨询服务公司
  • 容桂网站制作价位怎么制作网站视频教程
  • 类似京东的购物网站开发价格wordpress减肥网站采集规则
  • 怎么用网站做类似微博国内做网站哪家公司好
  • 网站推广意义不改变网站怎么做关键词优化
  • app网站开发的特点wordpress中文主题站
  • 重庆可视化网站制作网站关键词热度
  • 深圳学校网站建设个人创业做网站
  • 上传PDF到wordpress网站贵州省建设厅官方网站官网
  • 汽车网站制作淘客免费交易网站建设