本篇文章3827字,读完约10分钟
雷锋。(公开号码:雷锋。新闻:随着2017年Facebook开发者大会f8的召开,caffe2框架是开源的,机器学习和深度学习的开发社区再次处于激动人心的时刻。在f8会议上,来自facebook aml实验室的安德鲁·图洛克和贾·杨青上台介绍了caffe2的轻量级、易于使用和可扩展的特性。他们还强调了“unix哲学”(即无框架)的设计概念。就像贾杨青在智湖说的:“框架并不重要,但技术很重要。这就是为什么我一直主张核心软件,如GLO,nnpaxk,faiss FAIS应该单独发布,而不是放在框架中——每个框架都可以用这些软件进行优化。这就是做社区的原因。”下面是安德鲁·图洛克和贾·的讲话视频,还有一个由雷锋编辑的文本版本。
安德鲁·图洛克:caffe2在移动终端上的开发与应用
大家好,我是来自facebook aml实验室的andrew tullock,我的同事贾正在和我通话。我主要讲的是如何将机器学习和深度学习模型加载到移动终端中,包括caffe2中涉及的一些开源算法、软件和工具。杨青谈到如何将这些技术扩展到移动终端以外的设备上。
这是一个实时神经风格转移的例子,在本周的许多主题演讲中都提到过。
一年半前,当风格迁移技术首次被应用时,在一个大型gpu集群上处理一帧图像需要几分钟的时间。经过我们和其他同事对算法和软件的改进,这项技术现在可以“实时”在你的手机上实现实时风格转换,比几个月前好了几个数量级。
我们有一个图像数据库,里面有一些风格化的图像,比如莫奈或毕加索的画,用来训练cnn。训练目标是输出图片的样式改变,但图片的内容保持不变。模型训练完成后,将输入其他图像,样式也将发生类似的变化。起初,我们在facebook数据中心的gpu上进行离线模型培训,然后转向手机,这涉及到ios和android系统上高度优化的开源caffe2框架。
为什么facebook必须在移动端建立深度学习?Facebook拥有数百万移动用户,但现在大多数机器学习任务只能在云上完成。然而,移动端的机器学习任务有以下优点:保护隐私,因为数据不会离开您的移动端;避免网络延迟和带宽问题;改善用户体验,如优化订阅源排名功能。因此,我们从底层开始构建一个为移动终端优化的机器学习框架。
在施工过程中,有几个关键点。首先,一个关键点是我们遵循“unix哲学”,首先建立一个轻量级的框架核心,然后尝试完善整个生态。该框架的核心具有很强的可扩展性,可以在小型移动设备和大型gpu集群服务器上运行机器学习和深度学习模型。
另一个关键点是性能。特别是在计算能力弱的设备上,性能成为瓶颈,需要一些特殊的设计来提高。首先,在目标平台上使用最有效的原语,包括运行在gpu上的cudnn、运行在英特尔cpu上的mkl dnn等等。
第三个关键点是优化框架核心的足迹。这包括代码大小和模型大小。最小化代码大小是围绕最小核心进行的,这是一种可以添加插件的架构。缩小模型尺寸需要方便地使用最新的模型压缩技术。
对cpu的优化facebook希望在各种类型的设备上快速运行机器学习和深度学习模型,但是没有适合所有设备后端的通用模型大小。我们的基准单元是今天大多数手机使用的arm cpu。对于一些新设备,我们还对gpu甚至dsp进行了专门优化。目前,arm cpu是手机上常用的浮点运算芯片,其中一个关键点就是使用simd单元,所以我们编写了一套定制的neon内核,已经在开源的caffe2go项目中使用,大大提高了其他现有neon内核的性能。
至于卷积,我们的一名团队成员和一名实习生开发了nnpack库,其中包含一系列高级卷积算法(如winograd的3x3卷积最小滤波算法),并提供了大大提高性能的工具。我们的上述工作确实带来了性能上的巨大改进,特别是对于图像映射任务中的大卷积。
对gpu的优化再次强调后端需要一个足够小的框架核心,因为我们想把它放在任何地方。我们只需几百kb就可以加载这个框架的核心。对于最新的高端iphone,我们的机器学习和深度学习系统对gpu数据并行非常友好。因此,我们编写了一套定制的金属内核,并使用苹果的金属着色器库为caffe2创建了一个定制的gpu后端。这带来了一系列的好处,其中之一就是速度的提高,比完全改造前快了十倍;与优化的cpu库相比,它可以针对不同的问题将速度提高2-5倍。与此同时,能源消耗得到了实质性的改善,所以我们可以做更多的计算。
android系统上的Gpu是相似的。我们与高通公司合作开发了“Snapdragon神经处理引擎”(snpe)。现在高通Snapdragon soc芯片服务于大量的手机,现在它是caffe2的一流概念。我们可以使用这些处理器和数字信号处理器从本质上提高能效和性能。
下图是性能改进的示例。
当我们在数十亿个移动客户端上加载模型时,将开销降至最低尤为重要。你可以把这些模型想象成数百万或数千万个浮点数的集合。我们使用模型压缩技术来减少模型的大小,同时保持原始质量。我们的工具来自韩松·汉iclr在2016年写的一篇论文。他曾经是我们团队的实习生。压缩过程分为几个步骤。首先,我们修剪这些模型,去掉一些不太重要的权重。当我们修剪时,我们可以应用一些标准的定量技术。您可以将此过程视为将标准聚类算法技能应用于数十万个浮点数。
我们可以将每个32位浮点数压缩成几个位,代表它的成本指数。因此,这个过程大大减小了模型的大小,然后可以对其进行重新训练,以弥补任何定量损失并恢复其准确性。其中,我们得到一组代码簿,它代表每个权重的聚类分配。然后,我们可以应用标准的通用压缩算法,我们已经找到了最好的“zsd算法”,它可以提供异常高的压缩性能。
基于以上工具,我们可以使机器学习模型在压缩5-50倍时保持相同的精度。现在,让我的同事贾告诉你如何将这个系统应用到更广泛的机器学习生态系统中。
贾:当caffe2扩展到其他设备时,我们想做的是建立一个通用的机器学习和深度学习库,它可以扩展到成千上万的云设备,也可以缩小到你的掌上移动设备。
作为一般系统的氟化钙
机器学习模型可以在很多设备上运行,包括手机、服务器、云、覆盆子pi等。它也可以应用于工业应用,如自动驾驶。所有这些应用场景都有不同的特征和需求,因此开发一个系统来满足这些不同的需求是非常具有挑战性的。
安德鲁之前提到过“unix哲学”,这是我们一直坚持的原则。我们构建了一个非常轻量级和可移植的框架核心,它可以应用于各种移动平台。该核心用于管理各种底层函数库,即机器学习系统中涉及的所有方面(包括卷积、池等)。)。然后,我们根据不同的运行环境插入不同的组件来运行这些底层函数库。在服务器端,我们使用GLO进行大规模培训,在移动端使用nnpack库,在其他设备上使用metal,等等。
caffe2的易用性
当然,我们意识到单靠facebook是不可能把这个系统应用到所有设备上的。因此,我们要构建的平台系统非常注重开发的便捷性,以方便运行不同特性的代码。这里有一个例子。在机器学习领域,有一种叫做tsne(高维数据可视化工具)的工具,在caffe2中使用非常简单。代码如下,显示了caffe2的灵活性和定制。
健康的生态需要合作伙伴共同开发
我们上面提到的功能已经应用到许多facebook产品中,比如计算机视觉、机器翻译、语音识别和预测。如今,移动设备、个人电脑、可穿戴设备、云等构成了一个大规模的生态,因此整个行业的合作伙伴合作建立一个联盟,创造一个健康的生态,以不断推动深度学习的发展是非常重要的。
在这里,我们很高兴向您展示一个成功的产业链合作案例。我想每个人都应该知道gpu对今天机器学习的发展非常重要。我们与英伟达在许多方面进行了合作。例如,我们已经将cudnn库集成到我们的系统中,并创建了迄今为止最快的计算机视觉系统,它可以在几分钟内处理数百万幅图像。
另一个例子是与英特尔的合作。当进入部署阶段并将深度学习系统放到云中时,拥有高性能的cpu库非常重要。有一系列的工作称为多层感知,这是非常重要的预测。我们与英特尔合作开发了一个mkl dnn库,并将其集成到caffe2中。
正如我们之前提到的,我们与高通公司在移动snpe上合作运行机器学习模型,特别是cnn,它可以保持速度快五倍,同时具有出色的能耗性能。用户不必担心具体的硬件,但很快就开始使用新的硬件,如图形处理器和数字信号处理器。当然,现在没有云你什么也做不了。也许你会发现在个人电脑上运行机器学习模型非常困难,所以我们也与亚马逊和微软合作在云上部署这些深度学习库。您可以使用云实例,以便专注于手头的研究和产品工作,而不是通过许多障碍自己构建一个库。
Caffe2在facebook上经历了许多严格的测试,现在我们很兴奋也很荣幸能与所有合作伙伴一起促进caffe2在深度学习中的应用。上面提到的工具和图书馆已经放到了互联网上,我们将继续在社区中工作,这样人工智能就可以提高人们的生活水平,拉近人们之间的距离,创造一个更加友好的世界。
注:梁衡和黄鑫也对本文有贡献。
更多雷锋文章:
采访fpga 2017年最佳论文大师沈剑技术:深度学习的最大瓶颈是带宽问题,而不是计算
与李志飞的对话:为什么四年后莫博伊进入了语音助理市场?
雷锋原创文章。严禁擅自转载。详情请参考转载说明。
来源:搜狐微门户
标题:贾扬清F8现场演讲:从手机到大型服务器集群 Caffe2如何适用于不同设备和场景?
地址:http://www.shwmhw.com/shxw/60242.html