原文来源:fast.ai
作者:Rachel Thomas
编译:嗯~阿童木呀
来源:「雷克世界」授权 产业智能官 转载。
对于想要入门深度学习的新手来说,可能会存在以下几个问题:我需要什么样的电脑来学习深入学习?对初学者来说什么样的深度学习库比较合适?该如何将深度学习投入到生产中?我认为所有这些问题都都涵盖在一个主题之下,即在深度学习中需要的硬件、软件、背景和数据是什么样的?这篇文章就是专门针对那些刚接触深度学习这个领域,并且对入门感兴趣的新手们的。
你需要的硬件
真的要非常感谢游戏产业。
毫不夸张地说,电子游戏产业在收入方面要大于电影和音乐产业的总和。在过去的20年里,电子游戏产业推动了GPU(graphical processing units,图形处理单元)的巨大进步,即用于绘制图形所需的矩阵运算。幸运的是,这些正是深度学习所需的计算类型。而GPU技术的这些进步则是一个关键部分,诠释了为什么现在的神经网络比几十年前更为强大。在大多数情况下,如果没有GPU那深度学习模型的训练过程将会非常缓慢。
并非所有的GPU都是一样的
大多数深度学习从业者并不是直接对GPU进行编程,我们正在使用软件库(如PyTorch或TensorFlow)来处理这个问题。但是,想要有效使用这些库,你需要使用正确类型的GPU。
CUDA和OpenCL是进行GPU编程的两种主要方式。CUDA是迄今为止开发最为完善的、拥有最广泛的生态系统,并且得到深度学习库最有力的支持。CUDA是由Nvidia创建的专有语言,因此它不能被其他公司的GPU使用。
今年夏天,AMD宣布发布一个名为ROCm的平台,为深度学习提供更多的支持。而ROCm对于诸如PyTorch、TensorFlow、MxNet和CNTK等主要的深度学习库,目前仍处于开发阶段。虽然我非常希望看到一个开源的替代方案能够取得成功,但不得不承认,我发现ROCm的文档难以理解。我刚刚阅读了ROCm网站的概述、入门和深度学习页面,但仍然不能用我自己的话来对ROCm进行一个概述,尽管我想在这里把它涵盖在内以便更为完整。(我虽然没有硬件背景,但我认为像我这样的数据科学家应该成为该项目目标受众的一部分。)
如果你没有GPU
如果你的电脑没有GPU,那么你有以下几个很好的选择:
•通过浏览器使用Crestle:Crestle是一个服务器(由fast.ai学生Anurag Goel开发),它能够为你提供一个已经建立好的云服务,其中,所有的流行科学和深度学习框架都已预先安装和配置好以在云端的GPU上得以运行。它很容易通过你的浏览器进行访问。新用户可免费获得10小时和1 GB的存储空间。之后,GPU的使用费用为每小时59美分。对于那些刚接触AWS或刚开始使用console的新手们来说,这是一个不错的选择。
•通过你的控制台设置AWS云实例:你可以按照本fast.ai设置课程中的步骤创建一个AWS实例(能够远程为你提供Nvidia GPU)。AWS为此每小时收取90美分。尽管我们的设置材料都是关于AWS的,但是一位fast.ai的学生创建了一个用于深度学习的Azure虚拟机的指南。如果有人写关于Google云端引擎的博客文章,我很乐意分享该链接。
•构建你自己的盒子。以下是我们fast.ai论坛中一个非常冗长的话题,人们可以在其中提出问题、分享他们正在使用的组件,并发布其他有用的链接和提示。最便宜的新型Nvidia GPU是300美元左右,一些学生在eBay或Craigslist上发现了更为便宜的二手GPU,而另外一些则要为更强大的GPU支付更多的费用。我们的一些学生写了篇博文,记录了他们是如何构造自己的机器的:
1.Mariya Yao所写的《深度困惑:在构建深度学习机过程中的不幸经历》。
https://www.topbots.com/deep-confusion-misadventures-in-building-a-machine-learning-server/
2.Sravya Tirukkovalur所写的《以一种懒惰而快速的方式构建一个深度学习机》。
https://medium.com/impactai/setting-up-a-deep-learning-machine-in-a-lazy-yet-quick-way-be2642318850
3.Brendan Fortuner所写的《创建自己的深度学习盒》
https://towardsdatascience.com/building-your-own-deep-learning-box-47b918aea1eb
你所需要的软件
可以说,深度学习是一个相对不成熟的领域,因此相应的库和工具变化速度非常快。例如,我们在2016年课程中选择使用的Theano,现在已经不再使用了。而我们目前使用的PyTorch,则是在今年(2017年)刚刚发布的。就像Jeremy以前所写的那样,你应该要保持这样一种假设,你今天所学到的任何特定的库和软件都将在一两年内被淘汰。而在这个过程中,最重要的是理解底层概念。为此,我们在Pytorch上创建了自己的库,我们相信这将使深度学习概念更为清晰。
Python是目前为止深度学习中最为常用的语言。现如今,有许多深度学习库可供选择,而几乎所有主要科技公司都支持不同的库,尽管这些公司的员工经常混合使用各种工具。深度学习库包括TensorFlow(谷歌)、PyTorch(Facebook)、MxNet(华盛顿大学,由亚马逊改编)、CNTK(微软)、DeepLearning4j(Skymind)、Caffe2(也是Facebook),Nnabla(索尼)、PaddlePaddle(百度) 、以及Keras(一种高级API,在此列表中的其他几个库上运行)。所有这些都有可用的Python选项。
动态与静态图计算
在fast.ai中,我们优先考虑程序员可以进行实验和迭代(通过更简单的调试和更直观的设计),这要比理论性能上的速度提高重要得多。而这就是我们使用PyTorch的原因,它是一个具有动态计算功能的、灵活的深度学习库。
深度学习库与库之间的一个区别在于,它们是使用动态还是静态计算(诸如MxNet和现在的TensorFlow,是两者都允许的)。动态计算,意味着程序是按照你所编写的顺序执行的。这通常会使调试更为容易,并且使得将想法从大脑中转换成代码变得更为直接、简单。静态计算,意味着你要预先为你的神经网络构建一个结构,然后在上面执行操作。从理论上讲,这使得编译器能够进行更好的优化,尽管这同时也意味着你预计程序能做的和编译器真正执行的内容之间可能会有更多的脱节。另外,这还意味着,bug可能会更多地从导致其产生的代码中移除(例如,如果在构建图表时出现错误,你可能不会意识到,直到稍后你在上面执行一个操作)。即使从理论上来看,使用静态计算图的语言要比使用动态计算的语言具有更好的性能,但我们经常发现,在实践中并非如此。
谷歌的TensorFlow主要使用静态计算图,而Facebook的PyTorch则使用动态计算。(注:两周前,TensorFlow刚宣布了一个动态计算选项——Eager Execution,尽管它出现的还算很早,但大多数TensorFlow文档和项目都使用的是静态选项)。今年9月,fast.ai宣布,我们选择了PyTorch而不是TensorFlow,并将其用于开发我们自己的库(PyTorch的编码最佳实践的高级包装器)。简单地说,下面是我们选择PyTorch的几个简要原因(这里有更为详细的解释):
•更容易调试
•动态计算更适合于自然语言处理
•传统的面向对象的编程风格(于我们而言更自然)
•TensorFlow使用诸如scope(范围)和session(会话)等不寻常的协议可能会令人感到困惑,而且还有更多的东西要学习。
谷歌在营销TensorFlow方面投入的资源比其他任何人都要多,而我认为这是TensorFlow如此知名的原因之一(对于许多深度学习的“门外汉”来说,TensorFlow是他们所听说过的唯一的深度学习框架)。如上所述,TensorFlow几周前发布了一个动态计算选项,解决了上述一些问题。因此,很多人都在问,我们是否要回选TensorFlow。可以这样说,动态选项还是相当新的,而且还不太成熟,所以目前为止,现我们还是很乐意继续使用PyTorch的。不过,TensorFlow团队也是非常乐意接受我们的想法的,同时,我们也很乐意看到我们的fastai库被移植到TensorFlow上。
在生产过程中需要什么:不是GPU
许多人把在生产中使用深度学习的想法过于复杂化了,认为他们需要的系统要比实际使用的要复杂得多。你可以在生产中使用CPU以及你所选择的网络服务器进行深度学习,实际上,这是我们所推荐的大多数使用情况。这里有几个关键点:
•在生产过程中进行训练是极其罕见的。即使你想每天更新模型权重,也不需要在生产中进行训练。这是一个好消息!意味着你只是在生产过程中进行推理(通过你的模型正向传递),而这要比训练快得多、简单得多。
•你可以使用任何你所喜欢的Web服务器(例如Flask),并将推理设置为一个简单的API调用。
•如果你能够有效地批量处理数据,那么GPU将会提供更快的速度。即使你每秒收到32个请求,使用GPU的话都很可能会使你减慢速度,因为从第一个请求到达直到收集全部32个请求时,你必须要等一段时间,继而执行计算,然后返回结果。我们建议在产品中使用CPU,并且可以根据需求添加更多的CPU(比使用多个GPU要简单得多)。
对于大公司来说,在产品中使用GPU可能是有意义的,而当你达到这个公司大小的时候这一点就会很清楚了。在没有需求之前过早地尝试进行扩展只会增加不必要的复杂性,并让你的速度慢下来。
你所需要的背景:1年的编程经验
激发Jeremy和我创建《程序员实用性深度学习》(http://www.fast.ai/2017/11/16/what-you-need/course.fast.ai)的挫折之一是,大多数深度学习材料分为两类:
•要么太浅,要么太深,以至于不能提供实际在工作场所或创建最先进的模型时使用深度学习所需要的信息或技能。如果你只是想要一个概述,那这就足够了,但如果你想成为一个工作实践者,这可能会令你失望。
•高度理论化并假设具有研究生水平的数学背景。对于许多人来说,这是一个令人望而却步的的屏障。我还发现,即使是有数学博士学位的人,在学习如何对实用性解决方案编程方面,这个理论并不是非常奏效。其实,许多材料都有这个倾向并不奇怪。直到最近,深度学习还几乎完全是一门学科,很大程度上是由发表在顶级学术期刊上的问题所驱动发展的。
我们的免费编程课程《程序员实用性深度学习》独特之处在于,唯一的先决条件是1年的编程经验,而这只是教你该如何创造最先进的模型。其实,你的学科背景可以是任何语言,但在开始课程之前你可能会想学习一些Python,因为这是我们将要使用的。我们根据需要引入数学概念,但我们不建议你提前尝试学习数学理论。
如果你不知道如何编写代码,强烈建议去学习,而且如果你对数据科学感兴趣的话,Python会是一个不错的语言选择。
你所需要的数据:远远低于你的想象
虽然很多人声称,你需要Google大小的数据集来进行深度学习,其实这是错误的。迁移学习的力量(结合数据增强等技术)使得人们可以将预先训练的模型应用于更小的数据集中。正如我们曾经在此处(http://www.fast.ai/2017/08/21/ai-in-medicine/)探讨过的那样,在医疗初创企业Enlitic里,Jeremy Howard领导的一个团队只使用了1000例肺癌CT扫描的样本,就建立了一个要比4位专业放射科医生更为精确的肺癌诊断算法。C ++的Dlib库有一个样本,其中一个人脸检测器只使用包含18张人脸的4个图像便可以进行精确训练!
关于访问的说明
对于我所接触过的绝大多数人来说,深度学习的入门门槛远远低于他们的预期,而且成本也在预算之内。但是,我意识到事实并非如此。我定期联系那些想要参加我们的在线课程,但无法承担AWS成本的学生。不幸的是,我并没有解决方案。除此之外还有其他的困难,Bruno Sánchez-A Nuño写了关于在没有可靠互联网接入的地方进行数据科学的挑战所在(https://towardsdatascience.com/in-defense-of-cheap-data-science-f630f248d400),而且国际学者Tahsin Mayeesha描述了在孟加拉国等国家进行MOOC访问的隐藏障碍。我很关心这些关于访问的问题,而令人满意的是至今没有解决方法。
人工智能赛博物理操作系统
AI-CPS OS
“人工智能赛博物理操作系统”(新一代技术+商业操作系统“AI-CPS OS”:云计算+大数据+物联网+区块链+人工智能)分支用来的今天,企业领导者必须了解如何将“技术”全面渗入整个公司、产品等“商业”场景中,利用AI-CPS OS形成数字化+智能化力量,实现行业的重新布局、企业的重新构建和自我的焕然新生。
AI-CPS OS的真正价值并不来自构成技术或功能,而是要以一种传递独特竞争优势的方式将自动化+信息化、智造+产品+服务和数据+分析一体化,这种整合方式能够释放新的业务和运营模式。如果不能实现跨功能的更大规模融合,没有颠覆现状的意愿,这些将不可能实现。
领导者无法依靠某种单一战略方法来应对多维度的数字化变革。面对新一代技术+商业操作系统AI-CPS OS颠覆性的数字化+智能化力量,领导者必须在行业、企业与个人这三个层面都保持领先地位:
重新行业布局:你的世界观要怎样改变才算足够?你必须对行业典范进行怎样的反思?
重新构建企业:你的企业需要做出什么样的变化?你准备如何重新定义你的公司?
重新打造自己:你需要成为怎样的人?要重塑自己并在数字化+智能化时代保有领先地位,你必须如何去做?
AI-CPS OS是数字化智能化创新平台,设计思路是将大数据、物联网、区块链和人工智能等无缝整合在云端,可以帮助企业将创新成果融入自身业务体系,实现各个前沿技术在云端的优势协同。AI-CPS OS形成的数字化+智能化力量与行业、企业及个人三个层面的交叉,形成了领导力模式,使数字化融入到领导者所在企业与领导方式的核心位置:
精细:这种力量能够使人在更加真实、细致的层面观察与感知现实世界和数字化世界正在发生的一切,进而理解和更加精细地进行产品个性化控制、微观业务场景事件和结果控制。
智能:模型随着时间(数据)的变化而变化,整个系统就具备了智能(自学习)的能力。
高效:企业需要建立实时或者准实时的数据采集传输、模型预测和响应决策能力,这样智能就从批量性、阶段性的行为变成一个可以实时触达的行为。
不确定性:数字化变更颠覆和改变了领导者曾经仰仗的思维方式、结构和实践经验,其结果就是形成了复合不确定性这种颠覆性力量。主要的不确定性蕴含于三个领域:技术、文化、制度。
边界模糊:数字世界与现实世界的不断融合成CPS不仅让人们所知行业的核心产品、经济学定理和可能性都产生了变化,还模糊了不同行业间的界限。这种效应正在向生态系统、企业、客户、产品快速蔓延。
AI-CPS OS形成的数字化+智能化力量通过三个方式激发经济增长:
创造虚拟劳动力,承担需要适应性和敏捷性的复杂任务,即“智能自动化”,以区别于传统的自动化解决方案;
对现有劳动力和实物资产进行有利的补充和提升,提高资本效率;
人工智能的普及,将推动多行业的相关创新,开辟崭新的经济增长空间。
给决策制定者和商业领袖的建议:
超越自动化,开启新创新模式:利用具有自主学习和自我控制能力的动态机器智能,为企业创造新商机;
迎接新一代信息技术,迎接人工智能:无缝整合人类智慧与机器智能,重新
评估未来的知识和技能类型;
制定道德规范:切实为人工智能生态系统制定道德准则,并在智能机器的开
发过程中确定更加明晰的标准和最佳实践;
重视再分配效应:对人工智能可能带来的冲击做好准备,制定战略帮助面临
较高失业风险的人群;
开发数字化+智能化企业所需新能力:员工团队需要积极掌握判断、沟通及想象力和创造力等人类所特有的重要能力。对于中国企业来说,创造兼具包容性和多样性的文化也非常重要。
子曰:“君子和而不同,小人同而不和。” 《论语·子路》云计算、大数据、物联网、区块链和 人工智能,像君子一般融合,一起体现科技就是生产力。
如果说上一次哥伦布地理大发现,拓展的是人类的物理空间。那么这一次地理大发现,拓展的就是人们的数字空间。在数学空间,建立新的商业文明,从而发现新的创富模式,为人类社会带来新的财富空间。云计算,大数据、物联网和区块链,是进入这个数字空间的船,而人工智能就是那船上的帆,哥伦布之帆!
新一代技术+商业的人工智能赛博物理操作系统AI-CPS OS作为新一轮产业变革的核心驱动力,将进一步释放历次科技革命和产业变革积蓄的巨大能量,并创造新的强大引擎。重构生产、分配、交换、消费等经济活动各环节,形成从宏观到微观各领域的智能化新需求,催生新技术、新产品、新产业、新业态、新模式。引发经济结构重大变革,深刻改变人类生产生活方式和思维模式,实现社会生产力的整体跃升。
产业智能官 AI-CPS
用“人工智能赛博物理操作系统”(新一代技术+商业操作系统“AI-CPS OS”:云计算+大数据+物联网+区块链+人工智能),在场景中构建状态感知-实时分析-自主决策-精准执行-学习提升的认知计算和机器智能;实现产业转型升级、DT驱动业务、价值创新创造的产业互联生态链。
长按上方二维码关注微信公众号: AI-CPS,更多信息回复:
新技术:“云计算”、“大数据”、“物联网”、“区块链”、“人工智能”;新产业:“智能制造”、“智能农业”、“智能金融”、“智能零售”、“智能城市”、“智能驾驶”;新模式:“财富空间”、“特色小镇”、“赛博物理”、“供应链金融”。
点击“阅读原文”,访问AI-CPS OS官网
本文系“产业智能官”(公众号ID:AI-CPS)收集整理,转载请注明出处!
版权声明:由产业智能官(公众号ID:AI-CPS)推荐的文章,除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们,与您共同协商解决。联系、投稿邮箱:erp_vip@hotmail.com