您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
有没有什么可以节省大量时间的Deep Learning效率神器?
神经网络,框架,算子有没有什么可以节省大量时间的Deep Learning效率神器?
发布时间:2020-12-06加入收藏来源:互联网点击:
有没有什么可以节省大量时间的Deep Learning效率神器?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
你好。谢邀。
没有理解清楚你的问题中效率的概念。问题1 可能是Deep Learning的训练加速推理加速?或者问题2可能是怎么快速上手Deep Learning?问题1可能不是那么一言两语才能回答完,回答2简单一些。
问题1 Deep Learning的训练加速推理加速?
启用框架fuse技术进行算子融合
算子融合之后训练起来减少了无效的拷贝时间,计算组织更加紧密,所以性能更好。
启用集合通信框架
Nvidia NCCL 等都提供这样的集合通信方法开启后,梯度的反向传播和平均等运算将大大加速。
配置多机多卡
多机多卡训练会大大加速神经网络的计算。
启用垃圾回收等内存显存机制
通过优化存储空间,使得更多计算在显存中或者内存中显然比在硬盘来回调度快的多。
通过tensorrt、openvino等进行推理
针对英伟达和intel的计算单元进行了大量的软件优化,部署速度更快。官方也提供了相应的生态,部署起来按照文档也很容易操作。
问题1总结:
用最先进的工具把最牛X的选项打开,把所有能利用的资源都利用了,自然训练速度和部署推理就会显著提高。
问题2 怎么快速入手Deep Learning?
首先上结论:唯一的总神器就是数学。
Deep Learning本质上要学的是特征表示,多层神经网络的组织实际上是特征组合和空间变换。学过线性代数的人都会知道向量空间的概念,如果仔细想想点的组合就是线,线的组合就是面,面的组合就是空间。我们所谓的输入特征,无非就是空间中一个点的多维表示方法。
第一神器线性代数矩阵运算部分
矩阵计算了如指掌,你就能轻松理解各种线性变换的概念,大部分的算子比如卷积Conv,循环神经网络算子LSTM等都不难理解。学好矩阵理论,别说Deep Learning,你就是去搞GPU神经网络并行计算也不在话下。
第二神器高等数学梯度部分
神经网络能训练出来的第一功臣应该是BP(反向传播)算法吧,应该说没有BP就没有深度神经网络什么事情了,学好梯度的运算别说训练神经网络,你就是写个性能不那么好的神经网络框架也不在话下,pytorch/mxnet不过就是矩阵的前向和反向计算组合成的一个经过优化的工具包罢了。
第三神器概率论
如果连基本的概率论都不懂,那么我请问你怎么搞清楚贝叶斯,怎么搞HMM 隐马尔科夫模型,怎么搞条件随机场CRF,怎么搞Beam Search 剪枝,怎么搞CTC....一堆的怎么搞,头大了有木有。
高阶大神需要学的科目来了:离散数学图论
大神必备科目,怎么才能让神经网络算的更快是架构师考虑的问题,这里面涉及大量的图优化问题,图论都没学过,怎么搞无依赖算子并行计算,这么搞算子合并优化,又是一堆的怎么搞?
问题2 总结
了解清楚原理和背后的数学知识什么时候都不晚,当有一天数学知识精进了,什么pytorch,tensorflow2.0,mxnet,paddlepaddle都不在话下,猛然发现这些所谓的牛逼框架,大多就是大学水平。硕士水平怎么也得搞个复数域神经网络。如果实在不想学数学,先从numpy搞起,试试各种API是怎么回事儿,鼓弄一下记住答案直接上手pytorch也未尝不可。大部分AI工程师数学真的很差,整天假装搞Deep Learning,实际上连矩阵乘法都不会,被计算框架宠坏了。
回答于 2019-09-11 08:43:50
推荐一个基于PyTorch的Deep Learning框架PyTorch Lightning。
经过我的试用,这个框架现在优点很多,使用方便,节省大量时间,让用户只需要关注模型和数据。不再需要关注很多无关但必要的繁杂细节,例如控制训练流程、保存模型checkpoint、fp16支持、多机多卡训练、梯度累计等等。这些东西全部由框架实现。对于一般的模型训练,只需要关注模型设计和数据读取。模型部分就不谈了。对于数据读取,除了具体的读数据,只需要写一个如何将多个instance打包成一个batch的函数即可。扩展性强。这是我认为这个框架最优秀的地方。PyTorch实际上有很多不同的框架,但是增加的易(无)用(脑)性的同时,其扩展性往往大打折扣。PyTorch Lightning对于这点的处理很好。可能某高级炼金术师不止需要控制模型设计和数据读取,而是想要进行更精细的控制,例如学习率的自定义调节。PyTorch Lightning也通过hook的方式提供了支持,几乎所有常见的可以插入自定义控制流程的地方都可以使用hook进行更精细的控制。
下面说说缺点:
老生常谈的第一点,对于某些国家炼金术师,他们想要控制每一个细节,那么PyTorch Lightning可能无法提供支持。但是我觉得这些人也没必要用这个,自己从头写最好了。
框架还处于高频更新中,可能前后版本存在兼容性问题。甚至有一些小坑。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |