強化學習、聯邦學習、圖神經網路,飛槳全新工具元件詳解

機器之心發表於2019-12-05

很多未到場的開發者覺得遺憾,希望可以瞭解飛槳釋出會背後的更多技術細節,因此我們特別策劃了一個系列稿件,分別從核心框架、基礎模型庫、端到端開發套件、工具元件和服務平臺五個層面分別詳細解讀飛槳的核心技術與最新進展,敬請關注。

今天給大家帶來的是系列文章之飛槳工具元件解讀。

飛槳深度學習平臺工具元件,包括 PaddleHub 遷移學習、PARL 強化學習、PALM 多工學習、PaddleFL 聯邦學習、PGL 圖神經網路、EDL 彈性深度學習計算、AutoDL 自動化深度學習、VisualDL 訓練視覺化工具等,旨在推動前沿深度學習技術的產業化落地,滿足多樣的產業需求。下面帶來飛槳深度學習平臺工具元件詳細解讀,核心內容 3993 字,預計閱讀時間 4 分鐘。

強化學習、聯邦學習、圖神經網路,飛槳全新工具元件詳解

PaddleHub 遷移學習

強化學習、聯邦學習、圖神經網路,飛槳全新工具元件詳解

PaddleHub 是預訓練模型管理和遷移學習工具。開發者通過使用預訓練模型,可以更便捷地開展遷移學習工作。PaddleHub 主要有以下特點:

豐富的預訓練模型庫

飛槳的預訓練模型庫,目前主要覆蓋自然語言處理和計算機視覺兩個方向,包含影像分類、目標檢測、詞法分析、語義模型、情感分析、語言模型、視訊分類、影像生成、影像分割等 70 多個技術領先的而且經過長期的產業實踐驗證的優質模型,可以幫助開發者快速開始。

少量程式碼即可完成遷移學習

PaddleHub Fine-tune API 的開發,目的是幫助開發者降低遷移學習的門檻。在預訓練模型的領域,我們可以認為模型都是標準化的,有標準化的輸入,也有標準化的輸出,跟軟體是樣的模組化。通過自定義資料集,再加上 Fine-tune API,組網的工作可以通過一行程式碼搞定,而且 PaddleHub 整合了工業級簡單實用的策略,包括資料的預處理等,可供開發者嘗試。同時,引入『模型即軟體』的設計理念,通過 Python API 或者命令列實現一鍵預測,更方便地應用飛槳模型庫。

強化學習、聯邦學習、圖神經網路,飛槳全新工具元件詳解

支援超參優化,自動搜尋超引數

PaddleHub AutoDL Finetuner 提供一個黑盒優化的策略,目標是用盡可能少的次數來找到一個更好的超參,使得我們的模型在驗證集上的指標更好。這個問題沒有很明確的公式描述,因此需要通過黑盒優化的技術來求解:通過定義一個超參的型別和範圍,讓機器來自動搜尋,而且對於任意的機器學習的程式碼都可以使用黑盒優化,可以幫助開發者提高整個超參優化的效率。

通過 Hub Serving,實現一鍵 Module 服務化部署

Hub Serving 是為使用者端到端體驗打造的,從預訓練模型快速的生成 API 的服務,可以實現安全可控、支援私有化的部署。開發者可以基於 PaddleHub 開放的模型在自己的企業內部搭建起預訓練模型和服務,並通過 API 呼叫的方式快速接入。客戶端的應用方式非常簡單,通過我們最經典的 HTTP 的方式,可以快速的使用這些預訓練模型,讓更多的人能夠用到預訓練模型的效果。

更多內容,請參考:

https://github.com/PaddlePaddle/PaddleHub

PALM 多工學習

PaddlePALM (PAddLe for Multi-task) 是一個強大快速、靈活易用的任務級(task level)多工學習框架,使用者僅需書寫極少量程式碼即可完成複雜的多工訓練與推理。PALM 框架實現了簡潔易懂的任務例項建立與管理機制,強大易用的引數管理與複用介面,以及高效穩定的多工排程演算法。此外,框架提供了定製化介面,若內建工具、主幹網路和任務無法滿足需求,開發者可以輕鬆完成相關元件的自定義。框架中內建了豐富的主幹網路及其預訓練模型(BERT、ERNIE 等)、常見的任務正規化(分類、匹配、機器閱讀理解等)和相應的資料集讀取與處理工具。框架執行的基本原理圖如下圖所示:

強化學習、聯邦學習、圖神經網路,飛槳全新工具元件詳解

框架支援基於配置和基於 API 這兩種使用方式。對於典型的多工學習場景,使用者可以從內建的 reader、backbone 和 paradigm 池中自由組合出任務例項,而後基於引數管理機制指定任務例項之間的引數複用關係,最後建立任務控制器,啟動多工訓練或推理。

這裡舉一個實際應用場景的例子。假如有一個目標任務機器閱讀理解 MRC,為了提升模型的泛化能力(獲得更佳的測試集表現和模型魯棒性),我們可以設定兩個輔助任務掩碼語言模型任務 MLM 和問答匹配任務 MATCH。通過 PaddlePALM 我們可以很輕鬆的完成這個較為複雜的多工學習過程。

首先,我們為三個任務選取合適的共享引數的主幹網路用於文字特徵抽取與學習(例如 BERT、ERNIE 等),主幹網路可以寫入全域性配置檔案或由使用者手動例項化。而後,我們為每個任務選取合適的資料處理工具和任務輸出層,進而建立任務控制器,啟動三個任務的聯合訓練。

為了提升易用性,PALM 多工學習目前已經進行了一個很好的封裝,只需要 20 行左右的程式碼,就可以同時訓練多個任務來提升模型效果。基於這個模組,今年百度自研的 D-NET 的模型,實現了 EMNLP2019 閱讀理解的十項冠軍。 

更多內容可參考:

https://github.com/PaddlePaddle/PALM

PGL 圖神經網路

強化學習、聯邦學習、圖神經網路,飛槳全新工具元件詳解

近幾年來,深度神經網路的成功推動了人工智慧的發展,然而,在實際場景中,有大量的資料是在非歐式空間的,這限制了深度神經網路的應用。而圖神經網路在這類資料上有著出色的處理能力,使得最近一段時間圖神經網路在學界與工業界上大放光彩。

百度順應潮流釋出的 PGL 充分利用飛槳獨有的 Lod Tensor 特性,實現了高度並行的圖神經網路訊息傳遞機制,在效能上超越了 DGL 等現有圖學習框架 13 倍。依託于飛槳核心框架以及自研的分散式圖引擎,PGL 可支援十億節點百億邊的巨圖訓練。此外,PGL 原生支援異構圖 Meta Path 取樣以及 Message Passing 雙模式,預置了 13 種業界主流圖學習演算法,方便開發者熟悉和使用圖神經網路領域模型,包括以下技術特色:

高效:通用訊息聚合效能超越業內主流框架 DGL 13 倍

圖神經網路模型的獨特優勢在於充分捕捉資料中的結構資訊。PGL 採用訊息傳遞正規化(Message Passing)構建圖神經網路的介面,使用者只需要簡單地編寫 send 和 recv 函式就能夠輕鬆的實現一個簡單的 GCN 網路:其中 send 函式被定義在節點之間的邊上,負責將訊息從源點傳送到目標節點;recv 函式則負責將這些訊息聚合起來。目前,PGL 提供兩套聚合方式,一套是 Scatter-Gather 用於解決常見如求和聚合的方式,而另外一套則是基於飛槳 Lod Tensor 特性實現的並行通用的訊息聚合方法。得益於並行的訊息聚合能力,PGL 的速度能夠達到 DGL 的 13 倍。

規模:支援十億節點百億邊的超大規模圖訓練

依託於分散式圖引擎以及大規模引數伺服器 Paddle Fleet,PGL 可以輕鬆在 MPI 叢集上搭建分散式超大規模圖學習演算法。超大規模圖會以切分形式在分散式圖引擎中儲存,此外還提供諸如圖資訊訪問、子圖取樣、遊走等操作運算元。在此之上則是 PGL 構建的分散式圖訓練模組,該模組會與引數伺服器 Paddle Fleet 進行聯動訓練,滿足使用者數十億節點 Embedding 學習需求。

易用:輕鬆搭建異構圖學習演算法

在工業應用中,許多的圖網路是異構。PGL 針對異構圖包含多種節點型別和多種邊型別的特點進行建模,旨在為使用者提供方便易用的異構圖框架,讓使用者可以快速構建自定義的異構圖模型。目前,PGL 支援異構圖的 Meta Path 取樣以及異構圖的 Message Passing 機制。異構圖存在不同型別的節點和邊,為了融入 Message Passing 機制,PGL 可以在異構圖中分別對不同型別的邊進行訊息傳遞。最後將同一個節點在不同邊型別的表示融合在一起。

豐富:預置 13 種業界主流圖學習模型

為了便於使用者熟悉和使用圖神經網路領域的模型,PGL 預置了 13 種主流的圖學習模型。這些模型涵蓋了同構與異構、圖表示學習與圖神經網路、分散式訓練等樣例,可以賦能推薦系統、知識圖譜、使用者畫像、金融風控、智慧地圖等多個場景。使用者可以方便地根據自己的需要選擇不同的樣例進行復現、修改、上線等。

更多內容,請參考:

https://github.com/PaddlePaddle/PGL

PARL 強化學習

強化學習、聯邦學習、圖神經網路,飛槳全新工具元件詳解

PARL(PAddle Reinfocement Learning)是高效能、靈活的強化學習框架,提供可復現性保證,大規模並行支援能力,複用性強且具有良好擴充套件性。

通過複用通用演算法庫裡面已經實現好的演算法,開發者可以很快地在不同演算法間切換,保持了高效的迭代頻率。PARL 的演算法庫涵蓋了從經典的 DDPG,PPO, TD3 等演算法,到並行的 A2C, GA3C, IMPALA 以及並行的 Evolutionary Strategy 等演算法。儘管演算法庫包含了各種型別的複雜演算法,但是其介面是相當簡單的,基本上是 import 即可用的方式。

同時,基於 PARL 提供的高效靈活的並行化訓練能力進行強化學習訓練,可以使得訓練效率得以數百倍地提升。PARL 的並行介面的設計思想是用 python 的多執行緒程式碼實現真正意義上的高併發,參賽選手只需要寫多執行緒級別的程式碼,然後加上 PARL 的並行修飾符就可以排程不同機器的計算資源,達到高併發的效能。

PARL 應用了百度多年來在強化學習領域的技術深耕和產品應用經驗,具有更高的可擴充套件性、可復現性和可複用性,強大的大規模並行化支援能力。開發者可以通過 PARL 用數行程式碼定製自己的模型,一個修飾符就能實現並行。此外,PARL 程式碼風格統一,包含了多個入門級別的強化學習演算法,對初學者相當友好。

特別值得一提的,在機器學習領域頂級會議 NeurIPS 2019 主辦的 Learn to Move 強化學習比賽中,百度繼 2018 年奪得冠軍後再度蟬聯冠軍。本次比賽的難度非常大,在參賽的近 300 支隊伍中,僅有 3 支隊伍完成了最後挑戰。百度基於飛槳的強化學習框架 PARL 不僅成功完成挑戰,還大幅領先第二名 143 分。顯而易見,百度強化學習領域佔據了明顯的優勢,冠軍含金量頗高。

更多內容請參考,PARL:

https://github.com/PaddlePaddle/PARL

PaddleFL 聯邦學習

強化學習、聯邦學習、圖神經網路,飛槳全新工具元件詳解

PaddleFL(Paddle Federateddeep Learning)是開源聯邦學習框架,可輕鬆地複製、比較不同聯邦學習演算法,提供眾多聯邦學習策略及在計算機視覺、自然語言處理、推薦演算法等領域的應用。此外,PaddleFL 還將提供傳統機器學習訓練策略的應用,例如多工學習、聯邦學習環境下的遷移學習。依靠著飛槳的大規模分散式訓練和 Kubernetes 對訓練任務的彈性排程能力,PaddleFL 可以基於全棧開源軟體輕鬆地部署。

更多內容可參考:

https://github.com/PaddlePaddle/PaddleFL

AutoDL 自動化深度學習

強化學習、聯邦學習、圖神經網路,飛槳全新工具元件詳解

AutoDL 包含自動網路結構設計、遷移小資料建模和適配邊緣計算三部分。開源 AutoDL 設計的影像分類網路在 CIFAR10 資料集正確率達到 98%,效果優於目前已公開的 10 類人類專家設計的網路,居於業內領先位置。

更多內容可參考:

https://github.com/PaddlePaddle/AutoDL

VisualDL 訓練視覺化工具

強化學習、聯邦學習、圖神經網路,飛槳全新工具元件詳解

VisualDL 是面向深度學習任務設計的視覺化工具,包含 scalar、引數分佈、模型結構、影像視覺化等功能。該專案正處於高速迭代中,不斷增加新元件。目前,大多數 DNN 平臺使用 Python 作為配置語言。VisualDL 原生支援 python 使用,在模型 Python 配置中新增幾行程式碼,便可為訓練過程提供豐富的視覺化支援。

更多內容可參考:

https://github.com/PaddlePaddle/VisualDL

想與更多的深度學習開發者交流,請加入飛槳官方 QQ 群:796771754

如果您想詳細瞭解更多飛槳 PaddlePaddle 的相關內容,請參閱以下文件。

官網地址:

  • https://www.paddlepaddle.org.cn/

專案地址:

相關文章