飞桨PaddlePaddle全新升级,PaddleFluidv1.5版本发布

继两个月前发布v1.4之后,今天,飞桨(PaddlePaddle)终于迎来了大更新。在下文中,我们将为大家详解PaddleFluidv1.5的新功能。

一、重要更新

训练性能在数据读取、执行调度优化、OP计算逻辑及底层cudnn、CUDAKernel、MKLDNN等方面进行了大量优化,训练性能大幅提升;进一步优化显存占用,整体具备领先优势。

新增基于Padding方式实现的LSTM、GRU,更方便用户学习和使用;并基于对应API新增语言模型、seq2seq翻译模型的示例模型;增强部分OP功能,更好地支持NLP中Tensor多个维度可变的任务。

官方模型库方面正式发布PaddleDetection物体检测统一框架,覆盖主流目标检测算法,易扩展和模块化组合使用;发布图像生成库,覆盖主流的GAN算法,可一键式运行;发布PaddleNLP-Research,包含百度在NLP领域最新研究工作。

模型压缩框架PaddleSlim新增基于模拟退火的自动剪切策略和轻量级模型结构自动搜索功能(Light-NAS)。

分布式训练发布HighLevelAPIFleet,单机转分布式训练成本显著降低;GPU多机多卡性能显著提升,在ResNet50、BERT、ERNIE等模型中4x8v100配置下相比此前发布的Benchmark提速超过50%。

PaddleHub新增29个预训练模型,总计覆盖文本、图像、视频三大领域40个模型,并全面提升易用性,发布PaddleHub官网。

发布图学习框架PGL(PaddleGraphLearning)Preview版,提供基于游走以及消息传递两种计算范式去搭建最前沿的图学习算法。

二、基础框架

1.安装&环境

增加Linux下对CUDA10的支持,增加Windows下对CUDA9的支持,cuDnn版本统一为7.3+

安装包不按照CPU处理器是否支持AVX指令集做区分,支持自动判断并选择使用AVX指令集或不使用AVX指令集

针对Python2、Python3下可能版本不兼容的依赖包限制了版本范围,以支持Python相应环境下正确安装

提供可全离线安装PaddlePaddle的Docker镜像

增加安装后的GPU多卡运行检测

解除GPU单卡训练时对NCCL的依赖

2.动态图Preview版

基础功能完善,显存和速度优化,支持GPU单机多卡训练

增加transformer、ocrrecognition、resnet、languagemodel等7个模型效果对齐的动态图版本实现

3.性能优化

1)数据读取优化

使用多进程优化数据读取、预处理部分,DeepLabV3+单GPU训练获得63%的性能提升

2)Op计算逻辑优化

优化concat/spiltop输入/输出个数<=4的实现,避免1次CPU->GPU的数据传输

优化recurrentop中执行器的调用方法,修改成在迭代前调用一次executor.Prepare,迭代中executor.RunPreparedContext执行计算,从而避免每次迭代反复创建op。该优化对PaddingRNNpaddingsmall和large模型分别带来23%和15%的性能提升

融合优化器Momentumop的计算,对Resnet50单GPU、4GPU训练分别可带来1.6%、10.6%的性能提升

3)cuDnn使用策略优化

使用cuDnnv7中新增的算法选择APIcudnnGetConvolutionForwardAlgorithm_v7优化conv_cudnnop算法选择策略,Mask-RCNN和YoloV3单GPU训练分别取得32%和11%的加速

一些op的cuDnn实现慢于cuda实现,比如conv2d_transpose、pool2d(global_pooling=True)时,设置use_cudnn=False后,CycleGAN、SE-ResNeXt单GPU训练分别获得33%、34%的性能提升

4)OpCUDAKernel优化

使用精心优化的CUDAkernel优化sumop,对多个LoDTensor求和这种情况优化效果特别明显,GPU执行获得3.3x的加速

使用2D线程Block配置优化elementwise_mulgradop,加速其CUDAKernel中的Broadcast操作

5)IntelCPU底层计算优化

增加新的OP融合Pass(conv+relu6,conv_transpose+elementwise_add)

增加新的FP32MKLDNNkernel(FC),INT8MKLDNNkernel(Concat)

优化若干OP,包括sequence_reverse(前向),sequence_padding(前向),sequence_unpad(反向),bilinearinterpolate(前向)

4.显存优化

1)Op层显存优化(在Transformer、Mask-RCNN等模型上显存节省1G以上)

提高了inplace策略的覆盖面,支持sum、softmax、softmax_with_cross_entropy等op的inplace计算

修复了dropout、conv_transpose、activationop的反向注册,降低op的显存占用

2)显存分配与显存复用策略重构

重构Allocator底层架构,为后续扩展Allocator策略提供基础

重构Inplace策略,使其代码便于维护,并排除之前策略中变量可能存在误inplace、graph存在环等bug

3)配置优化

用户可通过环境变量FLAGS_conv_workspace_size_limit设置conv层的最大workspacesize,单位为MB

4.执行优化

更新CPU_NUM的默认配置为1,之前为设备的逻辑总核数

对Operator中OpKernel进行cache,避免每次run都重复的选择kernel

ParallelExecutor执行模式(CompiledProgram.with_data_parallel())下的优化:减少同步操作;优化在num_thread=1时的速度,对于小模型的速度提升较为明显。(对于PaddingRNNsmallmodel速度提升16%)

5.框架基础功能增强

build_strategy新增mkldnn_enabled_op_types选项,用户可以灵活地控制哪些op需要使用mkldnnkernel以获得加速

新增ParallelExecutor下的drop_local_exe_scopes接口,可以控制什么时候清理localscope中的数据,num_iteration_per_drop_scope的设置依然有效

新增自动混合精度训练接口fluid.contrib.mixed_precision.decorate(),支持图像分类、BERT等模型的训练

新增fluid.gradients接口,11个操作支持做二次反向,使用于图像生成的梯度惩罚功能

IntelnGraph图编译引擎支持加强,增加了Bert模型所需的op支持,可以通过IntelnGraph图编译引擎进行BERT模型训练,收敛效果对齐

6.OP完善

增强fused_elewise_activationop的功能,添加对x+sigmoid(y)、x+tanh(y)计算模式的支持

新增指数滑动平均(ExponentialMovingAverage),使模型训练更加平滑稳定

新增sigmoid_focal_loss损失函数

新增deformableRoIpooling操作

新增deformableconvolutionv2操作

提供unfold操作(即im2col操作)

三、预测部署

1.服务端部署库

优化显存优化功能。DAM模型显存占用从4G下降至940M;MobileNet模型显存占用从1G下降至500M

解决使用AnalysisPredictor从内存载入模型时,模型参数多次内存分配的问题

增强Python预测API,并在官网文档预测部署下增加Python预测API的使用说明。

IntelINT8量化预测持续加强

持续优化INT8量化框架(训练后量化),新增五个模型(GoogleNet,MobileNetV2,VGG16,VGG19,ResNet101);与FP32模型相比,精度损失均在1%以内,性能提升2~3.7倍

支持QAT(训练中量化)训练出来的模型运行在INT8kernel上,通过Pass对QAT模型进行修改,使其能运行在INT8kernel上(目前支持量化/去量化/卷积),在7个模型上(GoogleNet,MobileNetV1,MobileNetV2,VGG16,VGG19,ResNet50,ResNet101),和在FP32kernel上模拟运行相比,精度变化在0.1%以内

2.PaddleServing

支持GPU设备;支持多卡并行预测

提供SE_ResNeXt50_32x4d模型作为标准示例,给出图像分类任务上单卡多并发、多卡多并发等场景benchmark

支持大规模稀疏参数任务:用于CTR预估等场景下超大规模embedding的存储和在线访问。一期发布单机版本,支持亿级别embedding访问

易于使用的API接口,APIdemo示例

3.PaddleSlim

集成INT8量化框架

新增自动剪切策略,基于模拟退火算法搜索最优剪切率:对比MobileNetV1在ImageNet1000类分类任务上FLOPS减少50%;Top1-Accuracy=69.7%

新增轻量级模型结构自动搜索功能(Light-NAS):对比MobileNetV1在ImageNet1000类分类任务上精度无损情况下FLOPS减少17%

四、分布式训练

1.分布式High-LevelAPIFleet

分布式训练统一API,支持参数服务器(ParameterServer)和Collective模式训练,大幅度降低用户从单机切换到多机训练的新增代码量

用户可以通过配置分布式策略调用不同的并行训练方法,对于不同的分布式环境支持多种内建RoleMaker,方便用户调用

2.参数服务器(ParameterServer)训练新增Communicator设计

独立通信逻辑到Communicator,简化异步训练逻辑

提供可控制通信开关,可针对不同模型针对性调优

3.GPU多机多卡增加多个提升扩展性Feature,NLP/CV经典模型下多机多卡训练提速50%

新增FusedAllReduce:通过对gradienttensor进行自动合并,降低参数同步次数

新增HierachicalAllReduce:层次化allreduce操作

新增AllReduce通信并发能力:增加多机训练下,训练对网络波动的容忍能力

新增反向与优化算法之间的依赖分析:提升通信与计算overlap并发的能力

以上新增能力融合可实现在BertLarge(batch16x128)和Resnet50(batch32)上多机(v1008*4卡)训练速度比PaddlePaddle1.4.1提速50%+。

4.GPU多机多卡Benchmark更新

ResNet50、VGG16、Transformer和Bert上的速度对比,并提供可复现的benchmarks脚本

5.CPU-GPU异构设备流水线并行能力支持

新增流水线并行能力,可支持用户自定义在异构硬件分配计算OP,通过流水线交换数据,从而实现异构计算设备的搭配和计算资源的自由配比,提升训练速度

在IO量大、计算量较小的场景例如CTR预估,GraphNeuralNetwork下相比纯GPU训练有明显速度优势

五、模型建设(PaddlePaddle/models)

1.图像分类

发布9个ImageNet预训练模型,包含ResNet50_vc,ResNet50_vd,ResNet101_vd,ResNet152_vd,ResNet200_vd,ResNeXt101_64x4d,ResNeXt101_vd_64x4d,SENet154_vd,InceptionV4

ResNet50_vd相比已发布的ResNet50效果提升2.62%,可以达到ResNet101精度。ResNet101_vd相比已发布ResNet101效果提升1.88%

2.PaddleDetection

发布PaddleDetection物体检测统一框架,包含Faster-RCNN(支持FPN),Mask-RCNN(支持FPN),Cascade-RCNN,RetinaNet,Yolov3,SSD算法,其中FPN,CascadeRCNN,RetinaNet是本次新增算法

发布一系列预训练模型,其中RCNN系列模型支持ResNet,ResNet_vd,ResNeXt,ResNeXt_vd,SEResNeXt主干网络。Yolov3持续增加更加轻量的ResNet34,MobileNet主干网络,并发布预训练模型

3.PaddleGAN

发布PaddleGAN图像生成库,包含CGAN、DCGAN、CycleGAN、Pix2Pix、StarGAN、AttGAN、STGAN,支持多种数据集,支持经典的GAN网络结构。其中STGAN是百度视觉技术部自研的任意图像属性编辑模型

4.PaddleVideo

优化已经发布的分类模型,NeXtVLAD训练速度提升60%,TSM速度领先竟品39%

增加已发布的模型骨干网络,Nonlocal模型增加ResNet101和I3d网络结构

增加动作定位模型C-TCN,百度2018年ActivityNet比赛夺冠方案

5.PaddleNLP

ERNIE/BERT:支持动态混合精度训练,保证了预训练任务在混合精度训练模式下的精度;支持以多进程的方式进行多卡任务的训练,提高了多卡加速比;优化多机分布式训练的加速比,在V100GPU集群上将6机相对于单机的FP32训练加速效率提高至76%

发布PaddleNLP-Research,开源MRQA2019阅读理解竞赛PaddleFluid基线、DuConv(ACL2019)等近期百度在NLP学术领域的工作

六、工具组件

1.PaddleHub

1)全新发布PaddleHub官网,易用性全面提升

迁移学习Demo接入AIStudio与AIBook,无需安装即可快速体验

新增PaddleHub后端服务,支持模型检索、下载、私有化部署等功能

2)新增29个预训练模型,覆盖文本、图像、视频三大领域;目前官方提供40个预训练模型

CV预训练模型

新增图像分类预训练模型11个:SE_ResNeXt,GoogleNet,ShuffleNet等

新增目标检测模型Faster-RCNN和YOLOv3

新增图像生成模型CycleGAN

新增人脸检测模型Pyramidbox

新增视频分类模型4个:TSN,TSM,StNet,Non-Local

NLP预训练模型

新增语义模型ELMo

新增情感分析模型3个:Senta-BOW,Senta-CNN,Senta-GRNN

新增中文情绪识别模型EmoTect

新增中文语义相似度分析模型Simnet

升级LAC词法分析模型,新增词典干预功能,支持用户自定义分词

3)Fine-tuneAPI升级,灵活性与性能全面提升

支持多卡并行、PyReader多线程IO,ERNIE文本分类Fine-tune速度提升60%

简化finetune、evaluate、predict等使用逻辑,提升易用性

增加事件回调功能,方便用户快速实现自定义迁移学习任务

新增多标签分类Fine-tune任务

2.图学习框架PGL(PaddleGraphLearning)

发布基于PaddlePaddle的图学习框架PGLPreview版,提供基于游走(WalkBased)以及消息传递(MessagePassing)两种计算范式去搭建最前沿的图学习算法,如图表征学习、图神经网络等。PGL充分利用PaddleLoDTensor特性大幅提升Message-Passing范式中信息聚合效率,兼顾了灵活性和高效性

新增基于PGL实现的GCN、GAT,在多个数据集达到SOTA水平

新增基于大规模子图采样模型Graphsage模型,单机可支持5千万节点、20亿条边的巨图

新增node2vec,deepwalk等图表征学习方法,达到SOTA水平

新增PGL文档、API、Tutorial等材料

七、BUG修复

修复softmax_with_cross_entropy操作CPU版本中ignore_label不支持在0到类别数之外label的问题

修复importpaddle之后logging.basicConfig设置失效问题

修复python/paddle/fluid/layers/ops.py在python3下报错的问题

修复sequenceunpadop在训练过程中不稳定的问题

修复ConcatOp属性axis为负数时挂掉的问题

修复了enable_inplace和memory_optimize的潜在bug,保证某些op的输出变量不会被错误地复用

修复了EagerDeletion策略可能会提前误删变量存储空间的bug,提高EagerDeletion策略的稳定性

修复了模型图分析中拓扑排序存在bug导致的在相同模型输入情况下有不同的模型图生成的情况

修复了预测结束后其他服务线程OMP线程冲突的问题。修复为在CPU模式下,预测引擎会在预测结束后将全局的OMP线程数设回为1

THE END
1.解析人工智能三大算法机器学习深度学习与强化学习的核心之旅解析人工智能三大算法:机器学习、深度学习与强化学习的核心之旅 人工智能三大算法是现代计算机科学领域中的重要组成部分,它们分别是机器学习、深度学习和强化学习。每种算法都有其独特的特点和应用场景,共同推动了人工智能技术的发展。 机器学习:数据驱动的革命 机器学https://www.fmovhaqkz.com/shou-ji/530948.html
2.人工智能三大算法机器学习深度学习与强化学习的融合与应用前景在当今信息技术高速发展的时代,人工智能(AI)已经成为全球科技界关注的焦点。其中,机器学习、深度学习和强化学习被认为是人工智能领域中最重要的三大算法,它们分别代表了不同的研究方向和解决问题的手段。本文旨在探讨这三个关键算法,以及它们如何相互融合,并对未来的人工智能发展产生何种影响。 https://www.2gadecbu9.cn/xing-ye-dong-tai/433419.html
3.机器学习算法的数据增强:提高学习效率的关键方法数据增强(Data Augmentation)是一种在训练机器学习模型时,通过对现有数据进行改变而产生新数据的方法。数据增强的目的是提高模型的泛化能力,提高学习效率,减少需要的标注数据量,从而降低成本。数据增强在图像识别、自然语言处理、语音识别等领域都有广泛的应用。 https://blog.csdn.net/universsky2015/article/details/135801267
4.增强学习与深度学习的比较:同点与不同尽管增强学习和深度学习在理论和方法上有很大差异,但它们在实际应用中存在一定的联系。例如,深度学习可以用于模拟环境模型,增强学习可以利用深度神经网络作为价值函数或策略评估器。 3.核心算法原理和具体操作步骤以及数学模型公式详细讲解 3.1增强学习算法 3.1.1Q-Learning https://blog.51cto.com/universsky/9048294
5.7个流行的强化学习算法及代码实现本文介绍了流行的强化学习算法的发展和改进。 强化学习在近些年得到了越来越多的关注。虽然现在关于强化学习的资料有很多,但是许多读者仍然觉得强化学习入门比较困难,许多时候有一种似懂非懂或者 “知其然而不知其所以然”的感觉。甚至一些读者认为强化学习是一个黑盒子,很多东西数学上是解释不清的,这其实是一种误解https://zhuanlan.zhihu.com/p/690515680
6.最值得关注的10大深度学习算法腾讯云开发者社区今天给大家分享一下10大经典的深度学习算法。 首先,对比一下传统机器学习和深度学习的训练过程差异: 下图展示了传统机器学习算法与深度学习技术在数据量方面的性能比较。从图表中可以明显看出,随着数据量的增加,深度学习算法的性能也随之提升。 相比之下,传统机器学习算法的性能虽然会在一定程度上提升,但之后会趋于稳定(https://cloud.tencent.com/developer/article/2437425
7.深度增强学习PPO(ProximalPolicyOptimization)算法OpenAI出品的baselines项目提供了一系列deep reinforcement learning(DRL,深度强化学习或深度增强学习)算法的实现。现在已经有包括DQN,DDPG,TRPO,A2C,ACER,PPO在内的近十种经典算法实现,同时它也在不断扩充中。它为对DRL算法的复现验证和修改实验提供了很大的便利。本文主要走读其中的PPO(Proximal Policy Optimization)算法http://www.fpga7.com/ziyuan.asp?id=41
8.AlphaZero加强版AlphaTensor问世,发现史上最快矩阵乘法算法例如研究人员提出了一种序列增强学习技术,用于在乳房X光片中使用SVM检测微钙化(MC)簇时提高性能等。ML和模式识别算法对大脑成像有重大影响,从长远来看,ML领域的技术发展和放射学可以互惠互利。深度学习(DL)是ML的一个分支,它处理的是受大脑的生物和功能启发的算法(即ANN)。DL已经迅速成为医学影像领域评估医学图像的https://www.medsci.cn/article/show_article.do?id=97c6e419443f
9.BAT机器学习面试1000题系列(二)面试笔试整理3:深度学习机器学习面试问题准备(必会) 105.当机器学习性能遭遇瓶颈时,你会如何优化的? 可以从这4个方面进行尝试:基于数据、借助算法、用算法调参、借助模型融合。当然能谈多细多深入就看你的经验心得了。 这里有一份参考清单:机器学习系列(20)_机器学习性能改善备忘单 https://www.jianshu.com/p/4a7f7127eef1
10.2020年媒体技术趋势报告:13大领域89项变革全输出机器学习指的是一种应用算法来分析数据,从而可以更好地完成各种任务的系统,并且随着时间推移,它会越来越擅长这些任务。但这种系统也面临着效率问题:系统需要停下来解析数据。而最新研究表明,实时机器学习可以随数据获取而实时调整模型。这标志着数据移动方式以及我们检索信息方式的巨大变化。 https://36kr.com/p/5267903
11.博弈环境下的深度强化学习和传统的深度强化学习不同博弈环境下的深度学习通常使用增强学习算法来训练智能体。增强学习是一种通过与环境交互学习最优策略的方法。传统的深度学习通常使用监督学习算法。 3、求解目标 博弈环境下的深度学习的目标是通过与其他智能体竞争或合作来学习最佳行动策略。传统的深度学习通常是为了解决特定的任务或问题。 https://wap.sciencenet.cn/home.php?mod=space&uid=40841&do=blog&id=1418525
12.成为算法工程师需要学习哪些课程?算法工程师要求很高的数学水平和逻辑思维。需要学习高数,线性代数,离散数学,数据结构和计算机等课程。专业要求:计算机、电子、通信、数学等相关专业;学历要求:本科及其以上的学历,大多数是硕士学历及其以上;语言要求:英语要求是熟练,基本上能阅读国外专业书刊;必须掌握计算机相关知识,熟练使用仿真工具https://zhidao.baidu.com/question/1994330805504728707.html
13.2021届计算机科学方向毕业设计(论文)阶段性汇报基于多智能体增强学习的交互式图像分割算法研究 本课题旨在利用强化学习算法,将与人类的不断交互的信息引入到图像分割的过程中,从而实现交互式的图像分割,增加分割的准确率和收敛速度,最终降低分割所需要的标注成本。 目前现已基于开源的ppo强化学习算法进行修改,完成了算法主体部分的代码框架搭建,并且完善了数据处理、https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3943
14.主动学习入门篇:什么是主动学习?有哪些具体应用1、随机采样策略(Random Sampling,RS):RS 不需要跟模型的预测结果做任何交互,直接通过随机数从未标注样本池筛选出一批样本给专家标注,常作为主动学习算法中最基础的对比实验。 2、不确定性策略(Uncertainty Strategy,US):US 假设最靠近分类超平面的样本相对分类器具有较丰富的信息量,根据当前模型对样本的预测值筛选出最https://www.scholat.com/teamwork/showPostMessage.html?id=9011
15.多模态学习情感计算:动因框架与建议前沿领域进入2010年后,情感计算被广泛应用于教育领域[1],期间各类学习系统利用情感计算技术发展起来,代表性的有情感导学系统(ATS)。该类系统通过采集学习者面部、语音等数据,利用机器学习算法分析与处理情感信息,以识别与反馈情感状态,进而为学习者提供个性化导学策略。此外,学习情感计算也从单模态走向多模态数据融合,其中,深度学https://www.eduwest.com/html/2022/qianyanlingyu_0301/678.html
16.YSGStudyHards/DotNetGuide:C#/.NET/.NETCore学习逻辑算法通常使用形式化的逻辑语言和符号进行描述和表达,以便于机器或计算机程序的理解和执行。 逻辑算法提升 小浩算法 Hello算法 AcWing在线题库 牛客网基础算法 CodeTop企业题库 在线算法刷题平台-力扣 labuladong的算法小抄 VisuAlgo可视化学习算法 程序员必须掌握的算法有哪些? C#常见逻辑算法 C#经典十大排序算法 https://github.com/YSGStudyHards/DotNetGuide