不是“重复”造轮子,百度飞桨框架2.0如何俘获人心
2016 年,百度 PaddlePaddle 打响了国产深度学习框架开源的第一枪。
2019 年 4 月,在 Wave Summit 深度学习开发者峰会上,首次发布了PaddlePaddle 的中文名“飞桨”,开始强调自己更适合中国开发者,以及更加专注于深度学习模型的产业实践。与此同时,飞桨的发展开始提速。
时间来到 2020 年,这一年是国产深度学习框架的高光时刻,作为国产领头羊的飞桨动作频频,不断更新升级。
2021 年 3 月,百度正式推出飞桨框架 2.0 正式版,实现了一次跨时代的升级。如今,在 GitHub 上,飞桨已收获Star数量达到了14.6k,被越来越多的开发者所使用。
从开发、训练到部署:飞桨框架 2.0 从“更新升级”到“全面换代”
飞桨作为我国首个开源开放的深度学习平台,想要保持自己的地位,必须要有自己独特的优势。经过多年的更新迭代,飞桨已经集开发便捷的核心框架、超大规模深度学习模型训练、多端多平台部署的高性能推理引擎和覆盖多领域的产业级模型库四大核心技术于一体,始终保持技术领先与功能完备。如今飞桨已凝聚 265 万开发者,服务 10万多家企业,创建了超过 34 万个模型,帮助越来越多的行业完成AI赋能,实现产业智能化升级。
与之前的版本迭代相比,此次 2.0 版本的发布对于飞桨来说,不仅仅是一次常规升级,而是一次“基础设施”的全面更新换代!这一次,百度从产业实践的全流程出发,对 深度学习模型的开发、训练、部署进行了整体优化,进一步加速 AI 应用的大规模落地。
AI Workflow | 更新/升级 | 功能 |
AI 模型开发 | 成熟完备的动态图模式 | 1、默认的开发模式升级为命令式编程模式(动态图)。 2、支持查看变量的输入、输出,灵活调试。 3、全面完备的动转静支持。 |
API 体系全新升级 | 1、体系化:重新梳理和优化了 API 的体系结构,新增 API 217 个,优化修改 API 195 个。 2、简洁化:经典的网络模型结构都被封装成了高层 API,在编程过程中可以同时使用高层 API 与基础 API。 | |
AI 模型训练 | 分布式训练能力的提升 | 新增支持混合并行模式,即数据并行、模型并行、流水线并行这三种并行模式可以相互组合使用,实现对千亿参数规模的模型训练。 |
业内首个通用异构参数服务器技术 | 支持同时使用不同的硬件进行混合异构训练,解决了搜索推荐领域大规模稀疏特征模型训练场景下,IO 占比过高导致的计算资源利用率过低的问题。 | |
AI 模型部署 | 硬件适配升级 | 硬件生态持续繁荣,已经适配和正在适配的芯片或 IP达到 29款。 |
一、更高效地开发 AI 模型
1、成熟完备的动态图模式
由于命令式编程模式(动态图)对开发者的友好性,飞桨于 2019 年初也在推进动态图功能。此次升级,飞桨将默认的开发模式升级为动态图,这标志着飞桨的动态图功能已经成熟完备。据了解,飞桨 框架2.0 支持用户使用动态图完成深度学习相关领域全类别的模型算法开发。动态图模式下,开发者可以随时查看变量的输入、输出,方便快捷的调试程序,带来更好的开发体验。
为了解决动态图的部署问题,飞桨提供了全面完备的动转静支持,在 Python 语法支持覆盖度上达到领先水平。开发者在动态图编程调试的过程中,仅需添加一个装饰器,即可无缝平滑地自动实现静态图训练或模型保存。同时飞桨框架 2.0 还做到了模型存储和加载的接口统一,保证动转静之后保存的模型文件能够被纯动态图加载和使用。
在飞桨框架 2.0 版本上,官方支持的动态图算法数量达到了 270+,涵盖计算机视觉、自然语言处理、语音、推荐等多个领域,并且在动态图的训练效率和部署效率方面都有所提升。2.0版本的动态图支持了自动混合精度和量化训练功能,实现了比静态图更简洁灵活的混合精度训练接口,达到媲美静态图的混合精度和量化训练效果。
同时,为了推进各个主流场景的产业级应用,飞桨的系列开发套件也随飞桨框架 2.0 完成了升级,全面支持动态图开发模式。
2、API体系全新升级
API 是用户使用深度学习框架的直接入口,对开发者使用体验起着至关重要的作用。飞桨框架 2.0 对 API 体系进行了全新升级,包括体系化的梳理以及简洁化的处理,而且飞桨框架 2.0的 新API 体系完全兼容历史版本,同时飞桨提供了升级工具,帮助开发者降低升级迁移成本。
- 体系化:飞桨重新梳理和优化了 API 的体系结构,使其更加清晰、科学,让广大开发者可以更容易地根据开发使用场景找到想要的 API。此外可以通过 class 和 functional 两种形式的 API 来模块化的组织代码和搭建网络,提高开发效率。同时,API 的丰富度有了极大的提升,共计新增 API 217 个,优化修改 API 195 个。
- 简洁化:提供更适合低代码编程的高层 API。像数据增强、建立数据流水线、循环批量训练等可以标准化的工作流程,以及一些经典的网络模型结构,在飞桨框架2.0中,都被封装成了高层 API。基于飞桨高层 API,开发者只需10行左右代码就可以编写完成训练部分的程序。最为重要的是,高层 API 与基础 API 采用一体化设计,即在编程过程中可以同时使用高层 API 与基础 API,让用户在简捷开发与精细化调优之间自由定制。
API目录 | 功能 |
paddle.tensor | tensor操作相关的API,如:创建zeros、矩阵运算matmul、变换concat、计算add、查找argmax等。 |
paddle.nn | 组网相关的API,如:Linear、卷积、LSTM、损失函数、激活函数等。 |
paddle.framework | 框架通用API和动态图模式的API,如:to_tensor、no_grad等。 |
paddle.optimizer | 优化算法相关API,如:SGD、Adagrad、Adam等。 |
paddle.optimizer.lr_scheduler | 学习率衰减相关API。 |
paddle.metric | 评估指标计算相关的API,如:Accuracy、Auc等。 |
paddle.io | 数据输入输出相关API,如:Dataset、DataLoader、Sampler等。 |
paddle.device | 设备管理相关API,如:CPUPlace、CUDAPlace等。 |
paddle.distributed | 分布式相关基础API。 |
paddle.distributed.fleet | 分布式相关高层API。 |
paddle.vision | 视觉领域API,如:数据集、数据处理、常用基础网络结构(如ResNet)等。 |
paddle.text | NLP领域API, 例如数据集、数据处理、常用基础网络结构(如Transformer)等。 |
paddle.static.nn | 静态图组网专用API,如:输入占位符data、全连接层fc、控制流while_loop/cond等。 |
paddle.static | 静态图下基础框架相关API,如:Variable、Program、Executor等。 |
二、更高效地训练AI模型
1、训练更大规模的模型
飞桨的英文名 Paddle 其实就是并行分布式训练学习的缩写,因此分布式训练可以说是飞桨与生俱来的特性。飞桨支持包括数据并行、模型并行、流水线并行在内的广泛并行模式和多种加速策略。在飞桨框架2.0 版本中,新增支持了混合并行模式,即数据并行、模型并行、流水线并行这三种并行模式可以相互组合使用,更高效地将模型的各网络层甚至某一层的参数切分到多张 GPU 卡上进行训练,从而实现支持训练千亿参数规模的模型。
2、业内首个通用异构参数服务器架构
飞桨框架2.0推出了业内首个通用异构参数服务器技术,解除了传统参数服务器模式必须严格使用同一种硬件型号Trainer节点的枷锁,使训练任务对硬件型号不敏感,即可以同时使用不同的硬件进行混合异构训练,如CPU、GPU(也包括例如V100、P40、K40的混合)、AI 专用加速硬件如昆仑芯片等,同时解决了搜索推荐领域大规模稀疏特征模型训练场景下,IO 占比过高导致的计算资源利用率过低的问题。通过异构参数服务器架构,用户可以在硬件异构集群中部署分布式训练任务,实现对不同算力的芯片高效利用,为用户提供更高吞吐,更低资源消耗的训练能力。
通用异构参数服务器架构之所以被称之为通用,主要在于其兼容支持三种训练模式:
- 可兼容全部由CPU机器组成的传统参数服务器架构所支持的训练任务。
- 可兼容全部由GPU或其他AI加速芯片对应机器组成的参数服务器,充分利用机器内部的异构设备。
- 支持通过CPU机器和GPU或其他AI加速芯片对应机器的混布,组成机器间异构参数服务器架构。
异构参数服务器拥有非常高的性价比,如下图所示,仅用两个CPU机器加两个GPU机器就可以达到与4个GPU机器相仿的训练速度,而成本至少可以节约35%。
三、更广泛地部署AI模型到各种硬件
AI产业的广泛应用离不开各种各样的人工智能硬件的繁荣,当前包括英特尔、英伟达、ARM等诸多芯片厂商纷纷开展对飞桨的支持。飞桨还跟飞腾、海光、鲲鹏、龙芯、申威等 CPU 进行深入适配,并结合麒麟、统信、普华操作系统,以及百度昆仑、海光 DCU、寒武纪、比特大陆、瑞芯微、高通、英伟达等 AI 芯片深度融合,与浪潮、中科曙光等服务器厂商合作形成软硬一体的全栈AI基础设施。当前飞桨已经适配和正在适配的芯片或 IP达到 29款,处于业界领先地位。
自主可控的必要性:TensorFlow、PyTorch 并不完美
很多人对国产深度学习框架的发展抱有怀疑态度,认为这些工作只不过是在拾人牙慧,重复造轮子,而且 AI 开源框架的搭建是一项费时费力的庞大工程。如果没有超越现有主流框架的想法,去重复造一套没有技术创新的轮子,“性价比”似乎不高,对技术人员来说吸引力也不大。
然而 AI 的大规模落地仍然处在起步阶段,深度学习技术依然在不断发展,复杂程度也在不断提高,而 TensorFlow、PyTorch 等国外框架并非没有提升的空间,因此飞桨等国产框架依然有很大的机会。
业内的一位算法工程师表示,TensorFlow 对稀疏模型的处理能力,大规模分布式计算能力,以及在 Embedding 内存利用率上,仍然有提升空间,而且 TensorFlow 2.0 API 混乱的问题也亟待解决;PyTorch 也是类似,主要关注解决密集模型,对稀疏模型的关注度欠缺。
此外,飞桨免费开放了很多预训练模型,可以直接在产业界落地,因此对于小型企业来说更有利,成本更低,同时也能取得不错的效果。由于 AI 正在从云端走向边缘端,而飞桨对多芯片平台的适配和支持,也带了很大的部署优势。
与此同时,百度也在加大构建飞桨社区的扶持,因此中国开发者也可以获得更及时、更个性化的支持。
今年 3 月美国国家人工智能安全委员会(NSCAI)发布的一份报告,提出了对于总统拜登、国会及企业和机构的数十项建议,以期压制中国 AI 的发展。这也说明了构建中国自主可控核心技术栈的重要性和必要性。
新加坡工程院院士、IEEE Fellow 颜水成在CSDN《2020-2021 中国开发者调查报告》中点评道“以飞桨为代表的国产框架已经在快速崛起,其市场占有率已经不可忽视。”
2021 年,基于飞桨的企业级的开发工具库数量越来越多,内容越来越丰富,加入飞桨生态社区的用户越来越多。有着先发优势的百度,如今在 AI 基础设施这一领域已经走得更远,也将走得更稳。
相关文章:

基于Sql Server 2008的分布式数据库的实践(一)
原文 基于Sql Server 2008的分布式数据库的实践(一) 配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选择“属性”。左侧选择“安全性”,选中右侧的“SQL S…

HttpHand和HttpModule的详细解释,包括Asp.Net对Http请求的处理流程。
了解当用户对一个.aspx页面提出请求时,后台的Web服务器的动作流程。当对这个流程了解后,我们就会明白HttpHandler和HttpModule的作用了。 首先,来了解一下IIS系统。它是一个程序,负责对网站的内容进行管理,以及对客户的…

WebGL初探
目前,我们有很多方案可以快速的接触到 WebGL 并绘制复杂的图形,但最后发现我们忽视了很多细节性的东西。当然,这对初学 WebGL 是有必要的,它能迅速提起我们对 WebGL 的学习兴趣。当学习到更加深入的阶段时,我们更想了解…

Linux下用C语言最基本的程序开发与调试
1.建一个目录2.写代码,建一个hello.c文件代码:view plaincopy to clipboardprint?#include "stdio.h" main() { printf("Hello Linux.\n") } #include "stdio.h" main() { printf("Hello Linux.\n")…

全面升级!星环科技基础软件再升级,赋能数字中国建设
3月24日,星环科技举行2021线上发布会,支持10种主流数据模型的多模数据平台和数据云产品、实现AI建模的全生命周期管理人工智能等产品新版本齐齐亮相。 星环科技坚持核心技术自主原创,专注于大数据基础平台、分布式关系型数据库、数据开发与智…

脚本中echo显示内容带颜色显示
脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e格式如下:echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"例如:echo -e "\033[41;36m something here \033[0m"其中41的位置代表底色…

Java 8默认方法会破坏你的(用户的)代码
Java 8的默认方法试图尝试更进一步简化Java API。不幸的是,这一最近的语言扩展带来了一系列复杂的规则,但只有少部分Java开发者意识到这一点。这篇文章告诉你为什么引入默认方法会破坏你的(用户的)代码。 起初看来,默认…

JPA多对多关联
关于JPA多对多关系,这是使用学生与教师来表示。一个Student由多个Teacher教,同样一个Teacher也可以教多个学生。Student类如下: 1 package com.yichun.bean;2 3 import java.util.HashSet;4 import java.util.Set;5 6 import javax.persisten…

上市之后,青云存储平台 QingStor 也要“进军”云原生
作者 | 夕颜头图 | 下载于东方IC出品 | CSDN云计算(ID:CSDNcloud)3 月 16 日,北京青云科技股份有限公司(以下简称“青云科技”)登录科创板,昔日里频频出现在公众视野的云计算企业,终…

SQL Server 存储过程的分页方案比拼
建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [Country] [nvarchar] (50) COLLATE Chinese_PRC_CI…

未来黑客入侵的不仅有电脑,还有人脑?
提到黑客入侵,我们能够知道的领域有很多,比如企业数据库、金融系统、个人信息、个人账户等。随着时代的变迁,人工智能、云计算、物联网等相继崛起,可能给黑客攻击的领域变得越发宽广。可是如果说黑客能攻击控制的不仅仅是电脑&…

不需xp_cmdshell支持在有注入漏洞的SQL服务器上运行CMD命令
我的BLOG里有一篇文章介绍了关于SQL注入的基本原理和一些方法。最让人感兴趣的也许就是前面介绍的利用扩展存储过程xp_cmdshell来运行操作系统的控制台命令。这种方法也非常的简单,只需使用下面的SQL语句:EXEC master.dbo.xp_cmdshell dir c:/但是越来越…

谷歌低调了 5 年的 Fuchsia OS,终于有望面世了!
种种迹象表明,低调了多年的 Fuchsia OS 可能就要出首个开发者版本了!整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)千呼万唤始出来,等待了五年,谷歌 Fuchsia OS 的首个开发者版本终于有望面世了&#…

chrom扩展开发-入门
2019独角兽企业重金招聘Python工程师标准>>> 先了解一下chrome的两种功能延伸方式: * 扩展(Extension) 1.指的是通过调用 Chrome 提供的 Chrome API 来扩展浏览器功能的一种组件,工作在浏览器层面,使用 HT…

你的机器学习模型为什么会出错?奉上四大原因解析及五条改进措施
对开发者来说,目前有一系列的机器学习模型可供选择。雷锋网(公众号:雷锋网)了解,可以用线性回归模型预测具体的数值,用逻辑回归模型对不同的运算结果进行归类,以及用神经网络模型处理非线性的问题等等。 不论哪一种&am…

释放CPU,算力经济下DPU芯片的发展机遇
当前承载算力的基础设施是各种规模的的数据中心,从几十个服务器节点的小规模企业级计算中心到数万个节点的巨型数据中心,通过云计算的模式对应用层客户提供存储、软件、计算平台等服务。这个生态直接承载了全球数十万亿美元规模的数字经济,而…

SQLserver安全设置攻略
日前SQL INJECTION的攻击测试愈演愈烈,很多大型的网站和论坛都相继被注入。这些网站一般使用的多为SQLSERVER数据库,正因为如此,很多人开始怀疑SQL SERVER的安全性。其实SQL SERVER2000已经通过了美国政府的C2级安全认证-这是该行业所能拥有的…

undefined symbol: ap_log_rerror;apache2.4与weblogic点so文件
没法子啊;只能用 httpd-2.2.26 https://www.google.com.hk/#newwindow1&qundefinedsymbol:ap_log_rerror&safestrictundefined symbol: ap_log_rerror[rootlocalhost local]# vi apache2/conf/httpd.conf[rootlocalhost local]# ./apache2/bin/apachectl s…

10个Java 8 Lambda表达式经典示例
Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动。特性之一便是随同发布的lambda表 达式,它将允许我们将行为传到函数里。在Java 8之前,如果想将行为传入函数&…

Sql server 2005带来的分页便利
select threadid from (select threadid, ROW_NUMBER() OVER (order by stickydate) as Pos from cs_threads) as T where T.Pos > 100000 and T.Pos < 100030 如果里面的这个表cs_threads数据量超大,比如,几亿条记录,那这个方法应该是…

想学Python?快看看这个教程!收藏!
Python入门从哪开始,90%以上的书上都是这样讲的:先介绍 Python 的基本语法规则、list、dict、tuple 等数据结构,然后再介绍字符串处理和正则表达式,介绍文件等IO操作.... 就这样一点一点往下说。然而这种按部就班的学习方法&#…

Struts1.x系列教程(4):标签库概述与安装
Struts的整个视图层(就是MVC模式中的View层)是由Struts的定制标签(或者称为定制动作)和客户端代码(Javascript、HTML等)实现的。这些Struts标签被写在JSP页面中,用于生成客户端代码、进行逻辑判断等工作,使…

绿盟科技与CCF成立“鲲鹏”科研基金 计划发力5大领域资助16个项目
【51CTO.com原创稿件】2017年5月10日,由中国计算机学会(CCF)和北京神州绿盟信息安全科技股份有限公司(以下简称:绿盟科技)主办的2017 CCF-绿盟科技“鲲鹏”科研基金新闻发布会于北京隆重举行。双方共同宣布“鲲鹏”科研基金正式成立,该基金将…

修改SQL SERVER内置存储过程
SQLSERVER估计是为了安装或者其它方面,它内置了一批危险的存储过程。能读到注册表信息,能写入注册表信息,能读磁盘共享信息等等……各位看到这儿,心里可能会在想,我的网站中有其它的代码,又不像查询分析器那…

〖Linux〗使用Qt5.2.0开发Android的NDK应用程序
2013年12月11日,Qt发布了其新的Qt版本:Qt5.2.0; 利用这个新的版本,我们可以很轻松地制作出Android手机的NDK应用程序。 开发环境:Ubuntu13.10 x86_64 下载链接:http://download.qt-project.org/official_re…

基于 OpenCV 的面部关键点检测实战
【 编者按】这篇文章概述了用于构建面部关键点检测模型的技术,这些技术是Udacity的AI Nanodegree程序的一部分。作者 | 小白责编 | 欧阳姝黎概述在Udacity的AIND的最终项目中,目标是创建一个面部关键点检测模型。然后将此模型集成到完整的流水线中&#…

气温上升影响数据中心节能
也许一些公司都是你熟悉的名字。但你可能不知道的是,这样的公司拥有遍布美国的大型数据中心,包括北弗吉尼亚州。数据中心用于存储、备份和通信业务,使用了大量的电力,为IT设备供电,并保持其冷却其数据中心基础设施。 也…

如何将SQL Server表驻留内存和检测
将SQL Server数据表驻留内存是SQL Server提供的一项功能,在一般小型系统的开发过程中估计很少会涉及到。这里整理了相关文档资料,演示如何把SQL Server中一个表的所有数据都放入内存中,实现内存数据库,提高实时性。 1, DBCC PINTA…

C 一样快,Ruby 般丝滑的 Crystal 发布 1.0 版本,你看好吗?
整理 | 寇雪芹 头图 | 下载于视觉中国 出品 | AI科技大本营(ID:rgznai100) 近日,编程语言 Crystal 发布了 1.0 版本。 Crystal 是一种通用的、面向对象的编程语言,其语法受到 Ruby 语言的启发,具有静态类型检查功能&am…

php in yii framework
为什么80%的码农都做不了架构师?>>> command line php yiic defined(STDIN) or define(STDIN, fopen(php://stdin, r));$_SERVER[argv](2013-12-30 22:44:10) 最近读这本书, 讲使用方法, 每章节各自独立, 配合些源码看(但不要细看, 会干扰进度, 浪费时…