百度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保存的模型可視化展示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章