PaddlePaddle在基礎框架、模型建設、分佈式訓練、預測引擎各個方向上完成多項更新。OP進行了全面完善和優化,模型庫新增了自然語言處理、視覺和推薦等領域的大量經典模型,分佈式訓練能力顯著提升,支持千億規模稀疏參數大規模多機異步訓練,預測庫易用性和效率提升,移動端預測支持更多模型和更多硬件。詳情如下:
基礎框架
安裝
- Mac OS X 10.11及以上pip安裝支持。
- Mac OS X 10.12及以上從源碼編譯安裝支持。
編程語言
- Python3的支持(python3.5版本)。
IO
- 新增PyReader,支持用戶基於python自定義數據讀取和預處理的的高性能數據輸入。在ResNet50模型上,單機情況下:單卡數據讀取速度提升4%、4卡數據讀取速度提升38%、8卡數據讀取速度提升60%。
- 實現一個多進程PyReader decorator,配合PyReader可以實現數據讀取性能線性提升。
OP優化
- 優化了split operator,顯著提升性能。
- 擴展multiclass_nms operator,支持多邊形的預測框。
- 通過generatoe_proposals operator的CUDA實現,顯著提升性能。
- 通過affine_channel operator融合batch_norm operator,顯著提升性能。
- 優化depthwise_conv operator的forward和backward,顯著提升性能。
- 優化reduce_mean operator。
- 優化sum operator,該operator在輸入是Tensor的情況下,減少一次zero memory耗時。
- 優化top_k operator,顯著提升性能。
- 優化sequence_pool operator,顯著提升性能。
- 優化elementwise_add operator ,顯著提升性能。
- while operator 性能優化,相關的模型性能整體提升 30%+。
- sequence_slice operator的實現,對於一個sequence,可以從指定位置開始,slice出指定長度的subsequence。
- sequence_unpad operator的實現,支持padding Tensor轉LoDTensor。
- 支持截斷正態分佈初始化方法(truncated normal initializer)。
- 二維padding operator的實現,支持一個每個緯度的首尾padding不同的大小。
- 更多 operator支持
sequence_reverse operator,sequence_enumerate operator, sequence_scatter operator, roi_align operator,affine_channel operator, anchor_generator operator,generate_proposal_labels operator, generate_proposals operator, rpn_target_assign operator、roi透視變換operator, seq_pool operator、seq_expand operator、seq_concat operator、seq_softmax operator、lod_to_array operator、array_to_lod operator。
顯存優化
- 顯存優化策略eager deletion支持control flow (e.g. if-else, while)中子block的優化。顯著降低包含control flow的模型的顯存開銷。
模型建設
- 自然語言處理方向增加開源語義匹配DAM模型和閱讀理解BiDAF模型,機器翻譯Transformer模型性能優化後訓練速度提升超過30%,模型效果和訓練速度均達到業界領先水平。
- 計算機視覺方向增加開源OCR識別Seq2Seq-Attention模型,目標檢測Faster-RCNN模型,圖像語義分割DeepLab v3+模型,視頻分類TSN模型,圖像生成CircleGAN/ConditionalGAN/DCGAN模型,以及Deep Metric Learning模型,模型效果和訓練速度均達到業界領先水平。
- 個性化推薦任務系列模型支持:新聞自動標籤模型TagSpace,序列語義召回模型GRU4Rec、SequenceSemanticRetrieval,點擊率預估模型DeepCTR,多視角興趣匹配模型multiview-simnet
TagSpace : TagSpace: Semantic Embeddings from Hashtags
SequenceSemanticRetrieval : Multi-Rate Deep Learning for Temporal Recommendation
multiview-simnet : A Multi-View Deep Learning Approach for Cross Domain User Modeling in Recommendation Systems
GRU4Rec : Session-based Recommendations with Recurrent Neural Networks
DeepCTR : DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
- 公開的Quora數據集上,實現並復現了四個公開匹配算法,具有較好的通用性,可應用於NLP、搜索、推薦等場景。
cdssmNet:Learning semantic representations using convolutional neural networks for web search
decAttNet:Neural paraphrase identification of questions with noisy pretraining
inferSentNet:Supervised learning of universal sentence representations from natural language inference data
SSENet:Shortcut-stacked sentence encoders for multi-domain inference
分佈式訓練
- GPU多機多卡同步訓練支持參數同步頻率可配置化,在V100上支持的batch size提升爲v1.0版本的8倍,通過合理的通信間隔配置,使GPU卡數較少的情況下超大Batch同步訓練成爲可能,並在優化算法方面保證了收斂效果不變。
- 支持千億規模稀疏參數服務器,用於大規模多機異步訓練,適用於推薦、廣告等領域的點擊率預估模型。
預測引擎
服務器預測
- 預測庫Windows支持。
- PaddlePredictor C++ 接口穩定版發佈,已經實際支持一部分業務上線,並持續向前兼容。
- 預發佈整合了 TensorRT 子圖加速方案。運行時自動切割計算子圖調用TensorRT加速。目前Paddle TensorRT 依舊在持續開發中,已支持的模型有 AlexNet, MobileNet, ResNet50, VGG19, ResNet, MobileNet-SSD等。
- 基於圖優化的 CPU 加速 feature,實現了 LSTM,GRU 等一系列 operator 的 fuse,理論上可以大幅提升序列相關模型的性能。
- 增加了部署時 AVX 和 NOAVX 自動切換的feature,可以針對重點模型實現AVX, AVX2, AVX512自動切換。
- 提升預測庫易用性:只需要 include一個頭文件和一個庫。
- ICNet 預測性能大幅提升。
移動端預測
- 樹莓派上MobileNet、GoogleNet、ResNet 34等多個模型支持。
- Mali GPU和Andreno GPU上MobileNet v1模型支持。
- ZU5、ZU9等FPGA開發板上ResNet 34和ResNet 50模型支持。