業界首個視頻分類模型庫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保存的模型可視化展現。