從半年前飛槳釋出 11 個全新模組,到今天又釋出 9 大新開發產品,百度工程師已經「碼力」全開。
今年 4 月份,百度首次公佈了飛槳平臺全景圖和多個開發模組。在短短半年之後,百度又在深度學習開發者峰會上釋出了 9 大全新開發產品。從 4 個端到端開發套件、飛槳 Master 模式,到圖學習框架 PGL 等多種新工具,今年第二次釋出會誠意滿滿。
飛槳是一個源於產業的平臺,它以 PaddlePaddle 框架為核心構建了一系列工具與元件。截止到當前,飛槳服務了超過 150 萬開發者,超過 6.5 萬的企業。總體上,基於飛槳的 16.9 萬模型很多都是面向應用的,它們有很大一部分直接用於更復雜的產業環境。
正如百度技術長、深度學習技術及應用國家工程實驗室主任王海峰所說:「深度學習正在推動人工智慧進入工業化大生產階段,而深度學習技術和平臺也在不斷髮展,在未來的時間裡也將繼續發揮重要作用。我們秉承開源開放的理念,把飛槳平臺開源開放,與所有開發者一起,推動科技發展、產業創新和社會進步。」
百度 AI 技術平臺體系執行總監、深度學習技術及應用國家工程實驗室副主任吳甜介紹到,飛槳是一個源於產業實踐的深度學習開源開放平臺。它集核心框架、模型庫、端到端開發套件、工具元件和服務平臺為一體,為深度學習模型的開發、訓練和部署等提供標準化、自動化和模組化服務,降低人工智慧技術應用門檻,激發技術創新,促進產業升級。
飛槳就像作業系統那樣將機器學習的各個方面聯絡起來,儘可能為開發者,甚至是為非開發者提供足夠強大、足夠易用的操作體驗。在今天的深度學習開發者峰會中,百度深度學習技術平臺部總監馬豔軍釋出了飛槳 21 項新模組與新升級。
從現在的飛槳全景圖來看,百度的 AI 生態已經覆蓋了人工智慧中幾乎所有應用方向。
如果讀者看看第一版全景圖,就會發現從核心框架到工具元件這半年優化了太多方面。馬豔軍表示:「雖然優化工作很多,但我們做得很投入,做的東西很有意義。飛槳平臺的開發要求很高,但我們有能力做好,並做出特色和優勢。」
在釋出會上,馬豔軍花費了一個多小時來介紹飛槳的各種新工具。我們發現從最基礎的 1.6 版本新特性,到圖神經網路和多工學習等全新的工具元件,再到 ERNIE 和 PaddleDetection 等端到端開發套件,整個飛槳大家庭有太多的更新,這篇文章也只是介紹最為吸引人的新工具,更多的細節可查閱這幾天的系列解讀文章。
四大開發套件與飛槳 Master 模式
百度 AI 技術平臺體系執行總監、深度學習技術及應用國家工程實驗室副主任吳甜表示,為了幫助製造業企業轉型,百度為製造業提供了端到端的開發套件,包括 PaddleSeg、PaddleDetection 等套件。
在開發套件之外,吳甜還介紹了飛槳平臺的 Master 模式,這是一種通過開放平臺能力和模型,結合企業特有資料和業務流程,助力企業獲得大資料和大模型效能的實現路徑。吳甜說:「這種模式就像有一個 Master,我們可以跟著 Master 學習,學到自己場景適用的模型。」
以百度的 ERNIE 預訓練模型為例,百度在這一模型的基礎上,通過增加百科知識、篇章知識、語法知識等,形成基礎模型。而企業可以使用這一預訓練模型進行微調和遷移學習,最終在自身的定製化任務上的將工作量大幅降低。
不論是開發套件還是 Master 模式,它們都旨在於實踐中更高效地構建更好的模型。
升級為套件的 ERNIE
因為自然語言的廣泛應用,百度現在已將 ERNIE 從預訓練模型升級為端到端開發套件,將模型作為強大的開發工具,為開發者提供模型效能上的支援。
ERNIE 是基於持續學習的語義理解預訓練框架,使用多工學習增量式構建預訓練任務,最新發布的 ERNIE 2.0 中,新構建的預訓練任務型別可以無縫的加入訓練框架,持續的進行語義理解學習。
專案地址:https://github.com/PaddlePaddle/ERNIE
具體而言,在 ERNIE 預訓練模型的基礎上,百度為其新增了工具層、平臺層和應用層,使其具有了服務能力。只需要呼叫相關的 API,開發者就可以使用語義表示方面的能力了。
此外,ERNIE 面對不同的使用者的需求提出了一些改進。首先,考慮到自然語言處理任務的多樣性,ERNIE 進行了多工學習,用於滿足不同任務對資料分佈上的要求。其次,自然語言處理有領域上的限制約束。因此,ERNIE 根據面向的領域不同,提供了專門的領域模型,語料和資料都為不同的領域而定製。第三、ERNIE 在應用方面也提供了很多工具,通過使用這些工具,可實現 ERNIE 快速推理和推薦、對 ERNIE 進行模型壓縮、快速部署,或根據業務需求進行定製化開發。
在升級到 2.0 版本之後,ERNIE 模型可以進行多工和持續學習。同時,還有開源的壓縮版本——ERNIE-Tiny。
快速落地的 PaddleSeg
對於經典的影像分割任務,馬豔軍表示,現在它在日常生活中越來越廣泛,人體特效和智慧摳圖等應用也非常吸引人。PaddleSeg 在這些日常任務中有很好的效果,也很容易放到實際應用中去。
PaddleSeg 是產業級影像分割庫,覆蓋了 DeepLabv3+、U-Net、ICNet 三類主流的分割模型。通過統一的配置,幫助使用者更便捷地完成從訓練到部署的全流程影像分割應用。PaddleSeg 具備高效能、豐富的資料增強、工業級部署、全流程應用的特點。
專案地址:https://github.com/PaddlePaddle/PaddleSeg
PaddleSeg 目前已支援了 18 個訓練模型,覆蓋了幾乎所有的主流網路架構。
PaddleDetection
PaddleDetection 是目標檢測庫,目的是為工業界和學術界提供大量易使用的目標檢測模型。PaddleDetection 不僅效能完善,易於部署,同時能夠靈活的滿足演算法研發需求。
專案地址:https://github.com/PaddlePaddle/PaddleDetection
PaddleDetection 目前已支援了超過 60 種模型,其中有很多近年來推出的模型。考慮到影像識別方面的模型較大的問題,PaddleDetection 還有很多小模型版本,這些都是通過模型結構搜尋出來的,可以用於部署在移動端小型裝置上。
此外,為了推動影像識別對下游影像處理任務方面的促進作用,PaddleDetection 具有模組化拼裝的方式,可以很方便地和其他任務組合起來。
ElasticCTR
在工業領域,CTR 模型的應用非常廣泛。本次釋出會上,百度也介紹了他們的 ElasticCTR 模組。能夠實現分散式訓練 CTR 預估任務和 Serving 流程一鍵部署。為了幫助工業領域進行快速應用,百度提供了端到端的 CTR 訓練和二次開發的解決方案。
多個開發模組新發布
從模型定義到模型部署,整個開發過程涉及的流程非常多,遠不止常規的模型編寫。與此同時,模型的應用領域也非常廣,遠不止常見的視覺、語言等方面。如果想要打造統一的系統,那麼這兩者都是要覆蓋的。對於飛槳來說,全景圖中的核心框架承載的是整個模型開發流程,而各種工具元件,旨在提供更便捷好用的成套模組。
如下四大工具,可以讓你更好地部署手機端模型、更好地構建多工學習、圖神經網路和聯邦學習模型。
面向移動端的 Paddle Lite 2.0
Paddle Lite 是 Paddle-Mobile 的升級版,定位支援包括手機移動端在內更多場景的輕量化高效預測,支援更廣泛的硬體和平臺,是一個高效能、輕量級的深度學習預測引擎。馬豔軍表示,Paddle Lite 2.0 具有極高的易用性,它擁有非常多的實際操作指南,從而幫助我們在不同的裝置上快速部署模型。
專案地址:https://github.com/PaddlePaddle/Paddle-Lite
馬豔軍說:「Paddle Lite 2.0 對硬體的支援非常廣泛,八種主流的硬體都沒有問題,這一次該工具還新增了對華為 NPU 以及 FPGA 的支援。」有了如此多的硬體支援,在與 PaddlePaddle 無縫對接外,Paddle Lite 2.0 也相容其他訓練框架輸出的模型。
除了好用外,效能也非常重要。如下圖所示,Paddle Lite 2.0 在執行移動端深度學習模型 MobileNet 時的速度,尤其是在 Int8 精度下的推斷速度有很大的優勢。
圖學習框架 PGL1.0
Paddle Graph Learning(PGL)是一個高效易用的圖學習框架,PGL 提供一系列的 Python 介面用於儲存/讀取/查詢圖資料結構,並且提供基於遊走(Walk Based)以及訊息傳遞(Message Passing)兩種計算正規化的計算介面。
利用這些介面,我們可以輕鬆的搭建最前沿的圖學習演算法,它覆蓋大部分的圖網路應用,包括圖表示學習以及圖神經網路。
專案地址:https://github.com/PaddlePaddle/PGL
百度在 PGL 的介面的設計上做了大量工作,用於提升圖神經網路的易用性。同時,為了提升整體效能,PGL 可使用分散式訓練的方法進行執行。最終,PGL 和飛槳本身的變長張量特性結合,效能更快。據馬豔軍介紹,PGL 可支援十億節點、百億邊的訓練。
聯邦學習 PaddleFL
PaddleFL(Federated Deep Learning)是一個開源聯邦學習框架。據介紹,研究人員可以很輕鬆地用 PaddleFL 複製和比較不同的聯邦學習演算法。開發人員也可以從 PadderFL 中獲益,因為用 PaddleFL 在大規模分散式叢集中部署聯邦學習系統很容易。
專案地址:https://github.com/PaddlePaddle/PaddleFL
多工學習 PALM
PALM(PAddLE Multitask)是一個靈活易用的多工學習框架,框架中內建了豐富的模型 backbone(BERT、ERNIE 等)、常見的任務正規化(分類、匹配、序列標註、機器閱讀理解等)和資料集讀取與處理工具。對於典型的任務場景,使用者幾乎無需書寫程式碼便可完成新任務的新增;對於特殊的任務場景,使用者可通過對預置介面的實現來完成對新任務的支援。
專案地址:https://github.com/PaddlePaddle/PALM
在任務方面,PALM 支援了多個人工智慧領域的多工學習。以自然語言處理為例,PALM 可為模型提供自然語言理解、機器閱讀理解、機器翻譯等方面的多工學習訓練方法。而在計算機視覺方面則包括了影像識別、影像分類、語義分割、影像生成等方面。釋出會上,馬豔軍表示,PALM 已支援 20 行程式碼進行多工訓練。
飛槳核心框架 Paddle 1.6:為易用而生
除了新工具的推出和舊有工具的優化,百度整體上對飛槳平臺進行了一次較大的改進。對於飛槳核心框架(簡稱 Paddle)的易用性,馬豔軍說:「我們 6 月份發的版本已經整合了動態圖機制,在這次的釋出中,動態圖程式設計又有很多新優化。」
飛槳有一個比較好的地方,即最開始設計的時候就充分地考慮了動態圖和靜態圖的相容性。馬豔軍表示,採用動態計算圖,其呈現的不只有易用性,在動態圖的背後,它與靜態計算圖複用了很多底層效能優化技術,因此飛槳效能和效率的兼顧會做的會比較完善。
全新升級後的飛槳,易用性大幅提升,動態圖全新升級、新增大量運算元庫、優化 API 介面,技術文件更加完善。大規模分散式訓練效能領先,分散式 GPU 訓練相比其他主流實現可以獲得 20%-100% 的速度提升,分散式 CPU 訓練最大吞吐量可達競品的 6 倍以上。官方支援模型庫極大豐富,官方模型從 60 多個增加到了 100 多個,提供下載的預訓練模型已經超過 200 個。
馬豔軍表示:「Paddle 新版本只需要改動 5 行程式碼,就能把單機程式變成分散式訓練程式。」這免除了大量的手動工作,將複雜的調配過程都留給了框架本身。
最後,百度在文件上也下了很大功夫,這次更新後,整個中文文件有了很大變化。因此從 API 層面到訓練機制、再到開發文件都有顯著的改善,開發者用起來很方便,體驗上就會有顯著的改善。
成績斐然的半年
本次更新多達 21 項新模組與新升級,馬豔軍說:「這些新的釋出和升級都是顯性的一些工作,我們在底層核心技術還做了更多的優化,團隊的能力也越來越強。這一領域國內人才非常稀缺,隨著飛槳平臺越來越完善,我們團隊得到了更多的鍛鍊,團隊也越來越強大。」
吳甜表示,從一年多之前開始,飛槳有了更強的戰略定位,並加大了對飛槳的投入。「在這一年多的時間裡,大家把原來的工作都做得更優秀,並同時去做更多的開源與推廣。」
在半年時間裡做出如此多的更新,確實很多部門通力合作的結果。通過今年兩次的大型釋出會,我們能清晰地感受到飛槳平臺以及 PaddlePaddle 框架變得越來越成熟。最終,飛槳也許會形成完整的系統,將複雜的機制隱藏在底層,將最好用的工具給使用者,這會是非常令人興奮的一件事。