百科问答小站 logo
百科问答小站 font logo



实验室一块GPU都没有怎么做深度学习? 第1页

  

user avatar   yang-leonier 网友的相关建议: 
      

想起我当年 那课题在没买那块1070之前,还真是用CPU跑的。当时机子是A卡,A卡是不能跑tensorflow的,结果拿CPU硬是连续挂机20多天。


user avatar   zibuyu9 网友的相关建议: 
      

首先,现在有很多开源的大模型(如我们在智源研究院支持下训练发布的CPM系列模型 GitHub - TsinghuaAI/CPM)可以直接用,所以不必做算力耗费高昂的大模型预训练阶段的工作,而是聚焦在这些大模型如何发挥在下游任务的作用,也就是 fine-tuning 技术,现在已经有很多新颖的技术路线,例如 prompt tuning,特别值得深入探索;也可以探索这些大模型在对话生成等方面的创新应用,甚至可能都不需要 fine-tuning 模型参数。

当然,即使只做fine-tune或者inference,对于百亿参数规模的大模型而言仍然意味着需要大显存、高配置的GPU,不是普通研究生能够承受的,很多研究组也无法提供如此充裕的算力支持。我们也认识到,要想大模型广泛应用,就需要实现低成本计算,所以我们最近开源了百亿模型低成本推理计算的工具包BMInf,只要千元显卡(如NVIDIA GeForce GTX 1060)就能跑动百亿规模大模型

BMInf采用了模型量化和内存调度等技术(模型量化可以参考 霍华德的回答 - 实验室一块GPU都没有怎么做深度学习?),近期会整理好相关技术报告。当然,如果你有更高性能显卡那么速度会更快(性能数据如下表)。

BMInf具备以下优点:(1)硬件友好 BMInf最低支持在NVIDIA GTX 1060单卡运行百亿大模型。在此基础上,使用更好的gpu运行会有更好的性能。在显存支持进行大模型推理的情况下(如V100或A100显卡),BMInf的实现较现有PyTorch版本仍有较大性能提升。(2)开源共享 模型参数开源共享,用户在本地即可部署运行,无需访问或申请API。(3)能力全面 支持生成模型CPM-1、通用模型CPM-2、对话模型EVA,能力覆盖文本补全、文本生成与对话场景。(4)模型升级 基于持续学习推出百亿模型新升级CPM2.1,文本生成能力大幅提高。(5)应用便捷 基于工具包可以快速开发大模型相关下游应用。其他详细介绍可以参见BMInf说明文档。

在BMInf之后,我们还会继续研制和发布大模型的微调和预训练工具包,希望让更多不具备高算力的朋友用上大模型。欢迎大家关注,提出你们的宝贵意见和建议。谢谢!


user avatar   proxy-47 网友的相关建议: 
      

做云服务厂商的 GPU 服务器对大多数人来说都是租不起的,阿里云或 AWS 的 GPU 实例价格大家都知道的。很多学生党或者自由时间想自己做做ML和DL的同学都苦于没有廉价的平台来做实验。 Featurize 推荐一个我知道最便宜的GPU平台

实例

笔记本

数据集

习惯远程开发的同学还可以用vscode、pycharm远程开发,体验和在本地开发是一样的。另外虽然也是用了容器技术,但是所有代码、pip安装的包以及其他文件都是可以通过云端同步,每次启动新的实例不需要重复搭建环境或写代码。数据下载经过国内优化,而且所有实例都是千兆带宽。

Google Colab Pro

自从现在 Colab 越来越刷不到好机器了。。我都用 Featurize 了,清一色的 T4。

Kaggle Notebook

配置以及价格:Kaggle Notebook(之前叫 Kaggle Kernel)是专门为 Kaggle 参赛选手准备的环境,当然如果你只报个名去白嫖 GPU 也是可以的。Kaggle 提供的 GPU 是 P100,16 G 内存。但每周只有 42 个小时的免费使用时间。 使用体验:对于参赛者来说,Kaggle Notebook 使用起来还是比较方便的,由于这类产品均使用容器(Docker),数据的导入和导出都是一个比较麻烦的问题,但 Kaggle 导入自家数据集是非常快的。另外 Kaggle 提供了 Notebook 运行的版本控制,算是功能上的一个亮点。缺点是笔记本提交后看不到训练过程,也不能手动中断训练,所以代码中一定要定义最大训练的轮数,以及学习率的动态调整等。相比于本地开发,Kaggle 的 Notebook 是需要适应一下的。 开通方法:注册账号后随意参加任何一个比赛即可。


user avatar   huo-hua-de-41 网友的相关建议: 
      

看了一些同学们的回答,要么就是自己掏腰包买个GPU赶紧把实验做完息事宁人,要么就是各种野路子。一类是白嫖党各种云端平台跑自己模型,比如Google colab、百度AI studio。滴! 白嫖真香警告。但是这种普遍存在一个弊端就是费时间,包括上传数据,每次配置环境,整个人都头大了。要说时间对研究生来说那可是宝贵资源,每天都活在发paper的支配之下,paper早发几天说不定能延长几年寿命。另外一类就是拉赞助了,这个就是考验个人交(hu)际(you)能力啦。

话说回来,实验室没有GPU,那就用CPU来做深度学习啊~看到一位答主也很推荐用CPU做深度学习。

科研比拼的是idea,不单纯只是算力哦,有好想法一样能发好论文。为此我专门去研究了一下这个用CPU去训练模型的可行路子。下面我来介绍几个CPU就能搞定的深度学习研究领域。

实际业务场景中,大家都会遇到各种数据噪音的问题,可能是获取方式里就不可避免的带有噪音,可能是标注人员数据标注质量可能不过关、存在一些错误,也可能是数据标注的标准不统一、存在一些歧义。总之,数据噪音在AI实践过程中如影随形。QuickDraw、MNIST和Amazon Reviews等学术数据集中也存在错误标签,如下图所示。

学术界有一个专门研究如何解决噪音标签的领域,叫做带噪学习。标签带噪声的深度学习具有很大的挑战性,因为深度模型的容量非常大,以至于可以在训练时迟早记住这些带噪声的标签。

  • Co-teaching

NIPS 2018提出了一个方法叫Co-teaching,用于抵抗标签的噪声。我们同时训练两个深度神经网络,并使用“损失小”的数据进行交叉训练。

作者在MNIST,CIFAR-10和CIFAR-100的噪声版本实验表明,在训练深度模型的稳健性方面,co-teaching取得了state of the art(SOTA)的效果。MNIST,CIFAR-10和CIFAR-100训练数据5万到6万,测试数据1万,完全使用CPU就可以搞定,不需要GPU~

  • Co-teaching+

在ICML'19上,后面其他研究者又提出了Co-teaching+,在Co-teaching的基础上,又借鉴了Decoupling的“Update by Disagreement”策略,可以说是“Co-teaching + Decoupling”。Co-teaching在训练的过程中,随着epoch增加,两个模型越来越接近达成一致,但我们希望模型能够持续地训练,所以引入了“Update by Disagreement”策略来增加模型训练过程中的变化。

我们来看看Co-teaching+使用的数据集,最大的数据集是Tiny-ImageNet,用CPU完全可以搞定!

  • JoCoR

CVPR'20又有人在Co-teaching+的基础上提出了JoCoR模型。仍然用两个模型,但是两个模型的loss是一起计算且模型一起更新的。JoCoR训练的过程中有两类损失,首先是两个模型各自输出与label的交叉熵损失,然后就是两个predictions之间的距离损失。两个分类损失就不用多说了,距离损失在这里就是为了让两个模型尽可能地达成一致。直觉上,不同模型会对大多数样本的标签达成一致,而不太可能对错误的标签达成一致。这里衡量的距离损失用对称的KL散度来表示。接下来的过程就是计算loss比较小的样本,然后用来更新参数了。

当然作者也在MNIST, CIFAR-10,CIFAR-100验证了JoCoR模型的效果。看吧,依靠CPU就能把NIPS、ICML、CVPR等一系列顶会中一遍,香不香!

虽然用CPU也能发顶会,但说到选用CPU还是要选用性能强劲的。如JoCoR模型在Clothing1M数据集上验证了效果,Clothing1M有一百万上图片,没有强劲的CPU,训练起来还是有点痛苦的。

在网上看到一个医疗行业的深度学习的方案感觉还是挺有意思。医院用深度学习去对糖尿病视网膜病变和老年性黄斑变性进行筛查。在这个方案中他们也是在CPU运行Caffe架构来实现对处理对象的快速筛选。同时他们也比较了在不同CPU上运行相同代码,来观察不同CPU的处理速度。下面是三种不同CPU的处理速度对比。 通过对比我们看出就算是用CPU去做深度学习, 不同CPU之间的表现差距还是很大:最快的CPU 模型加载速度提升 100 倍,区分患者病情速度提升 7 倍。所以这里还是要劝各位处在水深火热的小伙伴们,就算用CPU硬刚,也要尽可能的选好的CPU。

  • 二值网络、三值网络

这一系列工作的出发点是随着现在模型越来越大,深度越来越深,参数越来越多,训练时间越来越长,算力显得越来越不足。在神经网络训练的整个训练过程中,浮点型数据的消耗的计算量尤其巨大,如果能把浮点计算转为定点计算,无疑能极大的提高训练效率。因为定点计算对算力的需求减少,所以用CPU也能搞定这个领域。

目前的权值简化策略大概分为三种,Binary和Ternary及 INT8。Binary是把权值简化为1和-1,而Ternary是把权值简化为1,-1,0。INT8的取值范围是 -128到127 。

title link Datasets
BNN+: Improved Binary Network Training openreview.net/pdf? CIFAR-10
Ternary Weight Networks researchgate.net/public MNIST、CIFAR-10
Towards Unified INT8 Training for Convolutional Neural Network arxiv.org/pdf/1912.1260 CIFAR-10


  • 量化训练Quantization Aware Training

量化训练是在INT8精度的基础上对模型进行量化。简称QAT(Quantization Aware Training)。量化训练是在模型训练中量化的,与训练后量化Post-Training Quantization(PTQ)不同。量化训练对模型的精度影响不大,量化后的模型速度基本与量化前的相同。

例如,使用CenterNet训练的一个网络,使用ResNet-34作为backbone,使用1024×1024作为测试图像大小的指标,精度不降反升,非常赞。

精度/指标 FP32 INT8(PTQ) INT8(QTA)
AP 0.93 0.83 0.94
速度 13ms 3.6ms 3.6ms

目前Pytorch当然也是支持QAT量化的。而且Pytorch量化训练出来的模型,目前官方只支持CPU哦,特别是专门支持了英特尔的X86的INT8指令集:

x86 CPUs with AVX2 support or higher

如上文提到的,除了模型的选用外,另外就是考虑是否可以简化自己的原始数据。传统上,深度学习的训练和推理过程大家用的是精度较高的浮点数值,例如FP32。高精度数值意味着 AI 系统会承载更大的计算、存储压力,有更高的功率消耗以及更复杂的系统设计。这种情况下肯定还是只能靠GPU往上堆了。可能有人不知道其实用INT8等低精度的定点计算在推理准确度上与32位浮点计算结果相差并不大。但是采用INT8这种低精度的定点计算,在计算速度和功率消耗上都有更好的表现。因为低精度数值可以更好地使用高速缓存,增加内存数据传输效率,减少带宽瓶颈,从而能够充分地利用计算和存储资源,并降低系统功率。某度开发了一个深度学习平台,当中发布了INT8离线量化方案。根据介绍是用了第二代英特尔® 至强® 可扩展处理器平台做的实验。利用集成的、对 INT8有优化支持的英特尔® 深度学习加速技术(VNNI 指令集),在不影响预测准确度的情况下,使多个深度学习模型在使用 INT8 时的推理速度,加速到使用 FP32 时的 2-3 倍之多。下面这张图是操作flowchart。

在推理准确度验证中,平台采用了英特尔® 至强® 金牌 6271 处理器,测试在拥有 50,0003 张图像的 Full ImageNet Val* 完整验证数据集上完成。如表 1 所示,从测试结果来看,在 ResNet-50 和 MobileNet-V1 两种模型的 TOP-1 准确率(预测出最大概率的分类是正确的概率)上,INT8 分别只有 0.4% 和 0.31% 的准确度损失4,基本可视为没有准确度损失。

在接下来的推理吞吐量(速度)性能测试中,平台采用英特尔® 至强® 金牌 6271 处理器单核部署,并根据百度的业务部署要求,Batch Size 配置为 1 来衡量吞吐量。如表 2 所示,测试结果表明,在 Full ImageNet Val 完整验证数据集上,ResNet-50 和 MobileNet-V1 两种模型的 INT8 推理吞吐量是 FP32 的 2.2 倍到 2.79 倍1。由此可见,在不影响预测准确度的情况下,使用 INT8,可让多种深度学习模型的推理速度得到显著提升。

应该说,英特尔® 数学核心函数库(Intel® Math Kernel Library,英特尔® MKL)和面向深度神经网络的英特尔® 数学核心函数库(Intel® Math Kernel Library for Deep Neural Network, 英特尔® MKL-DNN)在其中功不可没,它们的特性让某度的工程师们可以深度优化,并在自然语言处理、图像处理等模型上获得了显著的进展。

总的来说,没有GPU是不是就不能干活了?答案肯定是否定。人有多大胆地有多大产。 得敢想敢干。勇于面对困难。 没有困难也要制造困难。 就比如哪怕我有GPU,我就是想挑战一下自己的能力, 就是要用CPU把活干完。当然CPU和CPU之间也还是有差距的。在这里给朋友一句忠告:珍爱生命,谨慎选定方向。


Reference:

1、intel.cn/content/www/cn


user avatar   sigon-55 网友的相关建议: 
      哪些交往中的小技巧比如沟通做事方式等能够保护自己不受他人欺负?
user avatar   letian-huang 网友的相关建议: 
      

谢邀,没有法外之地,孩子还小,但作为监护人有负相关监护责任,不谈法律问题,只谈这种家长的观念,这是“惯子如杀子”,熊孩子迟早要受到社会的毒打,父母欠下的“教育债”早晚要还的!

孩子在车库拿大刀刮花奔驰,让他知道“错了就要付出代价”,这种代价由父母承担,但是作为父母也要反馈给孩子,这可以说是有一个教育孩子的绝佳机会,然而家长却选择推卸责任,这就是纵容,“子不教父之过!”

法律约束不了?这家长就是法盲,就这样家长,能教育好孩子?什么样的父母就有什么样的孩子,这话一点没错!




  

相关话题

  多喝水真的好吗? 
  怎么在家自己炸薯条、配调味理? 
  自然界有哪些「看起来很好欺负」的动物? 
  在算力充沛,深度学习模型大行其道的今天,传统机器学习的未来在哪里? 
  有哪些让人笑到肚子疼的搞笑段子? 
  婚姻需要什么代价? 
  过年还在上班是种怎样的体验? 
  在哪个瞬间让你觉得,人之初性本恶? 
  如何看待2016年3月柯洁表示 AlphaGo「赢不了我」? 
  成年人看漫画动画喜欢二次元是种什么心理?这种爱好值得坚持吗? 

前一个讨论
《泰晤士报》称日本政府认定东京奥运会将取消,争取2032年再办,可行性有多大?
下一个讨论
如何看待《进击的巨人》中艾伦杀死马莱国无辜的平民?





© 2024-12-25 - tinynew.org. All Rights Reserved.
© 2024-12-25 - tinynew.org. 保留所有权利