引言
飛槳(PaddlePaddle)核心框架Paddle Fluid v1.5已經(jīng)發(fā)布啦,而作為其關(guān)鍵工具用來遷移學(xué)習(xí)的PaddleHub也進行了全面更新,正式發(fā)布了1.0版本。全新的PaddleHub模型和任務(wù)更加豐富,為用戶提供了覆蓋文本、圖像和視頻三大領(lǐng)域八大任務(wù)的40+預(yù)訓(xùn)練模型,同時還在飛槳官網(wǎng)上開辟了PaddleHub的網(wǎng)頁。本文將對PaddleHub及其更新做更加全面的介紹。
PaddleHub是什么
深度學(xué)習(xí)模型的價值在AI時代不斷增大。要想得到一個高質(zhì)量的深度學(xué)習(xí)模型,離不開4個要素,優(yōu)秀的算法、充足的算力、豐富的數(shù)據(jù)以及專家知識。大家在深度學(xué)習(xí)中常常遇到以下問題:
1.一些研究領(lǐng)域只有少量標注數(shù)據(jù),且數(shù)據(jù)標注成本較高,不足以訓(xùn)練一個足夠魯棒的神經(jīng)網(wǎng)絡(luò)
2.大規(guī)模神經(jīng)網(wǎng)絡(luò)的訓(xùn)練依賴于大量的計算資源,這對于一般用戶而言難以實現(xiàn)
3.應(yīng)對于普適化需求的模型,在特定應(yīng)用上表現(xiàn)不盡如人意
PaddleHub就是為了解決對深度學(xué)習(xí)模型的需求而開發(fā)的工具。它基于飛槳領(lǐng)先的核心框架,精選效果優(yōu)秀的算法,提供了百億級大數(shù)據(jù)訓(xùn)練的預(yù)訓(xùn)練模型,方便用戶不用花費大量精力從頭開始訓(xùn)練一個模型。PaddleHub可以便捷地獲取這些預(yù)訓(xùn)練模型,完成模型的管理和一鍵預(yù)測。配合使用Fine-tune API,可以基于大規(guī)模預(yù)訓(xùn)練模型快速完成遷移學(xué)習(xí),讓預(yù)訓(xùn)練模型能更好地服務(wù)于用戶特定場景的應(yīng)用。
PaddleHub有什么特色
1、通過PaddleHub,開發(fā)者可以便捷地獲取飛槳生態(tài)下的所有預(yù)訓(xùn)練模型,涵蓋了圖像分類、目標檢測、詞法分析、語義模型、情感分析、語言模型、視頻分類、圖像生成八類主流模型40余個,如圖1 所示。飛槳還發(fā)布了PaddleHub的官方網(wǎng)頁,對各個預(yù)訓(xùn)練模型的應(yīng)用提供了詳實的介紹。

圖1 PaddleHub提供了40+官方預(yù)訓(xùn)練模型
2、PaddleHub引入了模型即軟件的概念, 通過Python API或者命令行工具,一鍵完成預(yù)訓(xùn)練模型地預(yù)測。此外還借鑒了Anaconda和pip軟件包管理的理念設(shè)計了一套命令行接口。
深度學(xué)習(xí)時代,模型發(fā)展的趨勢會逐漸向軟件工程靠攏;未來模型可以當(dāng)作一個可執(zhí)行程序,一鍵預(yù)測;也可以是第三方庫,通過模型插拔的方式提高開發(fā)者的開發(fā)效率。同時模型會有版本的概念,通過不斷迭代升級的方式提升我們模型的效果。通過命令行工具,可以方便快捷的完成模型的搜索、下載、安裝、預(yù)測等功能,對應(yīng)的關(guān)鍵的命令分別是search,download,install,run等。
如以下示例,在安裝完成飛槳和PaddleHub以后(具體安裝方法見后文示例),使用詞法分析模型LAC,可以一鍵實現(xiàn)分詞。
再如以下示例所示,是一個目標檢測的例子,通過hub run 調(diào)用不同的目標檢測模型,一行即可完成預(yù)測,同時也可以快速體驗?zāi)膫€模型能更符合開發(fā)的需求。

圖2 PaddleHub一鍵完成預(yù)訓(xùn)練模型地預(yù)測
3、通過PaddleHub Fine-tune API,結(jié)合少量代碼即可完成大規(guī)模預(yù)訓(xùn)練模型 的遷移學(xué)習(xí)。下面一節(jié)我們也會全面介紹PaddleHub的API。
PaddleHub API全景
PaddleHub API的全景圖如圖3所示。
為了更好幫助用戶更好的應(yīng)用預(yù)訓(xùn)練模型,PaddleHub對Fine-tune做了6個層次的抽象

圖3 PaddleHub Fine-tune API全景
數(shù)據(jù)集 D ataset :PaddleHub提供多種NLP任務(wù)和CV任務(wù)的數(shù)據(jù)集,用戶也可以在自定義數(shù)據(jù)集上完成Fine-tune。
數(shù)據(jù)預(yù)處理 R eader :PaddleHub的數(shù)據(jù)預(yù)處理模塊Reader對常見的NLP和CV任務(wù)進行了抽象。
預(yù)訓(xùn)練模型 M odule :Module代表了一個預(yù)訓(xùn)練模型。
優(yōu)化策略 S trategy :在PaddleHub中,Strategy類封裝了一系列適用于遷移學(xué)習(xí)的Fine-tune策略。Strategy包含了對預(yù)訓(xùn)練參數(shù)使用什么學(xué)習(xí)率變化策略,使用哪種類型的優(yōu)化器,使用什么類型的正則化等。
運行配置 RunConfig :在PaddleHub中,RunConfig代表了在對Task進行Fine-tune時的運行配置。包括運行的epoch次數(shù)、batch的大小、是否使用GPU訓(xùn)練等。
遷移任務(wù) T ask : PaddleHub預(yù)置了常見任務(wù)的Task。Task代表了一個Fine-tune的任務(wù)。任務(wù)中包含了執(zhí)行該任務(wù)相關(guān)的Program、數(shù)據(jù)Reader、運行配置等內(nèi)容。每種Task都有自己特有的應(yīng)用場景以及提供了對應(yīng)的度量指標,用于適應(yīng)用戶的不同需求。預(yù)置的任務(wù)類型包括圖像分類、文本分類、序列分類和多標簽分類各類任務(wù)。PaddleHub還支持用戶可以通過繼承BasicTask來實現(xiàn)自己的任務(wù)。PaddleHub封裝了finetune、eval、finetune_and_eval、predict等直觀的基礎(chǔ)接口,讓開發(fā)者更方便完成模型的遷移和應(yīng)用。
如何快速開始

圖4 PaddleHub Fine-tune API使用
接下來本文結(jié)合實際案例,講述如何快速使用PaddleHub實現(xiàn)十行代碼完成文本分類遷移。
場景是標注數(shù)據(jù)不多中文文本分類場景,如何提高分類的精度和模型的泛化能力。
這里的方案是借助ERNIE + PaddleHub Finetune API,除去安裝,只想要5個步驟,10行代碼即可解決這一問題。
這里先介紹一下ERNIE,它是百度發(fā)布的知識增強的預(yù)訓(xùn)練模型,通過建模海量數(shù)據(jù)中的詞、實體及實體關(guān)系,學(xué)習(xí)真實世界的語義知識。具體來說,ERNIE 模型通過對詞、實體等語義單元的掩碼,使得模型學(xué)習(xí)完整概念的語義表示。相較于 BERT 學(xué)習(xí)原始語言信號,ERNIE 直接對先驗語義知識單元進行建模,增強了模型語義表示能力。
ERNIE在多個公開的中文數(shù)據(jù)集上進行了效果驗證,包括語言推斷、語義相似度、命名實體識別、情感分析、問答匹配等自然語言處理各類任務(wù)上,均超越了語義表示模型 BERT 的效果。
接下來開始實戰(zhàn)演練PaddleHub。
1.安裝

以上命令是安裝CPU或者GPU版本的飛槳。通過以下命令則可以安裝PaddleHub。
另外,PaddleHub內(nèi)置了深度學(xué)習(xí)可視化工具VisualDL的依賴,通過VisualDL,可以很好的對深度學(xué)習(xí)任務(wù)進行可視化。
2.選擇預(yù)訓(xùn)練模型
在完成安裝飛槳與PaddleHub,import導(dǎo)入相應(yīng)模塊后,一行代碼即可加載預(yù)訓(xùn)練模型。只要1分鐘,你就能得到萬級別GPU小時訓(xùn)練出來的ERNIE模型。當(dāng)然也可以支持BERT模型調(diào)用,只需要更換不同的模型名稱即可。

第二步是獲取模型上下文,包括了預(yù)訓(xùn)練模型的輸入Tensor,輸出Tensor還有計算圖。這里面有個關(guān)鍵參數(shù)是trainable。如果trainable為True,那么就是一個fine-tune的任務(wù),預(yù)訓(xùn)練模型的參數(shù)會做微調(diào),以更好的適應(yīng)頂層的應(yīng)用、如果trainable為False,那么就預(yù)訓(xùn)練模型參數(shù)保持不變,將它當(dāng)作特征提取器。對于ERNIE模型而言,不推薦使用特征提取,一定要通過Finetune的方式才能取得更好的效果。
3.數(shù)據(jù)處理
選擇模型后就是進行數(shù)據(jù)預(yù)處理,針對不同的遷移任務(wù)做了一系列數(shù)據(jù)處理的封裝。

hub.dataset.ChnSentiCorp() 會自動從網(wǎng)絡(luò)下載數(shù)據(jù)集并解壓到用戶目錄下。
4.策略配置
接下來開始配置Fine-tune時用到的優(yōu)化策略。針對ERNIE與BERT類任務(wù),PaddleHub封裝了適合這一任務(wù)的遷移學(xué)習(xí)優(yōu)化策略AdamWeightDecayStrategy

5.創(chuàng)建遷移學(xué)習(xí)任務(wù)
組建移學(xué)習(xí)任務(wù)這塊也非常簡單,首先是選擇預(yù)訓(xùn)練的模型輸出,作為我們句子的特征。在這里ERNIE我們選擇pooled_output作為句子的特征輸出。也可以通過獲取sequence_output來得到詞粒度的特征,這個特征般用于序列標注。

Finetuning API非常智能,會自動完成評估,保存最優(yōu)模型還有自動可視化的功能。Finetune API訓(xùn)練過程中會自動對關(guān)鍵訓(xùn)練指標進行打點,啟動程序后執(zhí)行下面命令
其中${HOST_IP}為本機IP地址,如本機IP地址為192.168.0.1,用瀏覽器打開192.168.0.1:8040,其中8040為端口號,即可看到訓(xùn)練過程中指標的變化情況
6.模型預(yù)測
通過Finetune完成模型訓(xùn)練后,在對應(yīng)的ckpt_dir目錄下,會自動保存驗證集上效果最好的模型。接下來可以按照如下的示例進行預(yù)測。

除了以上的介紹,PaddleHub還在AI Studio和AIBook上提供了IPython NoteBook形式的demo,開發(fā)者可以直接在平臺上在線體驗PaddleHub帶來的各種便捷。
此外,AI studio平臺還發(fā)布了億元算力支持計劃,提供了“每日運行贈12小時”和“連續(xù)5天運行贈48小時”兩種機制共同服務(wù),每天都得能輕松獲得! 該平臺集成算力、教程、 樣例模型、工程開發(fā)、在線部署的能力, 乃至比賽平臺,滿足從0基礎(chǔ)學(xué)習(xí)到技術(shù)落地的全生命周期,幫助開發(fā)者全面掌握深度學(xué)習(xí)技術(shù)的各方各面。
特別提醒:本網(wǎng)內(nèi)容轉(zhuǎn)載自其他媒體,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實,對本文以及其中全部或者部分內(nèi)容、文字的真實性、完整性、及時性本站不作任何保證或承諾,并請自行核實相關(guān)內(nèi)容。本站不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。如若本網(wǎng)有任何內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系我們,本站將會在24小時內(nèi)處理完畢。
站長資訊網(wǎng)