皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

PaddlePaddle 1.2.3 发布,百度开源的深度学习框架

百度开源的深度学习框架 PaddlePaddle 1.2.3 发布了。

PaddlePaddle (PArallel Distributed Deep LEarning,并行分布式深度学习) 是百度研发的深度学习平台,具有易用、高效、灵活和可伸缩等特点,为百度内部多项产品提供深度学习算法支持。PaddlePaddle 也是一个易学、易用的开源深度学习框架, 能够让开发者和企业安全、高效地实现自己的 AI 想法。

新版更新内容如下:

重要更新

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

基础框架

  • 安装
    • 新增 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。

预测引擎

  • 重要更新

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

    基础框架

    • 安装
      • 新增 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 融合,显存优化,显存占用对比上一版本减少 50%。
    • 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://www.oschina.net/news/104832/paddlepaddle-1-2-3-released

分享到:更多 ()