精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
支撐千萬規模類別分類技術,百度飛槳定義工業級深度學習框架

2016 年,AlphaGo 橫空出世,人工智能時代到來。同年,百度開源自研的深度學習框架 PaddlePaddle(飛槳),成為中國首個開源深度學習框架。

然而,這波由深度學習推動的技術和產業浪潮,也面臨著諸多挑戰。

數據量越來越大,有些模型的訓練數據動輒上 TB;模型越來越深,越來越復雜,從 AlexNet 的 8 層,到 ResNet-1000 的 1202 層;模型參數越來越多,甚至超過 10 個億……

深度學習模型的訓練效率成為一個關鍵問題。

因為深度學習模型的效果迭代對訓練速度非常敏感,所以能夠帶來高性能分布式訓練的深度學習框架是實際開發和應用的剛需,也是 AI 在產業界能夠真正落地的基礎。

相同的硬件設備數,高效率的分布式訓練,可以大大縮短產品迭代周期。而在受限的時間要求下,高效率的平臺型工具也可以顯著減少硬件需求。

作為中國 首個唯一開源開放、功能完備的深度學習平臺。經過多年的產業實踐,百度飛槳已成長為集核心框架、工具組件和服務平臺為一體的端到端開源深度學習平臺,飛槳的大規模分布式訓練能力始終是其重要亮點。

百度深度學習技術平臺部總監馬艷軍在 CSDN 舉辦的 AI 開發者大會上曾介紹,“飛槳同時支持稠密參數和稀疏參數場景的超大規模深度學習并行訓練,支持萬億乃至更高量級規模參數的高效并行訓練,也是最早提供如此強大的深度學習并行技術的深度學習平臺,通過技術創新做到高效、穩定、成本低廉。”

真正的工業級規模:千億規模稀疏特征,千萬規模類別分類

為降低超大規模分類應用對普通的深度學習模型開發者的門檻,進一步幫助開發者提升個性化推薦應用的性能,飛槳推出了針對分布式訓練的一套全新的高并發參數服務器實現, 并發布了超大規模分類訓練庫PLSC,幫助開發者實現千億規模的稀疏特征進行訓練,以及千萬規模類別的分類。

千億規模稀疏特征

千億規模稀疏特征:推薦系統在信息流、短視頻等面向用戶端的產品中的應用越來越廣泛,而個性化推薦是這些產品追求的一個重要目標。實現個性化的一種重要且有效的方法就是利用深度學習方法將海量的個性化特征記憶在具有泛化能力的模型中。對于擁有上億日活用戶的產品,只要將用戶的個性化信息與圖文等資源的內容特征進行簡單的捆綁,特征規模就很容易擴張到百億甚至千億級別。

為了支撐千億規模的稀疏特征、萬億規模的模型參數,飛槳設計了分布式 Key-Value 存取的方式,通過分段鎖對 Key-Value 表進行分片,以支持并發更新的請求。針對大規模稀疏特征的更新和通信特點,基于百度自研的 baidu-rpc 通信庫進行了分布式訓練邏輯的通信層封裝。該參數服務器集成的功能包括客戶端發送參數的融合,請求分片,模型參數的更新、加載、保存等,形成了一套可插拔、支持高并發的參數服務器組件,并服務于信息流、短視頻等推薦場景。

圖 1:飛槳千億規模稀疏參數服務器設計

千萬規模類別分類

千萬規模分類的現實需求:視覺領域中諸如圖像分類、人臉識別、推薦系統中的標簽推薦等應用通常面臨著百萬級甚至千萬級的分類問題,目前,基于深度學習模型進行分類是解決該問題最有效的手段,但受限于當前硬件隨機訪問存儲容量的限制,分類模型的模型參數難以保存在單張 GPU 卡中,限制了普通用戶進行大規模分類模型訓練的能力。對于此問題,目前最好的解決手段就是采用模型并行的方式,但模型并行的設計、實現、性能和調試對于普通的深度學習模型開發者而言門檻較高。為此,飛槳推出了 PLSC(Paddle Large Scale Classification),其能夠大幅度降低基于模型并行的超大規模分類的應用門檻,并具備極好的性能和擴展能力,使得每個開發者都可以快速訓練超大規模類別的分類模型。

飛槳 PLSC 功能特色:支持圖像任務通用數據讀取方式、千萬類別的分類、多機分布式模型并行訓練、自動混合精度訓練、提供分類層語義表示的服務化計算。

PLSC 的性能和擴展性:對于單機 8 卡 32G 顯存的 V100,相比常規的數據并行方式,PLSC 可以使分類任務的類別數提升 250%。使用 128 塊 v100 進行模型并行訓練時,PLSC 擴張的類別數可以達到 5 千萬類。在多機多卡模型并行情況下,相比于單機八卡的 V100,PLSC 的加速效率比在千萬類別以上時可以達到 80%。

茶葉

圖 2:基于模型并行的大規模類別分類技術

表 1:飛槳PLSC中的arcface實現多機擴展效率

真正的工業級速度:讓模型訓練的速度飛起來

飛槳在借鑒 hogwild 無鎖模式等業界經驗的基礎上,并基于對百度廣泛的業務場景支持的實踐積累,進一步提出全新的稀疏參數通信、IO 異步讀取、Geo-SGD 訓練模式、多機多卡高性能訓練、混合精度訓練等功能,幫助普通用戶享受到工業級的模型訓練速度。通過對通信和訓練模式的創新,飛槳在超大規模模型或者數據吞吐、網絡通信易成為瓶頸的任務上的訓練速度和效果都得到極大提升,并全面超越市場同類產品表現。

全異步參數服務器訓練

稀疏參數通信:在深度學習模型中,稀疏特征往往需要進行特殊的處理,否則將會給內存和通信的消耗帶來嚴重問題。在目前主流的深度學習框架中,較為常見的處理稀疏特征的方法是通過變長張量對稀疏特征進行向量化,并對相應的特征嵌入進行稀疏查找。而在參數服務器多機訓練過程中,飛槳則針對稀疏參數采用了一些不同的處理方法,即首先通過對單節點下的并發訓練線程產生的稀疏梯度進行異步合并,而后進行批量通信,這一操作極大降低了訓練過程的通信量。對于稀疏特征為主的模型訓練,其多機加速比效果近乎可以達到線性。

多隊列異步 IO:在某些數據量特別大、吞吐要求高,但模型本身計算開銷較小的任務上,數據的 IO 很容易成為訓練效率的瓶頸。為解決這一問題,飛槳針對性地設計了多隊列異步讀取的功能,通過適當犧牲數據讀取的一致性,使得模型性能得到了極大提升。

無鎖參數共享模式:早在 2010 年,Hogwild![1]就提出了無鎖參數共享模式,其核心思想即稀疏參數模型在無鎖讀寫模式下也可以達到收斂效果。飛槳將這一模式作為參數服務器訓練的默認設置,并配合稀疏通信及多隊列異步 IO,將 CPU 服務器的硬件資源的潛力發揮到了極致。

圖 2:飛槳全異步訓練原理

表 2:飛槳全異步訓練在Criteo-CTR數據集的吞吐擴展性

飛槳 Geo-SGD 訓練

Geo-SGD:與傳統的參數服務器訓練方式不同,飛槳獨創的Geo-SGD(Geometric-SDG)采用 Worker 端進行模型參數的優化,并通過可定義通信間隔的方式,同步本地訓練的模型參數插值。另外,服務器端會采用異步的方式融合各個 Worker 發送的模型參數差異。隨著模型的收斂,worker 端的模型參數差異會逐漸變小,服務器端對全局模型參數的更新幅度也會以幾何級數的方式降低。

在 Geo-SGD 異步訓練模式下,Worker 不用再等待 Server 發來新的參數即可執行訓練,該方式使得訓練效果和速度都得到極大的提升。但是此模式比較適合可以在單機內能完整保存的模型,例如詞向量、語義匹配等場景。以計算量極小,但使用場景廣泛的 word2vec 模型為例,采用 Geo-SGD 訓練模式的飛槳分布式訓練的訓練速度能夠超越同類最優產品 18 倍,并且在公開數據集的驗證中,模型效果沒有任何損失。

圖 3:飛槳自研Geo-SGD算法原理

表 3:Geo-SGD在數據讀取和通信易成為瓶頸的模型下的擴展性

GPU 多機多卡高性能訓練、混合精度

通信擴展組件

通信拓撲支持:飛槳支持多種通信的拓撲結構,例如 Ring-Based AllReduce、Hierachical Allreduce、2-D Allreduce 等,用戶可以定制不同的通信拓撲,針對不同的集群環境提升整體的通信性能。

梯度自動聚合:通過對模型參數梯度大小的分析,飛槳啟發式的將梯度進行了聚合,以發揮高性能通信網絡,下一定范圍內的數據包通信延時基本不變的特性。

通信并發:飛槳通過支持多流通信的技術,能夠將通信相關的算子并發,以充分利用帶寬的優勢,將整體通信的延時大幅度降低。

Collective Operator:飛槳通過將通信組件算子化,極大的提升了并行算法定義的靈活性。以大規模分類庫 PLSC 為例,其通過多種 Collective Operator 靈活的組裝,可以進行定制化的大規模模型并行算法的開發。

基于最優優化策略的組合,我們以自然語言處理和計算機視覺兩個領域公開可獲取的經典模型作為 Benchmark 進行對比,飛槳的多機訓練優勢隨著 GPU 卡數的增加而逐漸增加,在絕對性能和擴展性上都全面超越了公開的其他框架。

茶葉

表 4 :飛槳多機多卡多機訓練與參考框架的縱向對比

混合精度通信加持

在支持半精度的 GPU 卡上,飛槳能夠通過一行代碼開啟自動混合精度(Automatic Mixed Precision,AMP)計算,顯著降低單卡的顯存占用和計算時間。在多機多卡訓練的情況下,飛槳分布式訓練技術通過對計算圖的分析,針對混合精度多機多卡訓練的情況,結合Op的角色,對 all reduce 算子進行了依賴關系的微調,保證多機通信的過程中采用半精度進行通信。在混合精度通信的情況下,模型的訓練精度不受影響,且通信帶寬占用下降 50%,保證了飛槳自動混合精度多機多卡訓練情況下仍然有較好的加速比。

圖 4:飛槳自動混合精度中多機多卡訓練的半精度通信原理

表 5 中展示了飛槳在 Resnet50 模型上,基于 Imagenet 數據集測試的全精度訓練和混合精度訓練在多機情況下的橫向擴展性以及縱向擴展性。在飛槳混合精度的支持下,GPU 多機多卡下的橫向擴展能力與全精度情況下相當,而縱向擴展方面的訓練吞吐提升達到了 2 倍以上。

表 5:飛槳多機多卡自動混合精度訓練的擴展性

真正的 AI 普惠化:降本增效,惠及所有開發者

為進一步惠及普通用戶,飛槳針對多個不同場景進行了專門開發,包括定制多種不同分布式訓練模式的 Fleet API、幫助提升公有云 GPU 訓練速度及效果的深度梯度壓縮(Deep Gradient Compression)技術以及 LocalSGD 技術、超大規模訓練中可大幅提升 batch size 的重計算技術。通過對已有功能的整合以及現有技術的創新,飛槳大幅度降低了用戶訓練分布式模型的學習、調試及算力成本,幫助用戶更快獲得最優訓練效果。

Fleet API

大多數深度學習用戶在使用分布式訓練功能時,通常會遇到四大問題:1)本地程序如何轉成可以分布式訓練的程序;2)如何提交分布式訓練程序到集群中;3)應該采用什么樣的并行訓練方法,如何定義;4)如何進一步提升自己任務的訓練效率。

為了降低用戶使用分布式訓練的門檻以及訓練成本,飛槳提供了分布式訓練 Fleet API,以幫助用戶獲得極佳的性能體驗。

通過使用 Fleet API,用戶只需添加十余行代碼,即可使用飛槳的參數服務器進行同步訓練、異步訓練、Geo-SGD 及 GPU 多機多卡同步訓練,極大降低了用戶在多種模式之間切換帶來的學習成本。此外,Fleet API 提供了與集群資源進行交互的接口,并對用戶透明化,極大降低了用戶面向集群資源進行調試的成本。Fleet API 還提供了可擴展接口,方便社區開發者自定義并行訓練加速算法。

公有云場景分布式訓練的難點

在網絡環境不佳的集群中,由于多機之間的通信受到帶寬的限制,在訓練較多節點的分布式訓練任務時,通信階段往往成為整個分布式訓練的效率瓶頸,在公有云上的 GPU 集群進行訓練時,這種情況尤為常見。為了讓公有云用戶能夠在較低的帶寬下進行高性能的分布式訓練,飛槳提供了深度梯度壓縮(Deep Gradient Compression)[2] 技術。

飛槳在原始論文算法的基礎上進行了進一步優化。考慮到在不同模型下模型參數梯度的碎片程度,飛槳僅對一定尺寸以上的模型參數梯度進行稀疏通信,以同步參數。而對于小塊模型參數梯度,考慮到其與 TopK 模型參數梯度的通信延時沒有太大的差異,因此仍采用普通的多機多卡同步機制。 目前,飛槳的深度梯度壓縮技術已經應用在了一些架設在公有云的 AI 平臺,經過內部業務數據評估,即使在計算力較弱的預估卡 P4 的多機多卡訓練的情況下,飛槳 DGC 技術也會將訓練時間降低了 40%-60%。

LocalSGD

針對公有云場景,飛槳同時還提供 LocalSGD [3] 多機訓練技術,其能夠將多步本地更新的模型參數在多機多卡之間進行加權融合。大量實驗證明,使用飛槳的 LocalSGD 技術進行多機訓練,對模型的收斂效果不會產生顯著影響。同時,由于同步參數的間隔相比常規的多機多卡訓練有所擴大,整體的加速比也有較好的提高。

使用重計算技術節省顯存進行超大 Batch 的并行訓練

在飛槳的多機多卡 GPU 訓練中,用戶可以通過重計算技術來提升全局 Batch Size 的大小,這在一些片上內存較小或者 GPU 卡數不夠的場景極為有效。

飛槳重計算技術:隨著訓練數據規模的逐漸增加,訓練更大、更深的深度學習模型逐漸成為主流趨勢。在目前的深度學習模型訓練中,模型通常需要保留前向計算的隱層結果。由于結果的數量會隨著模型層數的增加而線性增加,對目前能夠使用的計算芯片內存大小構成了挑戰。為此,飛槳提出 Forward Recomputation Backpropagation(FRB)技術,通過在反向過程中對必要的前向邏輯進行重新計算,實現顯存隨層數增長而亞線性增長[4]。

圖 5:飛槳重計算顯存優化原理

重計算擴展 Batch Size 的原理:將前向中間隱層結果顯存釋放,并在反向過程中基于錨點進行局部重新計算。

茶葉

圖 6. Bert 模型在單步計算顯存的變化曲線圖

在使用 32G V100 & FP32 時,我們在多個不同模型下進行了最大 batch size 的測試,其提升高達 600%。在分布式情況下,由于通信時間與重計算時間會有一定自動的重合,多數模型的訓練性能下降會控制在 20%以內,檢測類模型的多機訓練吞吐則不受影響。

表 6. 飛槳重計算技術對多個模型最大可訓練 Batch 的提升情況

開源不易,飛槳加速,唯有祝福

2013 年,百度開始研發深度學習框架 PaddlePaddle,搜索等核心業務上線 DNN 模型。

2016 年,在百度世界大會上,百度宣布 PaddlePaddle 開源,標志著國產開源深度學習平臺的誕生。

2019 年 PaddlePaddle 發布中文名“飛槳”,升級為功能完備的產業級開源開放平臺,加大技術和產業生態的建設。

在正確的道路上堅持數年之后,飛槳開始加速。

然而,這些成功來之不易,因為開源只是生態建設的極小一部分,商業公司往往要考慮投入產出比,而發展自己的深度學習框架,既有對 AI 綜合技術實力的要求,也需要對開發資源常年持續投入,目前全球也僅 Google、Facebook、百度等幾大 AI 巨頭在該方向上持續投入。

一款深度學習框架產品要被廣大開發者認可,只有在全面技術競爭力的基礎上,長期持續緊貼用戶需求打磨,圍繞框架建立上下游生態,進而建立具備高度壁壘的綜合競爭力。

打造深度學習框架沒有捷徑可走,打造真正的產業級深度學習框架更加不易,祝福百度飛槳,也祝福后來者。

[1] HOGWILD!: A Lock-Free Approach to Parallelizing Stochastic Gradient Descent. Feng Niu , Benjamin Recht , Christopher Re , Stephen J. Wright

[2] Deep Gradient Compression: Reducing the Communication Bandwidth for Distributed Training. Yujun Lin , Song Han , Huizi Mao , Yu Wang , William J. Dally

[3] Local SGD Converges Fast and Communication Little. Sebastian U. Stich

[4] Training Deep Nets with Sublinear Memory Cost. Tianqi Chen, Bing Xu, Chiyuan Zhang, Carlos Guestrin

點擊閱讀原文,了解更多!

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
談談NLP下一個主戰場:萬億參數的預訓練模型!
行走在技術的最前沿!這就是飛槳分布式訓練技術
大模型相關資料整理
分布式深度學習模型訓練的通信優化與數據同步策略
飛槳PaddlePaddle
一口氣發布11項新升級,免費送出1億元算力:國產深度學習平臺PaddlePaddle大更新
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 辽阳市| 中西区| 康乐县| 甘肃省| 岗巴县| 湘乡市| 湘潭市| 广西| 伊川县| 灌云县| 绵竹市| 常熟市| 西贡区| 乡宁县| 徐闻县| 翼城县| 休宁县| 天全县| 额济纳旗| 长沙市| 海原县| 永清县| 吉水县| 专栏| 浮山县| 五原县| 芜湖县| 南澳县| 从江县| 威宁| 抚松县| 尉氏县| 贵港市| 黔西县| 和田市| 米脂县| 朝阳区| 和龙市| 许昌县| 张家界市| 双桥区|