作者 | Jasmeet Bhatia

编译 | KK4SBB

本文将对目前流行的几种Keras支持的深度学习框架性能做一次综述性对比,包括Tensorflow、CNTK、MXNet和Theano。作者Jasmeet Bhatia是微软的数据与人工智能架构师,本文内容仅代表个人观点。

如果现在有人质疑Keras在数据科学家和工程师社区的地位,那么就先请他去看看专业AI和云计算玩家对Keras的支持率吧。官方发布的最新版Keras,除了支持Theano等通用库之外,已经可以支持谷歌的Tensorflow和微软的CNTK深度学习库。去年,亚马逊云宣布他们的系统支持另一款强大的工具MXNet。

就在前几周,新一版的MXNet也兼容Keras。不过,截止目前MXNet貌似只支持v1.2.2版本的Keras,对最新版2.0.5的Keras还不支持。

尽管只要产品选用被支持的后端服务,就可以在其中部署Keras模型,但是开发人员和架构师们必须牢记Keras是属于适配不同深度学习框架的高层接口,还不支持任意调整外部库的模型参数。

因此,如果大家想要精细调节后端框架提供的所有参数,作者建议大家直接选用具体的框架,不必再用Keras做一层包装。不过随着时间的推移,Keras的功能必定会逐步完善。但是我们不得不说,目前Keras仍然是深度学习项目早期开发阶段的一个神器,它让数据科学家和工程师们可以快速生成和测试复杂的深度学习模型。

Keras还可以让开发人员快速对比测试几种深度学习框架的相对性能。Keras的配置文件中有一个参数指定了用什么后端框架。所以,大家只要写一份代码,就可以在Tensorflow、CNTK和Theano上都运行一次而无需改动代码。

至于说MXNet,因为它现在只支持v1.2.2版本的Keras,所以要稍微修改代码才能运行。显然,这些独立的框架可以利用开发库中各式各样的特性进一步调试优化,不过Keras为我们提供了一个比较这些框架基础性能的机会。

有不少人写过文章对比Keras支持后端的相对性能,Keras或者后端框架每出一个新版本,我们都能看到性能的巨大改善。

那么让我们看看最新版本的Keras和各个后端框架能达到什么性能。

首先,介绍一下本次实验的硬件配置。

所有的测试都是在装有NVidia Tesla K80 GPU 的Azure NC6 虚拟机上完成的。虚拟机的镜像文件是Azure DSVM (Data Science Virtual Machine)。镜像文件预装了Keras、Tensorflow、Theano、MXNet及其它数据科学工具。为了进行测试实验,所有应用都升级到最新版本,针对MXNet选用v1.2.2版本的Keras。有关Azure DSVM的细节资料可以点击链接

配置

由于每个框架的依赖不同,作者用三种不同的配置进行测试实验,具体如下:

尽管所有框架的开发团队都声称正在研发的新版本性能有所提升,可以用于科研项目,不过实际产品还是倾向于使用稳定版本。因此,本次测试的所有后端框架都使用了最新的稳定版本。

性能测试

为了比较各个框架的性能,作者使用了下面五种深度学习模型。为了保证实验的公平性,所有的模型都来自于Github上Keras项目的示例代码。

作者在自己的Github页面公布了所有的测试代码。

值得注意的是,其中两组测试没有包括MXNet模型。还是由于MXNet不支持最新版Keras的功能,需要改动较多的代码才能运行,所以排除在本次实验之外。其它三组实验只需少许改动代码即可支持MXNet,主要改动在于函数的命名不同。

实验1:CIFAR10 CNN


  • 模型类型:卷计算机网络

  • 数据集/任务名称: CIFAR10 图像数据集

  • 目标:将图片分到10个类别

就完成每个epoch速度而言,Tensorflow略胜MXNet一筹。就准确率/收敛速度而言,CNTK在第25轮迭代之时略微领先,不过第50轮迭代之后所有框架的准确率几乎趋同。

不同框架的性能比较图

实验2:MNIST CNN

  • 模型类型:卷计算机网络

  • 数据集/任务名称:MNIST手写数字数据集

  • 目标:识别照片中的手写数字

在本组实验中,Tensorflow的训练速度略快于Theano,远好于CNTK,不过各个框架的准确率和收敛速度不分伯仲。

实验3:MNIST MLP

  • 模型类型:多层感知机/神经网络

  • 数据集/任务名称:MNIST手写数字数据集

  • 目标:识别照片中的手写数字

本实验还是在MNIST数据集上测试标准的深度神经网络模型,CNTK、Tensorflow和Theano的速度大致相同(2.5-2.7s/epoch),而MXNet独树一帜,达到了1.4s/epoch的速度。MXNet在准确率和收敛速度方面也表现略好。

实验4:MNIST RNN


  • 模型类型:层次循环神经网络

  • 数据集/任务名称:MNIST手写数字数据集

  • 目标:识别照片中的手写数字

在这组实验中,CNTK和MXNet的训练速度比较接近(162-164s/epoch),Tensorflow比它们稍慢,只有179s/epoch。Theano在RNN模型上的表现相当糟糕。

实验5:BABI RNN


  • 模型类型:循环神经网络

  • 数据集/任务名称:bAbi项目

  • 目标:基于描述和问题训练两个循环神经网络模型。生成的向量用来回答一系列bAbi任务。

MXNet没有参与本组实验。Tensorflow和Theano的性能差不多,CNTK比它们快了50%,只需9.5s/epoch。

结论

各组实验中,不同框架的性能对比

  • Tensorflow在各组CNN模型的实验中都表现出色,但是在RNN模型上表现一般。

  • CNTK在 BAbi RNN 和 MNIST RNN 实验中的表现远远好于Tensorflow和Theano,但是在CNN实验中不及Tensorflow。

  • MXNet在RNN测试中的表现略好于CNTK和Tensorflow,在MLP实验中性能碾压其它所有框架。但是受限于v2版Keras的功能,无法参与另外两组对比实验,不过这种情况马上会得到解决。

  • Theano在MLP实验中的性能略好于Tensorflow和CNTK。

总结

从实验结果来看,所有框架都有各自擅长的领域,目前并没有哪一种框架能够全面碾压其它产品。不过,开源社区的参与者们仍旧在持续开发和维护这几款产品,不断提升它们的性能和扩大它们的功能,使得用户的使用和部署过程更方便。不过,性能只是深度学习模型的一个方面,用户在实际使用时还要兼顾效果、便捷性等多个因素。

原文 :Search fastest Keras Deep Learning backend

资源推荐

斯坦福大学Tensorflow深度学习课程表

资源 | 多伦多大学“神经网络与机器学习导论”2017年课程表

爆款 | Medium上6900个赞的AI学习路线图,让你快速上手机器学习

Chatbot大牛推荐:AI、机器学习、深度学习必看9大入门视频

Quora十大机器学习作者与Facebook十大机器学习、数据科学群组

128篇论文,21大领域,深度学习最值得看的资源全在这了(附一键下载)

葵花宝典之机器学习:全网最重要的AI资源都在这里了(大牛,研究机构,视频,博客,书籍,Quora......)

重磅|数据科学入门必看:来自斯坦福、MIT、微软、Twitter等名校名企的20门课程清单

资源 | 机器学习进阶,给你推荐13款ML框架

☞ 点赞和分享是一种积极的学习态度

技术 | Bengio终结Theano不是偶然,其性能早在Keras支持的四大框架中垫底相关推荐

  1. 可见光能量范围_通过能量转移技术实现双功能金属有机框架中分子马达的可见光驱动旋转...

    人造分子机器和马达的发展使得设计和构建能够精确控制纳米级结构运动的特定分子结构成为可能.在这些人工系统中,过度拥挤的烯烃分子马达由于其手性控制的光化学驱动的重复单向旋转运动而备受关注.虽然已经证明这些 ...

  2. 大型网站技术架构(3):WEB 前端性能优化

    上次说到了性能优化策略,根据网站的分层架构,可以大致的分为 web 前端性能优化,应用服务器性能优化,存储服务器性能优化三大类 这次来说一下 web 前端性能优化,一般来说,web 前端就是应用服务器 ...

  3. 技术帖:砖混、砖木、钢混、板楼、塔楼、框架、框架剪力墙等概念之区别优劣...

    技术帖:砖混.砖木.钢混.板楼.塔楼.框架.框架剪力墙等概念之区别优劣 http://bbs.fdc.com.cn/showtopic-16331376.aspx天天听KFS说这些词,资料上写这些词, ...

  4. Elasticsearch 技术分析(七): Elasticsearch 的性能优化

    硬件选择 Elasticsearch(后文简称 ES)的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件../config/elasticsearch. ...

  5. 没有技术说明文档的开源都是耍流氓:微软Roslyn编译即服务在CIIP中具体应用(上)...

    前段时间我发布了 github开源:企业级应用快速开发框架CIIP WEB+WIN+移动端,很多园友们都表示支持并与我探讨相关技术问题,上篇中我也承诺会写相关的技术文章,本篇就来介绍一下建模模块中使用 ...

  6. 「技术架构」10个提升应用程序性能的倚天剑和屠龙刀

    提高web应用程序性能比以往任何时候都更加重要.在线经济活动的份额正在增长;超过5%的发达国家的经济现在是在互联网上的(参见参考资料中的互联网统计数据).而我们这个始终在线.高度连接的现代世界意味着用 ...

  7. MindSpore技术专栏 | AI框架中图层IR的分析

    本文是MindSpore首席架构师金雪峰的知乎专栏『AI框架分析』的第二篇,首先向大家介绍下IR是什么? IR(Intermediate Representation即中间表示)是程序编译过程中,源代 ...

  8. 生物识别技术将终结密码时代?或许没那么简单...

    智造观点 随着人工智能的普及,生物识别技术也成为了当前比较流行的一种新兴技术.作为一项安全技术,也是本世纪最有发展潜力的技术之一,生物识别技术将信息技术与生物技术相结合,具有巨大的市场发展潜力.对此, ...

  9. 窄带物联网技术有望终结碎片化现状

    在经历过前几年的热烈关注后,近来物联网的发展和普及并不令人满意.其原因在于,没有合适的物联网传输手段.但如能利用运营商网络技术建设低功耗广域互联网,就可以真正实现"整个城市一张网" ...

最新文章

  1. 高考成绩等位分查询2021,等位分查询(等位分查询系统)
  2. rabbitmq相关开源代码c
  3. Http压测工具wrk使用指南
  4. 阿里云数据中台 Quick Audience 智能用户增长正式发布
  5. 收藏属于自己flash类库集工具
  6. java抓取新闻_【图片】【抓取】Java获取各大网站新闻【java吧】_百度贴吧
  7. 小甲鱼 OllyDbg 教程系列 (四) : 逆向 VisualSite Designer 之 硬件断点
  8. U3D脚本开发基础(转载)
  9. 【mac】Mac 安装Brew命令
  10. 一台linux服务器配置多个tomcat应用
  11. thinkphp5 router.php,ThinkPHP5 之route(路由)简述
  12. 虚拟机服务器关机命令,ESXi主机定时开关机设置
  13. 2020 最新JavaWEB面试题
  14. 程序员跟产品经理打起来了,事情的真相是...
  15. 网站备案后服务器更换到家里,域名备案后能更换服务器吗
  16. 收集的JS代码,学习js的入门经典
  17. Redis:Error starting userland proxy: listen tcp4 0.0.0.0:6379: bind: address already in use
  18.  定义一个变量,是一个三位数,求各个位数的和
  19. ​【​观察】云栖大会共话JDM模式 揭秘创新背后的价值和启示
  20. 1438oracle,一次ora-01438错误的处理

热门文章

  1. wife信号服务器可以改吗,不换无线路由器 该怎么提升WiFi信号
  2. Python+Anaconda中库的安装
  3. 李宏毅机器学习笔记(三)——Regression: output a scalar amp;amp; Gradient Descent
  4. 转:YUV RGB 常见视频格式解析
  5. STM32F103 与 STM32F407引脚兼容问题
  6. replace 使用函数作为第二参数
  7. 适用于SharePoint 2013 的 CAML Desinger
  8. 使用 fcntl 函数 获取,设置文件的状态标志
  9. 不走寻常路 设计ASP.NET应用程序的七大绝招
  10. Task04:青少年软件编程(Scratch)等级考试模拟卷(一级)