各位關注PaddlePaddle的深度學習開發者, Fluid v1.2 版本今日閃亮登場啦!本次版本百度做了超多重磅更新!
本次版本的主要更新簡介:
1. 新增支援Windows下CPU環境執行,並提供windows版PIP安裝包。
2. 新增300個API Reference中文文件,13篇API使用指南 ,最佳化77個API Reference英文文件。
3. 新增對python3.6、python3.7的支援。
4. CV影像分類任務釋出MobileNet V1, ResNet101, ResNet152,VGG11預訓練模型。
5. 分散式訓練下增加稀疏通訊機制,引數的總量可以壓縮到1%以下,在搜尋真實場景的資料下,整體訓練吞吐可以提升50倍。
6. 伺服器端GPU環境下支援圖融合技術,且支援與TensorRT引擎混合改圖,在Resnet50和Googlenet等影像通用模型上bs=1下效能提升 50%~100% ,GoogleNet 8bit加速14%。
下面是更新細節,文章會從基礎框架、預測引擎、移動端預測、模型建設、分散式訓練、文件6個方面給大家介紹,約1500字,會花費4分鐘閱讀時間。
【基礎框架】
安裝
提供新pip安裝包,支援Windows下CPU執行。
程式語言
新增對python3.6、python3.7的支援。
重構記憶體分配模組Allocator,提升CPU下記憶體分配策略,提升視訊記憶體利用率(預設關閉,需要使用FLAGS_allocator_strategy)。
限制SelectedRows的使用。修復了稀疏正則和稀疏最佳化器的bug。
Tensor支援DLPack,方便被其他框架整合和整合其他訓練框架。
OP
修復 expand op shape 推理錯誤的bug。
支援 Selu 啟用函式。
【預測引擎】
伺服器預測
GPU 支援圖融合,且支援和 TensorRT引擎混合改圖,在Resnet50和Googlenet等影像通用模型上bs=1下效能提升 50%~100%。
GPU支援DDPG Deep Explore預測。
Paddle-TRT對更多模型的支援,其中包括Resnet, SE-Resnet, DPN,GoogleNet。
CPU, GPU, TensorRT 等加速引擎合併入 AnalysisPredictor,統一由 AnalysisConfig 控制。
增加呼叫多執行緒數學庫的介面。
新增TensorRT plugin的支援,包括split operator, prelu operator, avg_pool operator, elementwise_mul operator。
增加了JIT CPU Kernel,支援基本的向量操作,以及常見的演算法包括ReLU,LSTM和GRU的部分實現,可以實現在AVX和AVX2指令集之間自動runtime切換。
最佳化CRF decoding和LayerNorm在AVX以及AVX2指令集上的實現。
修復了 AnalysisPredictor 在GPU,在CPU 到 GPU 的 transfer data 不刪除的問題。
修復了 Variable 中包含 container 記憶體持續增長的問題。
修復fc_op不支援3-D Tensor的問題。
修復了Analysis predictor 在GPU下執行pass時的問題。
修復了TensorRT下執行GoogleNet的問題。
預測效能提升
Max Sequence pool optimization,單op提高10%。
Softmax operator 最佳化,單op提升14%。
Layer Norm operator最佳化,支援avx2指令集,單op提升5倍。
Stack operator 最佳化,單op提升3.6倍。
增加depthwise_conv_mkldnn_pass,加速MobileNet預測。
加速analysis模式的圖分析時間,提升70倍。
DAM開源模型,提升118.8%。
移動端預測
實現winograd演算法, GoogleNet v1效能大幅提升35%。
GoogleNet 8bit最佳化,相比float加速14%。
MobileNet v1 8bit支援,相比float加速20%。
MobileNet v2 8bit支援,相比float加速19%。
FPGA V1 開發了Deconv運算元。
android gpu支援MobileNet、MobileNetSSD、GoogleNet、SqueezeNet、YOLO、ResNet等主流的網路模型。
【模型建設】
CV影像分類任務釋出MobileNet V1, ResNet101, ResNet152,VGG11預訓練模型。
CV Metric Learning模型新增arcmargin損失,並調整訓練方式,採用element-wise作為預訓練模型,pair-wise繼續微調的訓練方式提升精度。
NLP語言模型任務新增基於cudnn的LSTM實現,對比PaddingRNN的實現方式,在不同引數配置下速度提升3~5倍。
增加分散式word2vec模型,包括新增的tree-based softmax operator,negative sampling等,與經典word2vec演算法對齊。
新增GRU4Rec、Tag-Space演算法的分散式配置。
完善Multi-view Simnet模型,並增加inference配置。
支援強化學習演算法 DQN。
現已支援python3.5及以上的模型:語義匹配DAM,閱讀理解BiDAF,機器翻譯Transformer,語言模型,強化學習DQN、DoubleDQN模型、DuelingDQN模型,影片分類TSN,度量學習Metric Learning,場景文字識別CRNN-CTC 、OCR Attention,生成式對抗網路ConditionalGAN 、DCGAN、CycleGAN,語義分割ICNET、DeepLab v3+,目標檢測Faster-RCNN、MobileNet-SSD 、PyramidBox ,影像分類SE-ResNeXt、ResNet等,個性化推薦TagSpace、GRU4Rec、SequenceSemanticRetrieval、DeepCTR、Multiview-Simnet。
【分散式訓練】
CPU多機非同步訓練
worker非同步併發:增加AsyncExecutor,以訓練檔案作為執行粒度,支援分散式訓練中的worker端計算非同步無鎖計算,同時支援單機訓練。以CTR任務為例,單機訓練速度,在充分利用單機執行緒的情況下,整體吞吐提升14倍。
IO最佳化:增加支援AsyncExecutor的DataFeed,支援可定製化的通用分類任務格式。面向CTR任務,增加CTRReader,使資料讀取速度線性提升,在PaddleRec/ctr任務中,整體吞吐提升1倍。
通訊最佳化:針對稀疏訪問的Dense引數例如Embedding,增加稀疏通訊機制,以語義匹配任務為例,獲取引數的總量可以壓縮到1%以下,在搜尋真實場景的資料下,整體訓練吞吐可以提升50倍。
GPU多機同步訓練
修復Transformer、Bert模型下P2P訓練模式會Hang住的問題。
【文件】
API
新增13篇API使用指南。
新增300個API Reference中文文件。
最佳化77個API Reference英文文件:包括程式碼示例、引數說明等。
安裝文件
新增python3.6、python3.7安裝說明。
新增windows pip install安裝說明。
Book文件
Book文件中的程式碼示例更改為Low level API。
使用文件
新增《Operator相關注意事項》,更新《儲存與載入模型變數》、《C++預測API介紹》、《使用TensorRT庫預測》、《如何貢獻程式碼》等多篇使用文件。