宁德信息港
娱乐
当前位置:首页 > 娱乐

OenAI開源工具包模型增大10倍

发布时间:2020-01-16 23:59:22 编辑:笔名

OpenAI 开源工具包,模型增大 10 倍只需额外增加 20% 计算时间

AI 研习社消息,近日,OpenAI 在 GitHub 上开源工具包 gradient-checkpointing,该工具包通过设置梯度检查点(gradient-checkpointing)来节省内存资源据悉,对于普通的前馈模型,可以在计算时间只增加 20% 的情况下,在 GPU 上训练比之前大十多倍的模型(公众号:) AI 研习社将该开源信息编译整理如下:

通过梯度检查点(gradient-checkpointing)来节省内存资源

训练非常深的神经络需要大量内存,利用 Tim Salimans 和 Yaroslav Bulatov 共同开发的 gradient-checkpointing 包中的工具,可以牺牲计算时间来解决内存过小的问题,让你更好地针对模型进行训练

对于普通的前馈模型,可以在计算时间只增加 20% 的情况下,在 GPU 上训练比之前大十多倍的模型

训练深度神经络时,损失的梯度是在内存密集部分通过反向传播(backpropagation)算法来计算的在训练模型时定义计算图中的检查点,并在这些检查点之间通过反向传播算法重新计算这些图,可以在降低内存的同时计算梯度值

当训练一个 n 层的深度前馈神经络时,可以利用这种方式将内存消耗减少到 O(sqrt(n)),代价是需要执行一个额外的前向传递操作这个库可以在 Tensorflow 中实现这一功能——使用 Tensorflow graph editor 来自动重写后向传递的计算图

图:使用常规的 adients 函数和使用这种优化内存梯度实现法(memory-optimized gradient implementation)训练不同层数的 ResNet 模型时需要的内存对比

大家现在就可以安装

pip install tf-nightly-gpu

pip install toposort networkx pytest

当执行这一程序时,需要保证能找到CUPTI

这时可以执行

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda/extras/CUPTI/lib64

使用方法

这个库提供嵌入式功能,能对 adients 函数进行替换,可以输入如下程序来引入相关函数:

from memory_saving_gradients import gradients

大家可以像使用 adients 函数一样使用 gradients 函数来计算参数损失的梯度

gradients 函数有一个额外的功能——检查点(checkpoints)

检查点会对 gradients 函数进行指示——在计算图的前向传播中,图中的哪一部分节点是用户想要检查的点随后,会在后向传播中重新计算检查点之间的节点

大家可以为检查点提供一系列张量(gradients(ys,xs,checkpoints=[tensor1,tensor2])),或者可以使用如下几个关键词(collection、memory 、speed)来进行设置

覆盖 adients 函数

使用 gradients 函数的另一个方法是直接覆盖 adients 函数,方法如下:

import tensorflow as tf

import memory_saving_gradients

# monkey patch adients to point to our custom version, with automatic checkpoint selection

def gradients_memory(ys, xs, grad_ys=None, **kwargs):

return memory_saving_adients(ys, xs, grad_ys, checkpoints=memory, **kwargs)

tf.__dict__[gradients] = gradients_memory

这样操作之后,所有调用 adients 函数的请求都会使用新的节省内存的方法

测试

在测试文件夹中

,有已经写好的用于测试代码准确性和不同模型占用内存的脚本

大家可以执行 ./run_all_ 来修改代码,并着手测试

图:在CIFAR10数据集上,使用常规的梯度函数和使用的优化内存函数,在不同层数的 ResNet 络下的内存占用情况和执行时间的对比

via:GitHub

AI 研习社编译整理

版权文章,未经授权禁止转载详情见转载须知

儿童止咳药是否含有防腐剂
大庆癫痫病医院
南京白癜风医院
友情链接
九江有哪些外科医院 抚州有哪些放疗科医院 例假 雌激素 珠海有哪些其他内科医院 沧州有哪些胃肠外科医院 营口有哪些小儿神经外科医院 黔东小儿内分泌科医院哪家好 临汾有哪些皮肤性病医院 孩子中暑 宝宝便秘吃的药 小孩老是流鼻血怎么回事 小孩老是流鼻血是什么原因 小孩腹胀不爱吃饭 小孩吃什么健脾胃 小孩有眼屎是怎么回事 小孩流鼻血是怎么回事 儿童中暑 9个月宝宝大便干燥硬球 孩子中暑症状 小孩上火吃什么 儿童口臭是什么原因 孩子咽喉肿痛 宝宝上火吃什么 孩子上火吃什么药 小儿眼屎多 小孩晚上流鼻血是什么原因 婴儿大便干燥怎么办 孩子脸色发黄怎么回事 七个月宝宝消化不好怎么调理 幼儿小便黄 孩子中暑症状 小孩突然流鼻血 三岁宝宝口臭是什么原因 宝宝大便绿色 小孩爱流鼻血是什么原因 小孩口臭怎么办 小儿口臭 小孩口臭怎么办 孩子中暑症状 三岁宝宝口臭是什么原因 宝宝不消化吃什么好 小儿脾胃虚弱用药 小孩中暑怎么办 儿童咽喉肿痛 小孩子脾胃虚弱吃什么药 小孩老是流鼻血是什么原因 儿童中暑怎么办 孩子口臭 小孩突然流鼻血是什么原因 小孩口臭是什么原因 孩子积食呕吐怎么办 小孩上火 孩子中暑症状 小儿大便干 小孩眼屎多是什么原因 孩子口臭 婴儿有眼屎 薏芽健脾凝胶怎么吃 小孩上火 金银花露可以天天喝吗 小孩积食拉稀吃什么药 小孩不拉大便怎么办 婴儿流鼻血 快速止鼻血的方法小孩 小孩上火吃什么 小孩鼻子流鼻血怎么办 五岁宝宝不爱吃饭怎么办 新生儿上火怎么办 小孩便秘怎么办吃什么 孩子口臭 小孩营养不良怎么补 薏芽健脾凝胶吃法 宝宝口臭是什么原因 金银花露可以天天喝吗 小孩半夜流鼻血是什么原因 8岁儿童口臭怎么办 小孩口舌生疮 小孩经常流鼻血是什么原因 小孩中暑 小儿上火 小孩不消化口臭怎么办 小孩上火吃什么 小孩半夜流鼻血是什么原因