作者:Param Popat导读
编译:ronghuaiyang
对于想学习深度学习的同学们来说,学习资源网上有很多,但是计算资源确很少,而GPU又太贵,怎么办呢?通过简单的设置,将CPU做深度学习的速度提升到3倍以上,大家又可以愉快的学习深度学习了!
在过去的几年里,无论是在学术界还是产业界,深度学习的速度都在加快。现在每家公司都在寻找基于人工智能的问题解决方案。这种繁荣有它自己的优点和缺点,但这是另一篇文章,改天再说。机器学习实践者的激增已经渗透到学术界的根源,几乎每个领域的学生都可以通过课程、mooc、书籍、文章,当然还有课程论文,接触到人工智能和ML知识。
然而,硬件资源的可用性阻碍了这种增长。GPU是你能够以一定的速度执行ML任务的最佳设备之一。然而高性能GPU的价格甚至可以到20449美元(NVIDIA Tesla GPU V100 32 gb) 。此外,使用高级GPU的消费级笔记本电脑,使用1050Ti或1080Ti之类的GPU,售价约为2000美元。为了减轻这种痛苦,谷歌、Kaggle、Intel和Nvidia免费提供了基于云的高计算系统,但对空间、计算能力、内存或时间都有限制。但是这些在线服务也有其缺点,包括管理数据(上传/下载)、数据隐私等。这些问题导致了我的文章的主要观点,“为什么不优化我们的cpu来实现深度学习任务的加速?”
性能的提升
对于下面提到的各种实验,我会展示我观察到的时间和利用率的提高。
- 10层深度CNN用于CIFAR-100图像分类。
- 3层深度LSTM进行IMDB情绪分析。
- 6层深度密集神经网络用于MNIST图像分类。
- 9层全卷积MNIST自动编码器。
这些任务用Keras写代码,使用TensorFlow后端,数据集和代码和和可执行库放在一个盘里。所使用的是SSD硬盘。
我们将考虑以下六种优化组合。
- 英特尔(R) Core (TM) i7。
- Intel(R) Xeon(R) CPU E3-1535M v6。
- 英特尔(R)核心(TM) i7与英特尔Python(英特尔i7*)。
- Intel(R) Xeon(R) CPU E3-1535M v6采用Intel Python (Intel Xeon*)。
- Intel(R) Core (TM) i7与Intel Python和处理器线程优化(Intel i7(O))。
- Intel(R) Xeon(R) CPU E3-1535M v6采用Intel python和处理器线程优化(Intel Xeon(O))。
对于每个任务,epochs的数量固定在50。从下图中我们可以看到,对于一个Intel(R) Core (TM) i7-7700HQ CPU @ 2.80GHz CPU, epoch的平均时间接近4.67秒,经过适当的优化后下降到1.48秒,即提高3.2倍。对于一个Intel(R) Xeon(R) CPU E3-1535M v6 @ 3.10GHz CPU,epoch的平均时间接近2.21秒,经过适当的优化后下降到0.64秒,提高了3.45倍。
每个epoch的平均时间
优化不仅仅是在时间上,优化的分布也优化了CPU的利用率,这最终导致更好的热量管理,你的笔记本电脑不会像以前训练深度神经网络时那么热。
使用率
我们可以看到,在不进行任何优化的情况下,训练时CPU利用率最高达到100%,从而减慢了所有其他进程并使系统升温。然而,通过适当的优化,i7和Xeon的利用率分别下降到70%和65%,但是在运行时间上却减少了。
这两个指标可以用以下相关术语进行总结。