百度Paddle Fluid v1.3版本重磅更新 新增视频模型库、BERT模型

Paddle Fluid v1.3版本于今日发布,在基础框架、预测引擎、模型建设、分布式训练各个方向上完成多项升级。

业界首个视频分类模型库

新增视频模型库,提供5个视频分类经典模型以及适合视频分类任务的通用骨架代码,用户可一键式高效配置模型完成训练和评测。

视频理解权威竞赛ActivityNet - Kinetics视频动作识别任务冠军方法stNet的resnet50版本开源实现。

基于PaddlePaddle的BERT多机多卡和混合精度训练

新增支持NLP语义表示BERT模型,支持多机多卡训练,支持混合精度训练,训练速度对比主流实现提升50%+,提供完整部署示例。

分布式训练性能大幅提升

大规模稀疏参数服务器Benchmark发布, CPU多机异步训练发布显著提升点击率预估任务IO吞吐的built-in reader,多机多卡训练性能多方面提升。

下面将Paddle Fluid v1.3版本所发布的内容,全面介绍给广大开发者:

重要更新

  • 统一Executor和ParallelExecutor接口,用户只需通过CompiledProgram将单卡模型转化多卡模型,并利用Executor进行训练或者预测。
  • 正式发布AnalysisConfig预测接口,支持计算图分析、算子融合等优化,并支持利用Intel MKLDNN、Nvidia TensorRT子图引擎等第三方库的加速.
  • 模型库新增发布PaddlePaddle视频模型库,提供5个视频分类经典模型以及适合视频分类任务的通用骨架代码,用户可一键式高效配置模型完成训练和评测。
  • 新增支持NLP语义表示BERT模型,支持多机多卡训练,支持混合精度训练,训练速度对比主流实现提升50%+,提供完整部署示例。
  • 大规模稀疏参数服务器Benchmark发布,CPU多机异步训练发布显著提升点击率预估任务IO吞吐的built-in reader,多机多卡训练性能多方面提升。
  • 新增支持Intel Deep Learning Boost(VNNI指令集)。在新一代的Intel Xeon Scalable Processor上,使用这个特性的一些模型,INT8预测性能可以达到FP32的2倍。

基础框架

  • 安装
    • 新增Linux和MacOS下的中文版本辅助安装脚本,提供交互式安装方式,协助用户在复杂环境下快速完成PaddlePaddle安装。
    • Windows支持优化:新增cuda8,cudnn7的GPU支持,新增AVX指令集、MKLDNN、mnist数据集支持。修复Windows加载Linux/Mac下同版本paddle训练模型的问题。
  • 增加动态图基础功能
    • 动态图tracer、autograd、python Layer/PyLayer,动态图支持MLP、GAN、ptbRNN、Resnet模型,动态图支持Optimizer、GPU训练。
  • Executor和ParallelExecutor接口优化
    • 对Executor和ParallelExecutor接口进行统一,用户只需通过CompiledProgram将单卡模型转化多卡模型,并利用Executor进行训练或者预测。
    • ParallelExecutor优化
       对MultiDevSSAGraphBuilder进行重构,使得MultiDevSSAGraphBuilder更易扩展。
       去除ParallelExecutor中的设备锁,提升ParallelExecutor多卡调度性能。
  • 中间表达IR和Pass方面的优化
    • 完善C++ IR graph的python接口以及C++ IR pass的python接口。
    • 在framework.py中新增IRGraph类,为在Python层编写IR Pass做准备。
    • 新增支持网络无锁更新的Pass。
    • 新增QuantizationTransformPass,此为Quantization Aware Training量化模式训练前的图修改操作部分。
  • 内存和显存方面的优化
    • 新增支持在编译时加入Jemalloc作为动态链接库,提升内存管理的性能,降低基础框架内存管理开销
    • 新增memory optimize,inplace pass, memory pool early deletion等显存优化策略。
    • 新增支持网络无锁更新的Pass。
    • 新增QuantizationTransformPass,此为Quantization Aware Training量化模式训练前的图修改操作部分。
  • Operator整体层面的优化
    • 每个op在执行前只做一次scope查询,减少读写锁操作(原来需要做1~5次scope查询)
    • 新增Temporary Allocator,减少op中的同步操作
    • 新增py_func operator,支持python op接入,用户可以借助py_func Operator快速实现所需要的特有操作
  • 重构DDim,Variable Type等,降低基础框架调度开销。
  • INTEL FP32计算相关优化
    • 优化density_prior_box operator,单op四线程提速3倍。
    • 优化Stack operator,单op提速16倍。
    • 开发Transpose,Concat和Conv3d三个基于MKLDNN的kernel。
    • 修复lrn operator中MKLDNN kernel精度bug,同时单op提速1.3倍。
    • 修复MKLDNN初始化占用5G内存的问题,目前初始化占用500MB。
    • 减少从MKLDNN OP kernel到非MKLDNN OP kernel时不必要的reorder。
  • 完善CPU JitKernel
    • sequence pooling的jitkernel,纯op提升2倍。
    • softmax的jitkernel,纯op提升2倍,同时使得Bert模型CPU预测提升26%。
    • 常见的基本逻辑:向量的每个元素求平方kVSquare、矩阵乘法kMatMul、向量的最大值kHMax、向量所有元素的和kHSum。

预测引擎

服务器预测

  • 正式发布AnalysisConfig预测接口,支持计算图分析、算子融合等优化,并支持利用Intel MKLDNN、Nvidia TensorRT子图引擎等第三方库的加速。
  • 预发布intel CPU上的预测INT8离线量化方案
    • 开发Conv2D,Pool2D,Quantize,Dequantize四个基于MKL-DNN的INT8 kernel。
    • 预发布Calibration的3个核心Python API(paddle.fluid.contrib.Calibrator)。
    • 开发Calibration工具,保证FP32和INT8的精度在ResNet-50和MobileNet-V1在ImageNet验证数据集上相差在1%内。
    • 支持Intel Xeon CascadeLake Server(VNNI指令)及Intel Xeon SkyLake Server,性能提升约为1.33倍。
  • CPU预测速度提升
    • fuse sequence pooling concatop,支持N (<200)个sequence_pooling op concat起来组成一个新op,整体使得seqpool模型CPU预测提升56%。
    • fuse连续重复的fc op为一个大op,使得seqpool模型CPU预测速度提升15%。
    • fuse逻辑为((X * Y).^2 - (X.^2 * Y.^2) ) .* scalar的op组合,使得seqpool模型CPU预测速度提升8.2%。
    • 针对输入tensor元素个数为1的情况,优化compare_op的CPU Kernel。
  • 新增Paddle-TRT对Calibration INT8的支持,GPU预测速度提升
    • 模型VGG,Resnet50上预测速度达到了Paddle-TRT float32的两倍性能。
    • 模型VGG,Resnet50在imagenet数据集上测试,精度下降0.3%以内。
  • 算子融合
    • 增加fc和con相关两个fuse,作用于conv_op CUDNN kernel。
    • 新增Conv+Affine Channel的融合pass,Faster RCNN运行的性能提升26.8%。
    • 新增Transpose+Flatten+Concat融合pass,MobilenetSSD模型性能提升15%。
    • 实现beam_search operator的CUDA Kernel,并且将相应的top-k、elementwise_add、reshape、log计算融合到beam_search operator中。
  • 功能完善及易用性提升
    • 新增C++ IR graph的Python接口。
    • 新增预测库的Python接口。
    • 服务端预测支持从内存加载模型。
  • 其他
    • 删除legacy V2代码。从1.3版本起,不再支持V1&V2老版本功能。
    • 修复Paddle-TRT elementwise-mul模型运行出现问题的bug。
    • 修复Paddle-TRT trt_engine stream多个连续输入情况下模型输出结果异常的bug。

移动端预测

  • 效率优化,常见模型预测速度提升
    • int8预测支持dequantize和其他op(batch normalization/relu/elementwise add)进行自动kernel融合。
    • transpose2 operator对于shuffle channel操作进行优化。
    • gru operator使用neon指令进行优化,并针对batch size为1时进行优化。
    • 优化和实现pooling,支持任意的padding。
    • 优化和实现batch normalization、softmax、elementwise add。
  • 新增支持多个输入和多个输出的模型预测。
  • 新增实现prelu6 operator、cast operator、top_k operator。
  • 修复int8 offline量化溢出结果不对的问题。
  • 修复winograd实现在输入feature map的height和width不相等时结果可能为0的bug。

模型建设

  • PaddleCV智能视觉
    • 新增发布PaddlePaddle视频模型库,包括五个视频分类模型:Attention Cluster、NeXtVLAD、LSTM,、stNet、TSN。提供适合视频分类任务的通用骨架代码,包括数据读取和预处理、训练和预测、网络模型以及指标计算等多个模块。用户根据需要添加自己的网络模型,直接复用其他模块的代码,快速部署模型。
    • 新增支持目标检测Mask R-CNN模型,效果与主流实现打平。
    • 语义分割DeepLabV3+模型,depthwise_conv op融合,显存优化,显存占用对比上一版本减少40%。
  • PaddleNLP智能文本处理
    • 新增支持NLP语义表示BERT模型,支持多机多卡训练,支持混合精度训练,训练速度对比主流实现提升50%+,提供完整部署示例。
    • 机器翻译Transformer模型优化解码计算,decoder中加入对encoder output计算结果的cache,预测速度提升一倍。
  • PaddleRec智能推荐
    • Sequence Semantic Retrieval新增单机多线程、单机多卡运行示例,添加预测功能、数据预处理优化,完善部署示例。
    • GRU4Rec新增负采样功能,使用bpr loss和cross entropy loss的效果与原作打平。

分布式训练

  • 大规模稀疏参数服务器Benchmark发布
    • 测试真实业务场景下,特征规模百亿、样本平均特征数1k的点击率预估任务,在batch=512情况下,100worker加速比90.5,吞吐量1.36M/s。
  • CPU多机异步训练
    • 发布面向点击率预估任务的built-in reader,Criteo数据集下IO总吞吐提升1300%。
  • GPU多机多卡水平扩展性能提升
    • 新增并行模式:PG(ParallelGraph)、MP(Multi-Process),独立GPU卡之间的计算,提升性能同时,不影响模型精度。
    • 在ResNet50模型,单机8卡V100下,PG, MP模式提升训练性能30%以上;4机32卡,PG模式提速46%,MP模式提速60%。
    • 在BERT模型,8卡V100下,PG, MP模式提升训练性能26%。
    • Multi-Process模式相比Parallel-Graph模式对Reader速度敏感度不高。
  • GPU多机多卡垂直扩展性能提升
    • 新增功能:fp16和混合精度训练
    • Fp16单机单卡加速情况:ResNet50提速约87%,BERT提速约70%。
    • BERT同时开启PG和混合精度,单机8卡下单位时间吞吐提升120%。
    • ResNet50同时开启混合精度训练和MP模式,在V100单机8卡、4机32卡下,单位时间吞吐提升100%。
  • 典型模型收敛速度优化
    • 新增功能:动态Batch Size,动态Image Resize方法。
    • Resnet50 on Imagenet数据集:训练收敛轮数下降为标准训练方法的1/3左右。

VisualDL

  • VisualDL graph支持Paddle fluid保存的模型可视化展示。


更多内容,请了解:https://github.com/PaddlePaddle/Paddle/releases

PaddlePaddle
PaddlePaddle

PaddlePaddle是百度独立研发的深度学习平台,易用,高效,灵活可伸缩,可支持海量图像识别分类、机器翻译和自动驾驶等多个领域业务需求,现已全面开源。

理论NLP百度PaddlePaddle
2
相关数据
基于Transformer 的双向编码器表征技术

BERT是谷歌发布的基于双向 Transformer的大规模预训练语言模型,该预训练模型能高效抽取文本信息并应用于各种NLP任务,并刷新了 11 项 NLP 任务的当前最优性能记录。BERT的全称是基于Transformer的双向编码器表征,其中“双向”表示模型在处理某一个词时,它能同时利用前面的词和后面的词两部分信息。

调度技术

调度在计算机中是分配工作所需资源的方法。资源可以指虚拟的计算资源,如线程、进程或数据流;也可以指硬件资源,如处理器、网络连接或扩展卡。 进行调度工作的程序叫做调度器。调度器通常的实现使得所有计算资源都处于忙碌状态,允许多位用户有效地同时共享系统资源,或达到指定的服务质量。 see planning for more details

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

VGG技术

2014年,牛津大学提出了另一种深度卷积网络VGG-Net,它相比于AlexNet有更小的卷积核和更深的层级。AlexNet前面几层用了11×11和5×5的卷积核以在图像上获取更大的感受野,而VGG采用更小的卷积核与更深的网络提升参数效率。VGG-Net 的泛化性能较好,常用于图像特征的抽取目标检测候选框生成等。VGG最大的问题就在于参数数量,VGG-19基本上是参数量最多的卷积网络架构。VGG-Net的参数主要出现在后面两个全连接层,每一层都有4096个神经元,可想而至这之间的参数会有多么庞大。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

SSD技术

一种计算机视觉模型。论文发表于 2015 年(Wei Liu et al.)

机器翻译技术

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

MobileNets技术

MobileNet是专用于移动和嵌入式视觉应用的卷积神经网络,是基于一个流线型的架构,它使用深度可分离的卷积来构建轻量级的深层神经网络。通过引入两个简单的全局超参数,MobileNet在延迟度和准确度之间有效地进行平衡。MobileNets在广泛的应用场景中有效,包括物体检测、细粒度分类、人脸属性和大规模地理定位。

语义分割技术

语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类。图像语义分割是AI领域中一个重要的分支,是机器视觉技术中关于图像理解的重要一环。

掩饰的基于区域的卷积神经网络技术

Mask R-CNN是一个概念上简单,灵活和通用的对象实例分割框架。 该方法能够高效地检测图像中的对象,同时为每个实例生成高质量的分割蒙版。 这种方法通过添加一个用于预测对象蒙版的分支来扩展R-CNN使之更快,该分支与现有的用于边界框识别的分支并行。

目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

5G技术

第五代移动通信系统(5th generation mobile networks),简称5G,是4G系统后的延伸。美国时间2018年6月13日,圣地牙哥3GPP会议订下第一个国际5G标准。由于物理波段的限制,5G 的网络也将会与其他通信技术并用,包含长距离的其他传统电信波段。

推荐文章
暂无评论
暂无评论~