深度学习训练模型的硬件条件

之前热衷于学习理论知识,目前想跑代码了发现不知道从何下手,自己电脑上搭建的平台基本就是个摆设,因为跑不起来呀。今天我们就来看看想做深度学习应该怎么下手。

首先了解下基础知识:

1、深度学习用cpu训练和用gpu训练的区别

(1)CPU主要用于串行运算;而GPU则是大规模并行运算。由于深度学习中样本量巨大,参数量也很大,所以GPU的作用就是加速网络运算。

(2)CPU算神经网络也是可以的,算出来的神经网络放到实际应用中效果也很好,只不过速度会很慢罢了。而目前GPU运算主要集中在矩阵乘法和卷积上,其他的逻辑运算速度并没有CPU快。



目前来讲有三种训练模型的方式:

1. 自己配置一个“本地服务器”,俗称高配的电脑。

这个选择一般是台式机,因为笔记本的“高配”实在是太昂贵了,同一个价格可以买到比笔记本好很多的配置。如果是长期使用,需要长期从事深度学习领域的研究,这个选择还是比较好的,比较*。

① 预算一万以内的机器学习台式机/主机配置推荐:
https://blog.csdn.net/ShadowN1ght/article/details/78046287

② 从李飞飞的课程里,可以看到她的电脑配置,这个配置是机器学习的基本配置,我们可以参考一下:https://blog.csdn.net/caimouse/article/details/77942582

CPU: intel core i7-7700k 4.4G
内存:4X8G 
显示卡: 两个NV GTX 1070

硬盘: HDD一个, SSD两个

深度学习训练模型的硬件条件

③ 配置主机需要了解的参数(在上一篇博客中已经详细介绍了各个参数的含义):

GPU:一个好的GPU可以将你的训练时间从几周缩减成几天,所以选GPU一定要非常慎重。可以参看GPU天梯榜,都是一些比较新的型号具有很强的性能。

在英伟达产品系列中,有消费领域的GeForce系列,有专业绘图领域的Quadro系列,有高性能计算领域的Tesla系列,如何选择?有论文研究,太高的精度对于深度学习的错误率是没有提升的,而且大部分的环境框架都只支持单精度,所以双精度浮点计算是不必要,Tesla系列都去掉了。从显卡效能的指标看,CUDA核心数要多,GPU频率要快,显存要大,带宽要高。这样,最新Titan X算是价格便宜量又足的选择。

CPU:总的来说,你需要选择一个好的GPU,一个较好的CPU作为一个高速的串行处理器,常用来作为“控制器”使用,用来发送和接收指令,解析指令等。由于GPU内部结构的限制,使得它比较适合进行高速的并行运算,而并不适合进行快速的指令控制,而且许多的数据需要在GPU和CPU之间进行存取,这就需要用到CPU,因为这是它的强项。

内存条:主要进行CPU和外设之间的数据交换,它的存取速度要比硬盘快好几倍,但是价格比较昂贵,通常会和容量成正比。内存大小最起码最起码最起码要大于你所选择的GPU的内存的大小(最好达到显存的二倍,当然有钱的话越大越好)。在深度学习中,会涉及到大量的数据交换操作(例如按batch读取数据)。当然你也可以选择将数据存储在硬盘上,每次读取很小的batch块,这样你的训练周期就会非常长。常用的方案是“选择一个较大的内存,每次从硬盘中读取几个batch的数据存放在内存中,然后进行数据处理”,这样可以保证数据不间断的传输,从而高效的完成数据处理的任务。

电源问题:一个显卡的功率接近300W,四显卡建议电源在1500W以上,为了以后扩展,可选择更大的电源。

固态硬盘:作为一个“本地存储器”,主要用于存储各种数据。由于其速度较慢,价格自然也比较便宜。议你选择一个较大容量的硬盘,通常会选择1T/2T。一个好的方法是:“你可以利用上一些旧的硬盘,因为硬盘的扩展十分简单,这样可以节省一部分资金。”

散热:散热可以保证各种电子元件工作正常。还可以保证主机的效率,延长主机的使用寿命。 
常用的散热措施主要有4种: 
1)通过设置BIOS选项,具体的细节在网上搜索。 
2)添加散热片。它通常由铝或铜制成,通常安装在CPU或者GPU等原件的周围或者上面。铜制品通常会有更好的散热效果。 
3)添加散热风扇。
4)添加水冷。它通常用在高配的游戏主机上面,不仅具有很好的散热效果,同时基本上没有什么噪声。但是它的价格会比较高。如果你的主机配置了多个GPU,强烈建议你配置水冷,这可以持续的保持你的设备处于高速的运转中。

主板:是一个用来组装电路的PCB板。你需要将很多个元器件组装在它上面,然后通过焊锡来连接它。
如果你后期可能会扩展你的设备,那你就需要考虑主板的可拓展性。如果你不需要进行后期的拓展,那么你可以买一个相对便宜的主板,只需要满足你当前的需求即可。为什么要强调PCIE,作为一个高速的传输接口,它常常用来设备之间的通信,例如CPU和GPU或者GPU与GPU。如果你后期可能会拓展你的GPU个数,那么建议你选择带有PCIE3.0 x8和x16接口的主板。常用的主板有“超星微的X10SRA、C602、C612”等,总之,选择主板时需要在满足你的最低要求的同时考虑到拓展性。
机箱:机箱上面会有各种卡槽和接口,包括硬盘、主板、电源等。它的选择比较简单,只需要考虑硬盘和主板的尺寸即可。即要能将硬盘安装进去。

https://blog.csdn.net/WZZ18191171661/article/details/70099795

https://blog.csdn.net/yubaolouisliu/article/details/79684936

如何配置一台适用于深度学习的工作站?https://yq.aliyun.com/articles/229020

2.配置一台自己的云服务主机

当前云服务器的计费方式主要有两种:按时计费、按月计费和按年计费。国内有的公司提供了相应的GPU服务器和FPGA服务器平台。价格比较贵,但是可以根据项目需要选择合适的配置。

下面我将会给出一些有用的云服务器连接,感兴趣的同学可以自己探索。

  1. 百度AI云服务器,支持PaddelPaddel和Tensorflow
  2. 腾讯云服务器,支持GPU云服务器和FPGA云服务器,后者处于内测阶段
  1. 阿里云服务器,支持GPU云服务器和FPGA云服务器,后者处于内测阶段
  2. 华为机器学习云服务器
  3. 微软云服务器,国内不支持GPU服务器,北美支持
  4. 联众集群,一个专业的GPU集群解决方案提供商


配置一台自己的云服务主机方式:

美团云+anaconda+jupyter notebook: https://blog.csdn.net/tream733/article/details/78758856

美团云深度学习公测平台 :https://www.mtyun.com/doc/products/ai/dls/quickstart-tf

谷歌云:https://blog.csdn.net/sinat_25838589/article/details/79004503

阿里云:https://blog.csdn.net/bjkite/article/details/62984897

2.1 需要了解的专业词汇:

① 共享主机:也称虚拟主机,从互联网诞生至今,大部分站长都是从"共享主机"(shared hosting)开始学习建站的。所谓"共享主机",就是一台服务器上有许多网站,大家共享这台服务器的硬件和带宽。如果它发生故障,那么上面的所有网站都无法访问。

② VPS:(Virtual Private Server 虚拟专用服务器)简单理解VPS就是一台拥有公网IP的服务器,可以在一个服务器创建多个VPS,每个VPS都可分配独立公网IP地址、独立操作系统、实现不同VPS间磁盘空间、内存、CPU资源、进程和系统配置的隔离,为用户和应用程序模拟出“独占”使用计算资源的体验。VPS可以像独立服务器一样,重装操作系统,安装程序,单独重启服务器。VPS为使用者提供了管理配置的*,可用于企业虚拟化,也可以用于IDC资源租用。

③云主机:云主机是一种类似VPS主机的虚拟化技术, VPS是采用虚拟软件,VZ或VM在一台主机上虚拟出多个类似独立主机的部分,能够实现单机多用户,每个部分都可以做单独的操作系统,管理方法同主机一样。 而云主机是在一组集群主机上虚拟出多个类似独立主机的部分,集群中每个主机上都有云主机的一个镜像,从而大大提高了虚拟主机的安全稳定性,除非所有的集群内主机全部出现问题,云主机才会无法访问。

①②和③的具体区别:https://jingyan.baidu.com/article/9faa723197339b473c28cb32.html

①③共享主机用户直接面对特定的服务器,而云主机用户直接面对网络接口,看不到服务器内部。一个通俗的比喻是,你可以向银行租一个编号为"8888"的保险箱(共享主机),也可以把贵重物品直接交给保管公司,听任他们保管。

②③云主机能真正获得root权限,用户可以重装和升级操作系统,而VPS主机用户没有root权限,无法重装和升级操作系统。

总的来说,云主机便宜,可靠,可扩展性好。

2.2 如何选择云主机:

关于各种云的选择参考:机器学习深度学习云GPU资源与对比

按上文作者的话来说,也就是美团云的坑少些,价格也便宜些。(笔者还没有尝试)

等以后使用了之后再出详细教程。


3. 配置一个深度学习集群:

一般是大公司的选择,如BAT等都有自己的深度学习集群平台和自己的深度学习框架。在此不多加介绍。