热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

fp32和int8模型的区别_百度PaddleFluidv1.3版本官方重磅更新

PaddleFluidv1.3版本于今日发布,在基础框架、预测引擎、模型建设、分布式训练各个方向上完成多项升级。下载安装命令##CPU版本安装命令pipinstall

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

下载安装命令

## CPU版本安装命令

pip install -fhttps://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle

## GPU版本安装命令

pip install -fhttps://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu

业界首个视频分类模型库

新增视频模型库,提供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&#xff0c;支持N      (<200)个sequence_pooling op concat起来组成一个新op&#xff0c;整体使得seqpool模型 CPU预测提升56%。

fuse 连续重复的fc op为一个大op&#xff0c;使得seqpool模型CPU预测速度提升15%。

fuse 逻辑为((X * Y).^2      - (X.^2 * Y.^2) ) .* scalar的op组合 , 使得seqpool模型CPU预测速度提升8.2%。

针对输入tensor元素个数为1的情况&#xff0c;优化compare_op的CPU      Kernel。

新增Paddle-TRT 对Calibration INT8的支持&#xff0c;GPU预测速度提升

模型VGG&#xff0c;Resnet50上预测速度达到了Paddle-TRT float32的两倍性能。

模型VGG&#xff0c;Resnet50在imagenet数据集上测试&#xff0c;精度下降0.3%以内。

算子融合

增加 fc和 con 相关两个 fuse&#xff0c;作用于 conv_op CUDNN kernel。

新增Conv&#43;Affine      Channel的融合pass&#xff0c;Faster RCNN运行的性能提升26.8%。

新增Transpose&#43;Flatten&#43;Concat 融合pass&#xff0c;MobilenetSSD模型性能提升15%。

实现beam_search      operator的CUDA Kernel&#xff0c;并且将相应的top-k、elementwise_add、reshape、log计算融合到beam_search operator中。

功能完善及易用性提升

新增C&#43;&#43; IR graph的Python接口。

新增预测库的Python接口。

服务端预测支持从内存加载模型。

其他

删除legacy V2代码。从1.3版本起&#xff0c;不再支持V1&V2老版本功能。

修复Paddle-TRT      elementwise-mul模型运行出现问题的bug。

修复Paddle-TRT      trt_engine stream多个连续输入情况下模型输出结果异常的bug。

移动端预测

效率优化&#xff0c;常见模型预测速度提升

int8预测支持dequantize和其他op(batch      normalization/relu/elementwise add)进行自动kernel融合。

transpose2      operator对于shuffle channel操作进行优化。

gru operator使用neon指令进行优化&#xff0c;并针对batch size为1时进行优化。

优化和实现pooling&#xff0c;支持任意的padding。

优化和实现batch normalization、softmax、elementwise      add。

新增支持多个输入和多个输出的模型预测。

新增实现prelu6     operator、cast operator、top_k     operator。

修复int8     offline量化溢出结果不对的问题。

修复winograd实现在输入feature     map的height和width不相等时结果可能为0的bug。

模型建设

新增发布PaddlePaddle视频模型库&#xff0c;包括五个视频分类模型&#xff1a;Attention Cluster、NeXtVLAD、LSTM,、stNet、TSN。提供适合视频分类任务的通用骨架代码&#xff0c;包括数据读取和预处理、训练和预测、网络模型以及指标计算等多个模块。用户根据需要添加自己的网络模型&#xff0c;直接复用其他模块的代码&#xff0c;快速部署模型。

新增支持目标检测Mask R-CNN模型&#xff0c;效果与主流实现打平。

语义分割DeepLabV3&#43;模型&#xff0c;depthwise_conv      op融合&#xff0c;显存优化&#xff0c;显存占用对比上一版本减少40%。

PaddleNLP 智能文本处理

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

机器翻译Transformer模型优化解码计算&#xff0c;decoder中加入对encoder      output计算结果的cache&#xff0c;预测速度提升一倍。

PaddleRec 智能推荐

Sequence Semantic Retrieval 新增单机多线程、单机多卡运行示例&#xff0c;添加预测功能、数据预处理优化&#xff0c;完善部署示例。

GRU4Rec新增负采样功能&#xff0c;使用bpr loss和cross      entropy loss的效果与原作打平。

分布式训练

大规模稀疏参数服务器Benchmark发布

测试真实业务场景下&#xff0c;特征规模百亿、样本平均特征数1k的点击率预估任务&#xff0c;在batch&#61;512情况下&#xff0c;100worker加速比90.5&#xff0c;吞吐量1.36M/s 。

CPU多机异步训练

发布面向点击率预估任务的built-in      reader&#xff0c;Criteo数据集下IO总吞吐提升1300%。

GPU多机多卡水平扩展性能提升

新增并行模式&#xff1a;PG(ParallelGraph)、MP(Multi-Process)&#xff0c;独立GPU卡之间的计算&#xff0c;提升性能同时&#xff0c;不影响模型精度。

在ResNet50模型&#xff0c;单机8卡V100下&#xff0c;PG, MP模式提升训练性能30%以上&#xff1b;4机32卡&#xff0c;PG模式提速46%&#xff0c;MP模式提速60%。

在BERT模型&#xff0c;8卡V100下&#xff0c;PG, MP模式提升训练性能26%。

Multi-Process模式相比Parallel-Graph模式对Reader速度敏感度不高。

GPU多机多卡垂直扩展性能提升

新增功能&#xff1a;fp16和混合精度训练

Fp16单机单卡加速情况&#xff1a;ResNet50提速约87%&#xff0c;BERT提速约70%。

BERT同时开启PG和混合精度&#xff0c;单机8卡下单位时间吞吐提升120%。

ResNet50同时开启混合精度训练和MP模式&#xff0c;在V100单机8卡、4机32卡下&#xff0c;单位时间吞吐提升100%。

典型模型收敛速度优化

新增功能&#xff1a;动态Batch Size&#xff0c;动态Image      Resize方法。

Resnet50 on      Imagenet数据集&#xff1a;训练收敛轮数下降为标准训练方法的1/3左右。

VisualDL

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

下载安装命令

## CPU版本安装命令

pip install -fhttps://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle

## GPU版本安装命令

pip install -fhttps://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu



推荐阅读
  • 进程(Process)是指计算机中程序对特定数据集的一次运行活动,是系统资源分配与调度的核心单元,构成了操作系统架构的基础。在早期以进程为中心的计算机体系结构中,进程被视为程序的执行实例,其状态和控制信息通过任务描述符(task_struct)进行管理和维护。本文将深入探讨进程的概念及其关键数据结构task_struct,解析其在操作系统中的作用和实现机制。 ... [详细]
  • 优化后的标题:PHP分布式高并发秒杀系统设计与实现
    PHPSeckill是一个基于PHP、Lua和Redis构建的高效分布式秒杀系统。该项目利用php_apcu扩展优化性能,实现了高并发环境下的秒杀功能。系统设计充分考虑了分布式架构的可扩展性和稳定性,适用于大规模用户同时访问的场景。项目代码已开源,可在Gitee平台上获取。 ... [详细]
  • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
  • SpringBoot启动脚本详解:BAT文件应用与基础入门指南(SpringBoot系列第1篇)
    如果你还在为SSM框架的复杂搭建过程和繁琐的配置文件而烦恼,那么SpringBoot将是你的一大福音。作为SpringBoot系列的第一篇文章,本文详细介绍了如何使用BAT文件来启动SpringBoot应用,并提供了基础入门指南,帮助开发者快速上手,简化开发流程。 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • 点云技术初探(三):PCL基础知识与学习路径指南本文首先介绍了点云库(PCL)的基本概念,PCL是一个在前人点云研究成果基础上发展而来的大型跨平台开源C++编程库,旨在为点云数据处理提供全面的支持。文章详细阐述了PCL的核心功能及其在三维数据处理、特征提取、分割与配准等方面的应用,并为初学者提供了系统的学习路径和资源推荐,帮助读者快速掌握PCL的使用方法。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • Go语言中Goroutine与通道机制及其异常处理深入解析
    在Go语言中,Goroutine可视为一种轻量级的并发执行单元,其资源消耗远低于传统线程,初始栈大小仅为2KB,而普通线程则通常需要几MB。此外,Goroutine的调度由Go运行时自动管理,能够高效地支持成千上万个并发任务。本文深入探讨了Goroutine的工作原理及其与通道(channel)的配合使用,特别是在异常处理方面的最佳实践,为开发者提供了一套完整的解决方案,以确保程序的稳定性和可靠性。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • SSMS 启动故障:错误报告与解决求助 ... [详细]
author-avatar
mobiledu2502860983
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有