百度Paddle Fluid v1.3版本官方重磅更新

業界首個視頻分類模型庫python

新增視頻模型庫,提供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保存的模型可視化展現。

相關文章
相關標籤/搜索