AI 加速器自学组装指南(一)──基本架构
▼
随着人工智慧议题越来越热门,越来越多人开始投入 Python 或 R 语言的学习,且透过各种强大的开源套件如 Tensorflow、Keras 、Caffe、Torch、Scikit-learn,大幅降低了我们进入机器学习及深度学习的门槛。不少初心者想问,该使用怎样的硬件环境才能加速训练资料的时间?如果你或你的公司打算建构一个 AI 运行环境,本文或许能带给大家一点帮助,少走点冤枉路;也欢迎有经验的你,在文章下面留言给予大家更多建议。
笔者公司开展了几个 AI 专案,有幸从头到尾参与了AI server 的选择、设定、测试、执行,从用 i5 CPU 优化、1050、1080Ti 到 NVIDIA 最顶规的 P100,当中问了一些强者也爬了不少文,这篇文章试图收敛下当初挑选的守则,当做小小的回报。AI 世界软硬件神人太多,期望抛砖引玉激起更多讨论,也欢迎强人不吝指教。
当跑深度学习(DL)、机器学习(ML)实验,模型太大、层数或神经元过多, 一般电脑可能需要花半天、数天甚至以周为单位才能完成,或者发现错误。对公司而言,效率不彰绝对不是件好事;对初学者而言,trial and error 来来回回的时间过长,其实很容易感到挫折,如果能加速实验进程,快速得到回馈并修正,对于这领域的学习与研究也会有较快的进展。
如何为自己的模型加速?
如果你是个初踏入 ML、DL 的初心者,学会 Python/R 不久,想试着建构模型,微软设置了 Azure Machine Learning Studio 这个平台,使用介面相当直觉,也可以直接套用微软本身提供的演算法模组修改参数就好,可以轻松将模型建置起来。而亚马逊、Google 也提供类似的服务。
- Azure Machine Learning Studio
- Amazon Machine Learning 入门
- Google Cloud Machine Learning
如果你的模型并非图像辨识相关,有没有显卡加速对你而言其实关系不大。加以,若你使用的语言是 Python 及英特尔的 CPU,英特尔推出加速库“Intel Distribution for Python”,其实就能得到不错的提升。前英特尔高级工程师 James Reinders 先前还出来背书,使用四核心 i5 的 iMAC,透过加速库效能提升了 20 倍。
但如果你跑的是 CNN 、RNN、 Reinforcement Learning 等 neural network 模型,苦于模型运算庞大,或想参加Kaggle、WebVision 一类竞赛(很可惜今年 ImageNet 是最后一届),这篇文章或对你有所帮助。
如果是要自己组来玩玩,让你的实验模型跑得动、可以参加竞赛,价格差不多在台币 5~10 万元之间可以搞定,这个价格不是绝对,现有设备规格、预算、模型大小……都是变动因素,甚至你不需要重新组台电脑,只需要加张显卡就已够用。
GPU 加速该怎么挑?
目前在跑 CNN 使用 GPU 加速一般多直接选择 NVIDIA 显卡,倒非 AMD 效能较差,而是 NVIDIA 的 CUDA 在软硬、CPU / GPU 整合上做了不少努力,CPU / GPU 原始码的转换用 C 或 C++ 就可以上手,较不需要复杂的转换和修改,对许多新手玩家而言,入门门槛较 AMD 采 Open CL 低一点。
在预算有限的情况下,买一张 20 万的 P100 来跑你的模型,未必是唯一的选择,到底如何挑选一张最符合效益的显卡?
先讲 RAM,基本上 3GB RAM 绝对不够,如果参加一些 Kaggle 等常规竞赛,6GB RAM 其实就已足够。但 GPU 最重要的还是看其记忆体频宽(Memory Bandwidth)与 GFLOPs。
记忆体频宽决定了 GPU 输出效率,记忆体频宽为时脉与介面频宽的乘积。简单来说,时脉就像水流速度,介面频宽是水管的宽窄,而在一定时间内水管通过的水流量就是记忆体频宽,如果记忆体频宽不够,即便记忆体容量(水桶)再大,也是徒然。对平行运算而言,记忆体频宽尤其重要,而这点,GPU 比 CPU 优秀得多,也是为什么平行运算多拿 GPU 加速的原因。
除了直接看时脉、介面频宽来检视记忆体频宽,维基其实查得到 NVIDIA 与 AMD 所有 GPU 的公版设定与测试数值,透过这两张表检视显卡的参数,其实一目了然。
- List of Nvidia graphics processing units
- List of AMD graphics processing units
GFLOPs 代表显卡的运算速度,从部落客 Guanghan Ning’s 整理的列表,可看出以 Giga 为单位,NVIDIA 系列显卡,每秒最高可进行的浮点运算次数性价比,基本上,1080 或 1070 系列 C/P 值其实相当不错。
(Source:Guanghan Ning)
对 GPU 的挑选守则曾在 Kaggle 取得名次的 Tim Dettmers,撰写了一篇文章《Which GPU(s) to Get for Deep Learning》(中译版本)写了他试过 NIVDIA 甚至英特尔 Xeon Phi 为加速器的经验,以及 NIVDIA 各产品线 GPU 的详细比较,或许会给你更多灵感。
软硬整合才是大关键
显卡的选择除了单看硬件规格,更重要的还要看你选择的平台,是否与显卡最适配,无论你先决定显卡还是平台,绝对都要考虑到适配问题。香港浸会大学副教授褚晓文为首的团队,对于 TensorFlow、Caffe、Torch、CNTK 等深度学习框架做了性能测试报告,可看出在 i7、E5、GTX 980/1080、Tesla K80 等硬件环境下,不同 batch size、不同模型的加速状况,如果你是跑图像 model,可参考 alexnt 的测试结果,文字 model lstm 则是一个不错的参考依据。除了平台、和硬件的适配,显卡跟主机板 PCIe 合不合也需注意。
(Source:香港浸会大学)
文末会附上我们成功架设的软硬件规格供参考,一起在 AI 路上精进,在这场科技盛会插上一脚,并期望有朝一日,看见它开花、结果。
附录:AI 使用的 DIY PC 配备表
平价版(使用 NVIDIA 1080 Ti 加速)
顶规版(使用 NVIDIA Tesla P100加速)
▼
特别声明 本页内容仅供参考,版权终归原著者所有,若有侵权,请联系我们删除。