百度飞桨于近期宣布,深度学习开源框架2.0抢先版本正式发布,进入2.0时代。其中一项重大升级,就是推出更加成熟完备的命令式编程模式,即通常说的动态图模式。同时在该版本中将默认的开发模式定为动态图模式,满足用户直接使用该模式完成计算机视觉、自然语言处理、语音、推荐等全场景的AI算法开发。可见飞桨团队对采用动态图模式开发的成熟度,以及未来主力推广应用有着强大的自信和期待。

为什么飞桨在开发模式升级上持续大量投入?

动态图模式可以真正给广大开发者带来哪些实打实的好处?

本文将为你带来深度解读。

WHY动态图?

深度学习框架在编程界面上,一般有两种编程模式:命令式编程和声明式编程,即动态图和静态图。动态图模式下程序可即时执行并输出结果,编程体验和调试便捷性更佳;静态图模式下需完成整体网络结构的定义再执行,编程调试便捷性不够,但能够对全局编译优化,更有利于性能的提升,并天然利于模型保存和部署。

飞桨同时支持这两种编程模式,经过长期的深入技术探索和创新,已经实现同时兼顾两种方式的优势,达成了更有利于开发者的“动静统一的理想国”:

  • 模型开发时,采用动态图模式,编程效率高调试方便;
  • 模型训练部署时,支持动态图一键式自动转静态图,实现高性能训练,并无缝衔接模型存储和部署。

△ 图1 飞桨动静统一开发模式

在飞桨开源框架最新版本上,该模式已经达到很高的成熟完备度。开发者既可体验到动态图开发模式带来的极大的便利性,用动态图实现深度学习领域最前沿的模型算法;又可享受到经过极致优化的运行效率,并且可以很容易的将动态图转换为静态图来进行推理和部署。

接下来将一一为你揭晓真实体验效果。

成熟完备的动态图开发模式,带来便捷体验

成熟的动态图模式,可以为开发者带来极致体验,更优雅地编程。总结一下,便利性主要体现在以下三方面:

  • 调试程序的便利性。在动态图开发模式下,用户运行飞桨提供的API后,可即时返回运行结果,不需要先创建计算图再运行,这样便于用户更加方便地组织代码,交互式地调试程序。
  • 组建网络的高效性。在动态图开发模式下,用户可以使用Python的条件判断、循环等控制语句来执行模型算法的运算,不再需要使用静态图中的控制操作来执行运算,这样便于用户更加高效地组建网络。
  • 构建模型的灵活性。在动态图开发模式下,用户可以根据控制流选择不同的分支网络,也可以更自然地构建权重共享的网络,更自然地实现自定义损失函数和循环网络、以及其他新颖的网络结构,从而灵活地进行深度学习模型的创新。

同时,在最新版本上,飞桨动态图提供了对计算机视觉、自然语言处理、推荐系统、语音识别等领域主流算法模型的全面支持,同时也对前沿的学术研究提供了非常好的支持。已开放的动态图模型数量达到了100+。这些模型都已开源在GitHub上,开发者可基于动态图模型进行AI应用开发和前沿学术研究:https://github.com/PaddlePaddle/models/tree/develop/dygraph

更多飞桨动态图应用实践方法,欢迎访问飞桨官网文档。

△ 图2.支持动态图模式的算法模型(部分示例)

△ 图3 支持动态图模式的前沿学术论文中的模型(部分示例)

极致优化的动态图运行效率,享受卓越性能

飞桨对动态图运行效率的打磨,已持续数个版本,目前在主流的任务上,飞桨动态图执行模式已经能够达到与静态图媲美的水平,甚至达到业界领先水平。

△ 测试环境说明:CUDNN 7版本,CUDA 10.1版本,GPU V100单卡

在最新版本上,支持了自动混合精度和量化训练功能,在大幅提升效率的同时,保证最终模型的效果和原来的一致。以自动混合精度为例,代码实现如下:

混合精度训练通过框架自动选择训练精度(AUTOMATIC CASTING)实现,过程如下图所示。对于模型的每个执行操作,AutoCast模块自动决定使用哪种精度的数据类型,例如:对于能够使用fp16进行(比如conv,relu 等op),会优先使用fp16来进行运算,来提升执行效率;但是对于使用fp16会影响精度的op(比如exp,softmax运算等op),会自动转换为fp32进行计算,保证收敛效果;对于单个op输入的数据类型不一致的情况,会通过自动的转换,使得能够能够支持运算。这些选择都是框架会自动进行的,用户仅需要调用上面示例的代码即可。

△ 图4 混合精度训练AUTOMATIC CASTING流程

一行代码实现动转静,无缝衔接高速推理部署

飞桨框架最新版本的动转静功能,Python语法覆盖度处于业界领先水平,满足用户使用动态图编程调试、自动转静态图训练部署的需求;并且转换后性能几乎无损,实现媲美静态图的效果。

一行代码实现动转静。

动静转换的操作非常简单,仅需添加一个装饰器( @to_static ),框架就会自动将动态图的程序,转换为静态图的program,并使用该program训练、保存为静态图模型以实现推理部署。

飞桨动转静功能除了简单的一键式操作,还在进一步降低转换出错概率、提供便捷的转换诊断工具方面做了大量工作,为用户提供便捷的体验。

广覆盖Python语法,降低转换出错概率:飞桨通过将Python写的动态图代码转写为静态图代码,并在底层自动使用静态图执行器运行。这种转换方式使得用户可以灵活使用Python语法及控制流来构建神经网络模型,并且能够利用静态图的图优化策略进行加速。目前飞桨为用户提供以下几大类的语法支持,语法覆盖度处于业界领先水平:

  • 控制流相关关键词,例如if-elif-else条件,while循环等;
  • 运算类型,例如and、or、not逻辑运算,类型转化等;
  • Python函数相关,例如print,len,lambda表达式等;
  • 报错异常相关,例如assert等;
  • Python基本容器,例如list,dict等。

提供转换Debug功能,便捷查看转换信息:为了方便开发者查看转换后的静态图代码是否符合预期,飞桨提供了类似编译器的易用功能来帮助用户:

  • 报错信息对应到动态图代码行。
  • 设置断点功能:通过 pdb.set_trace(),用户可以进行断点调试。
  • 中间状态转换查看:飞桨框架为用户开放接口设定日志级别,让用户可以打印中间状态转换的代码。
  • 查看转换后的静态图代码:飞桨框架为用户提供一个可以直接调用的StaticLayer class,可以让用户获取转换后的静态图代码。

动转静后性能媲美静态图。

性能方面,在保证用户一键轻松实现动态图转静态图的同时,动态图转静态图之后的推理性能和静态图完全一致,兼顾动态图易用性和静态图部署性能的需求。

闻说双飞桨,翩然下广津

以上即飞桨动态图模式的最新创新进展,动态图开发模式经过持续数个版本的打磨,无论是功能特性、易用性,还是性能水平,都达到了相当的成熟完备度,甚至达到业界领先水平。飞桨一直潜心于底层基础技术的深耕,坚持为企业用户和开发者提供最灵活易用的产业级深度学习框架,并以『用户体验的持续优化』和『产业实践的打磨』作为迭代向前的两个重要驱动轮。

未来飞桨的发展离不开广大开发者的加持,期待更多的开发者加入飞桨,飞桨也将持续完善动态图开发模式,开放更多动态图实现的领先算法模型,优化运行效率,为开发者进行模型开发和开展前沿创新工作提供助力,踏着飞桨的战船疾风向前。

如果您加入官方 QQ 群,您将遇上大批志同道合的深度学习同学。

官方 QQ 群:1108045677。
如果您想详细了解更多飞桨的相关内容,请参阅以下文档。
官网地址:https://www.paddlepaddle.org.cn
飞桨开源框架项目地址:
GitHub: https://github.com/PaddlePaddle/Paddle
Gitee: https://gitee.com/paddlepaddle/Paddle

—  —

飞桨深度学习开源框架2.0抢先看:成熟完备的动态图开发模式相关推荐

  1. Karpathy更新深度学习开源框架排名:TensorFlow第一,PyTorch第二

    上周,Keras作者.谷歌研究科学家François Chollet晒出一张图,他使用Google Search Index,展示了过去三个月,ArXiv上提到的深度学习框架排行,新智元也做了报道: ...

  2. 【杂谈】超过12个,150页深度学习开源框架指导手册与GitHub项目,初学CV你值得拥有...

    之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息. 开源框架背景 现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caf ...

  3. 【杂谈】面向新手的深度学习开源框架指导手册与GitHub项目,欢迎加入我们的开源团队...

    之前我们公众号输出了很多深度学习开源框架相关的内容,现在整理成技术手册给大家分享以方便阅读,下面是详细信息. 开源框架背景 现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caf ...

  4. 【通知】有三AI发布150页深度学习开源框架指导手册与GitHub项目,欢迎加入我们的开源团队...

    之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息. 开源框架背景 现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caf ...

  5. 【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目

    这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...

  6. 【完结】给新手的12大深度学习开源框架快速入门项目

    文/编辑 | 言有三 这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpen ...

  7. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐

    人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐 本教程源代码目录在book/recommender_system,初次使用请您参考Book文档使用说明. 说明: 硬件 ...

  8. darknet框架_【通知】有三AI发布150页深度学习开源框架指导手册与GitHub项目,欢迎加入我们的开源团队...

    之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息. 开源框架背景 现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caf ...

  9. AI学习笔记(九)从零开始训练神经网络、深度学习开源框架

    AI学习笔记之从零开始训练神经网络.深度学习开源框架 从零开始训练神经网络 构建网络的基本框架 启动训练网络并测试数据 深度学习开源框架 深度学习框架 组件--张量 组件--基于张量的各种操作 组件- ...

最新文章

  1. 全文检索lucene中文分词的一些总结
  2. 2013杭电warm up1 hdu 4712 Hamming Distance
  3. Flink 1.9 实战:使用 SQL 读取 Kafka 并写入 MySQL
  4. Docker 数据持久化的三种方案
  5. matlab状态空间法算反馈阵,matlab中已知系统的状态方程怎样绘制系统阶跃响应曲线...
  6. promise.prototype.catch()
  7. 小米浏览器 解析html5,JavaScript - 判断当前用户使用的浏览器
  8. html网页模板如何修改,如何修改和管理网站模板
  9. 2020年黄历表_2020年黄历表(死亡时辰吉凶对照表)
  10. 批处理检测局域网电脑是否开机(转载)
  11. Win10系统上搭建GIT本地服务器
  12. 使用.htaccess 开启gzip 缓存文件 网页 提高速度 和 .htaccess文件用法集锦
  13. 让16位Pwin3.2程序在64位Win10上跑起来
  14. C++线程编程-设计无锁的并发数据结构
  15. IFAHP直觉模糊层次分析法matlab
  16. 【STM32学习笔记1】Cortex-M3与STM32基本概念
  17. 【Oracle客户端】PLSQL Developer 15 (64 bit)最新版安装使用教程(亲测)
  18. 【JavaWeb学习】Vue核心
  19. C#开发Windows Service程序
  20. javaweb报修系统源码

热门文章

  1. Linux下C语言使用、编译与调试
  2. Linux环境中Visual Studio Code 安装配置及其卸载(详细教程)
  3. 计算机专业英语外文翻译,计算机专业英语JAVA介绍外文翻译[共28页]
  4. 超参数搜索——网格搜索和随机搜索
  5. keras 使用多GPU
  6. python中的for else
  7. UCI机器学习数据集库
  8. CSV XLS文件区别
  9. php原生态三级联动_js,php,html实现地区三级联动
  10. 重构广义应用数学:人工智能,数学发展的重大机遇