重磅! | 比Pytorch Hub更早?三分鐘帶你弄懂Paddle Hub!  

2022-01-03 Charlotte數據挖掘

關注&置頂「Charlotte數據挖掘

每日9:00,乾貨速遞!

By    Charlotte77

前言:昨天看到一條爆炸性新聞—"PyTorch Hub發布!一行代碼調用最潮模型",在我們調參圈簡直震驚了!要是所有模型都能一行命令解決,我也不用一天到晚當調參這麼苦兮兮T_T。不過我突然想起,上個月我還用過PaddleHub做Fine-tune,很好用,咋沒人推薦呢?好用的東西當然要跟大家分享,所以我做了一個非官方測評,三分鐘帶大家了解PaddleHub!

關鍵詞:PaddleHub PyTorchHub  模型庫 遷移學習

     Hub是什麼?Hub本意是中心,docker有docker Hub,大家可以把自己創建的鏡像打包提交到docker hub上,需要的時候再pull下來,非常方便,那麼模型是不是也可以這樣玩呢?完全可以啊!很多時候我們不需要從頭開始訓練模型,如果有預訓練好的模型,直接做遷移學習就可以,但是傳統的方式基本上都需要從各個官網上去下載,模型比較大,用起來並不輕量。現在各家都發布了Hub ,可以直接從Hub上下載pretrain模型做finetune或預測,極大的減輕了工作量。下面直接從四個維度對比下PytorchHub和PaddleHub~

PytorchHub V.S PaddleHub

支持模型數量

PytorchHub 目前支持18個模型,PaddleHub支持29個,下面來看看分別支持哪些模型:

 PytorchHub目前支持18種模型

 PaddleHub目前支持29種模型

    從圖中可以看到,PaddleHub支持的模型數量有絕對的優勢;而PytorchHub涉及的方向更多,但是每個方向的模型並不多,對CV的支持更多;PaddleHub涉及的方向只有兩個,CV和NLP,但是對NLP的支持尤其多,高達22個,不僅包括目前最潮的BERT,還有百度自己研發的知識增強語義表示模型Ernie,在多個中文NLP任務中表現超過BERT,除此之外還有對話系統的一系列模型,做智能客服、智能音箱的同學可以使用一下~

是否支持命令行運行

    目前PytorchHub不支持命令行運行,但PaddleHub支持,命令行運行就是指我們安裝PaddleHub後,可以無需進入python環境,即可快速體驗PaddleHub無需代碼、一鍵預測的命令行功能。需要注意的是,在PaddleHub中,既可以支持命令行使用,即在終端輸入

hub run XXX(模型) --input_text XXX(需要預測的內容)

也可以支持調用api

import paddlehub as hub
hub.finetune_and_eval( task, data_reader, feed_list, config=None)

    實際上,PaddleHub為Model和Module的管理和使用都提供了命令行工具,但是model和module是有區別的,一個是模型,一個是模塊。    model表示預訓練好的參數和模型,當需要使用Model進行預測時,需要模型配套的代碼,進行模型的加載,數據的預處理等操作後,才能進行預測。我們在使用PaddleHub來調用模型時,可以使用hub download 命令獲取到最新的model再進行實驗。module是model的一個可執行模塊,簡單來說,一個Module可以支持直接命令行預測,也可以配合PaddleHub Finetune API,通過少量代碼實現遷移學習。 需要注意的是,不是所有的Module都支持命令行預測; (例如BERT/ERNIE Transformer類模型,一般需要搭配任務進行finetune) 也不是所有的Module都可用於finetune(例如LAC詞法分析模型,我們不建議用戶用於finetune)

是否支持Fine-tune

    PyTorchHub 不支持Fine-tune,PaddleHub支持。這一點倒是挺讓人意外的,如果通過hub加載了預訓練模型,但是無法Fine-tune,那有什麼意義呢?僅僅只是為了試試paper中的效果好不好嗎?本來我還對此頗有懷疑,於是去看了pytorchhub.org官網下的文檔,發現目前pytorchhub確實不支持hub一鍵式fine-tuning,現有模型的finetuning還是基於傳統的腳本式調參。

    PaddleHub在Fine-tune這一塊做的很完善,在前一個板塊也給大家詳細舉了示例講解,在PaddleHub的官方gihub中,有非常詳細的Fine-tune教程,大家可以參考:

PaddleHub圖像分類遷移

PaddleHub文本分類遷移


是否支持用戶自定義上傳模型

    PyTorchHub 支持,PaddleHub不支持。我看了pytorchhub.org官網下的文檔,只需要在開源的模型代碼裡增加了一個hubconf.py, 然後在pytorch/hub裡提一個pr,cr後merge到 branch/tag 這個分支就ok了。方法非常簡單,代碼也不複雜。

torch.hub.load(github, model, force_reload=False, *args, **kwargs)

     PaddleHub目前暫時還不支持用戶自己提交新模型,但是據可靠消息表示:預計7月份就會支持這個功能,到時候希望大家能踴躍使用,push自己的新模型哦~

    總結一下四個維度的比較:

    總之,從這四個維度上,我個人感覺PytorchHub更像一個小工具,幫助大家迅速試用一下開源的新模型,但是真正到實際應用,還是要基於老的一套的fine-tuning,不能直接從hub裡調用fine-tune的api,所以並不實用。對於遷移學習來說,Fine-tune是必不可少的,雖然我們有預訓練的模型,但是新任務的場景和數據都不相同,直接使用預訓練模型其實很難得到很好的效果,所以從工業級實用的角度來說,PaddleHub做的要更成熟一些,等7月份支持了用戶自定義上傳模型後大家可以多體驗體驗。

    下面,我們具體來看看PaddleHub如何直接使用命令行,調用一行代碼show出結果& 使用Finetune Api來對模型進行微調,並舉一個實例教大家一步一步實現。(ps:文末還有福利贈送哦!

一行命令調用,直接輸出結果

PaddleHub安裝

環境依賴

安裝

pip install paddlehub

命令行快速體驗

    安裝好後,不需要進入python環境import就可以直接先體驗hub的便捷,因為在PaddleHub中hub可以作為一個獨立的模塊直接運行。PaddleHub目前包含圖像分類、目標檢測、詞法分析、Transformer、情感分析五大類。

 一行代碼預測


$ hub run lac --input_text "今天的你真好看"
[{'tag': ['TIME', 'u', 'r', 'd', 'a'], 'word': ['今天', '的', '你', '真', '好看']}]


$ hub run senta_bilstm --input_text "老鐵666,帶你開黑"
[{'text': '老鐵666,帶你開黑', 'sentiment_key': 'positive', 'sentiment_label': 2, 'positive_probs': 0.7206, 'negative_probs': 0.2794}]


hub run ssd_mobilenet_v1_pascal --input_path test_img_bird.jpg

    檢測結果

# 使用resnet-50做圖像識別

hub run resnet_v2_50_imagenet 
Install Module resnet_v2_50_imagenet
Downloading resnet_v2_50_imagenet
[==================================================] 100.00%
Uncompress /root/.paddlehub/cache/resnet_v2_50_imagenet
[==================================================] 100.00%
Successfully installed resnet_v2_50_imagenet-1.0.0
[[{'brambling': 0.4907981}]]

註:模型未下載時會先下載再預測,也可以先試用hub install model_name 下載好模型再使用hub run預測,也可直接運行hub run。hub一共有十個命令,其他命令可參考PaddleHub命令行工具[1]

支持29種模型

PaddleHub目前支持29種模型,主要以CV和NLP模型為主,包括NLP目前最火的BERT和百度自己自己研發開源的Ernie,以及CV中的ssd-mobilenet、resnet-50、resnet-152等。

       數據通過 —input_text或—input_file導入來實現單次預測和批量預測


hub run lac --input_text "今天是個好日子"

hub run lac --input_file test.txt


hub run ssd_mobilenet_v1_pascal --input_path test.jpg

hub run ssd_mobilenet_v1_pascal --input_file test.txt

支持遷移學習,Fine-tune更Easy

Fine-tune全景圖

    PaddleHub+Finetune流程圖

PaddleHub Finetune api

    Fine-tune是遷移學習中使用最多的方式之一,通常我們可以在預訓練好的模型上進行微調來實現模型遷移,從而達到模型適應新領域(Domain)數據的目的。上圖是做一個完整的遷移學習需要的步驟,下面舉個實例教大家如何用PaddleHub做圖像分類遷移學習

1.準備工作

pip install paddlepaddle( 推薦安裝1.4.0版本以上)

pip install paddlehub

    

2.選擇模型

此處使用經典的ResNet-50作為預訓練模型

module_map = {
    "resnet50": "resnet_v2_50_imagenet",
    "resnet101": "resnet_v2_101_imagenet",
    "resnet152": "resnet_v2_152_imagenet",
    "mobilenet": "mobilenet_v2_imagenet",
    "nasnet": "nasnet_imagenet",
    "pnasnet": "pnasnet_imagenet"
}

module_name = module_map["resnet50"]
module = hub.Module(name = module_name)

3.準備數據


dataset = hub.dataset.DogCat()data_reader = hub.reader.ImageClassificationReader(
    image_width=module.get_expected_image_width(),
    image_height=module.get_expected_image_height(),
    images_mean=module.get_pretrained_images_mean(),
    images_std=module.get_pretrained_images_std(),
    dataset=dataset)

4.組建Finetune Task

    由於貓狗分類是一個二分類的任務,而我們下載的分類module是在ImageNet數據集上訓練的千分類模型,所以我們需要對模型進行簡單的微調,把模型改造為一個二分類模型:

    1. 獲取module的上下文環境,包括輸入和輸出的變量,以及Paddle Program;

    2.從輸出變量中找到特徵圖提取層feature_map;

    3.在feature_map後面接入一個全連接層,生成Task

input_dict, output_dict, program = module.context(trainable=True)
img = input_dict["image"]
feature_map = output_dict["feature_map"]

task = hub.create_img_cls_task(
    feature=feature_map, num_classes=dataset.num_labels)

feed_list = [img.name, task.variable("label").name]# 設置configconfig = hub.RunConfig(    use_cuda=False,
    num_epoch=1,
    checkpoint_dir="cv_finetune_turtorial_demo",
    batch_size=32,
    log_interval=10,
    eval_interval=50,
    strategy=hub.finetune.strategy.DefaultFinetuneStrategy())

5.啟動Fine-tune並查看效果

    可以選擇finetune_and_eval接口來進行模型訓練,這個接口在finetune的過程中,會周期性的進行模型效果的評估,以便我們了解整個訓練過程的性能變化。

hub.finetune_and_eval(
    task, feed_list=feed_list, data_reader=data_reader, config=config)

    訓練過程中的性能數據會被記錄到本地,我們可以通過visualdl來可視化這些數據。我們在shell中輸入以下命令來啟動visualdl,其中${HOST_IP}為本機IP,需要用戶自行指定

$ visualdl --logdir ./cv_finetune_turtorial_demo/vdllog --host ${HOST_IP} --port 8989

    啟動服務後,我們使用瀏覽器訪問${HOST_IP}:8989,可以看到訓練以及預測的loss曲線和accuracy曲線

        最後再按照常規流程對模型進行預測即可

參考資料:

1.paddlehub官方github:https://github.com/PaddlePaddle/PaddleHub

2.PaddleHub命令行工具:https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub命令行工具

3.Paddle-code:https://github.com/huxiaoman7/PaddlePaddle_code

4.Paddle-models:https://github.com/PaddlePaddle/models

福利時間

為了方便大家使用,我在百度AI Studio上給大家創建了一個notebook項目,AI Studio上可以直接體驗PaddleHub,項目地址:

https://aistudio.baidu.com/aistudio/projectdetail/70489

大家Fork後,直接點擊"運行項目"即可,點擊後會彈出:

如果大家沒有GPU算力卡,只能選擇CPU來運行,但是非常慢 = =!我之前參加活動積攢了一批算力卡,這裡免費分享給大家作為福利,

只要點擊下方的「看一看」,分享本文到朋友圈

截圖發到我的公眾號,在公眾號回復"算力卡"

即可免費抽取10名幸運同學贈送10張Telsla V100算力卡!

偷偷告訴大家,一張V100 8w塊,百度雲買個1張V100的虛擬機一個月1w多,所以四捨五入一下,一張算力卡價值一億啊哈哈哈哈!

!今天(6月13日)晚上八點開獎!

如果大家有什麼不懂的

可以加入「Charlotte技術交流群」的微信群和qq群(339120614)!

微信群需要邀請,可以添加我的微信(journey77824)然後我拉你入群~群裡會不定期分享乾貨技術、學習資料、交流經驗~據說年薪百萬的盆友們都入群了嘿嘿

-點擊右下角 告訴大家你「在看」-

相關焦點

  • 一文帶你看懂PaddleHub
    我看了 https://pytorch.org/ 官網下的文檔,只需要在開源的模型代碼裡增加了一個 hubconf.py,然後在 pytorch/hub 裡提一個 pr,cr 後 merge 到 branch/tag 這個分支就 ok 了。方法非常簡單,代碼也不複雜。
  • PaddlePaddle升級解讀 | 十餘行代碼完成遷移學習,PaddleHub實戰篇
    $ pip install paddlepaddle #CPU 安裝命令或者$ pip install paddlepaddle-gpu # GPU 安裝推薦使用大於 1.4.0 版本的 PaddlePaddle。
  • Pornhub年度報告
    所以Pornhub今年也不例外,發布了它們的年度報告,大家都坐穩系好安全帶,我秋名山車神人甲要加速了。如果你有一分鐘,你覺得你可以用來幹什麼?闊怕的並不僅僅只有那一分鐘,17年,pornhub的總流量是3732PB(1pb = 100萬gb),今年則達到4403PB,而且今年pornhub一天的流量就相當於
  • Pornhub賣的洗手液?你敢不敢用PornhubPornhubPornhubPornhubPornhubPornhub
    (如果你未成年,麻煩你點個叉) 自從新冠疫情爆發以來,老司機Pornhub不僅為大家提供優質視頻內容,
  • 教你三分鐘升級刷新主板Bios固件
    教你三分鐘升級刷新主板Bios固件大廠的主板有一點好處就是它的BIOS更新快,會及時修復掉一些BUG
  • 被Pornhub毀掉的孩子 The Children of Pornhub
    今年秋天,Pornhub從一段裸體女子在中國,被一群男人折磨的視頻中獲利。它也從有著諸如 「青少年尖叫」、「青少年墮落」、「極度窒息」 標題的視頻片段中獲利。觀看一段窒息視頻,它就可能推薦你再去搜索 「她無法呼吸」。
  • 美國成人網站Pornhub年度報告,老司機帶你一探究竟!
    可來自成人網站的年度報告,你看過沒?Pornhub是什麼網站,相信老司機們應該都清楚,但你會去研究Pornhub發布的年度報告嗎?成人網站的年度報告能說點啥?急躁的朋友別心急,老司機帶你一探究竟。僅從數據來看,很難想像這個星球上有人無法以某種方式查看或上傳內容到Pornhub。幾乎每隔九分鐘,就會有人把新的內容上傳到Pornhub。在這份總結中,詳細介紹了2019年男性和女性在搜索和觀看的內容以及人們對這個網站的使用。
  • 一步一步教你如何安裝PaddlePaddle
    使用 pip 安裝如果你還沒有在 pip 命令的話,首先要安裝 pip,要確保安裝的 pip 版本是大於 9.0.0 的,否則可能無法安裝 paddlepaddle。一切都沒有問題之後,就可以用 Docker 安裝 paddlepaddle 了,命令如下:docker pull docker.paddlepaddlehub.com/paddle在這裡不得不說的是,這個安裝過程非常久,也許是筆者的帶寬太小了。
  • 被Pornhub毀掉的孩子們
    本文字數 6951 閱讀時間8分鐘本文包含對性侵犯的描述。
  • CNCF Hub介紹
    我們預計CNCF Hub將有三個主要組件:該軟體由使用React的前端代碼、用Go編寫的後端代碼和帶有大量存儲過程的Postgres組成將新工件添加到CNCF Hub、更新和刪除的過程。這個過程的文檔只是剛剛開始,但是它需要公開文檔化、透明和健壯。特別是,邊緣情況需要能夠被項目維護者審查,通過一個請求路逕到SIG Apps和TOC操作的責任。
  • SciHub桌面版
    暫時可用的Sci-Hub域名(全網最全):http://sci-hub.hk/http://sci-hub.tw/http://sci-hub.la/http://sci-hub.mn/http://sci-hub.namehttp://sci-hub.is/http://sci-hub.tv/
  • Pornhub,涼了!!!
    此前《紐約時報》等多家外媒曾報導稱,全球最大的色情網站「Pornhub」一直存在上傳非法或嚴重違反道德的視頻內容。今年初,BBC曾報導過一位女性發現自己在14歲時遭遇強暴的視頻出現在了Pornhub上,該女子曾耗費大量時間才設法將這段視頻撤下,該消息引發了各國民眾對Pornhub監管不力的譴責。
  • 被Pornhub毀掉的孩子
    「你輸入『Young Asian』(年輕亞洲人),可能就會找到我,」她補充道。實際上,可能找不到。最近,Pornhub為這一詞條搜索提供了2.6萬條視頻結果。今年秋天,Pornhub從一段裸體女子在被一群男人折磨的視頻中獲利。它也從有著諸如「青少年尖叫」、「青少年墮落」、「極度窒息」標題的視頻片段中獲利。觀看一段窒息視頻,它就可能推薦你再去搜索「她無法呼吸」。「性積極」和「不上Pornhub」理應是可以兼得的。Pornhub拒絕讓高管公開置評,但提供了一份聲明。
  • Sci-Hub推特被封!
    > 共計1139字閱讀時間為3分鐘
  • Pornhub 2019 Year in Review
    安全帶系好,我們出發吧。The Year in Numbers『Pornhub』訪問量持續增長並且沒有絲毫放緩的跡象。2019 年,『Pornhub』的訪問量超過 420 億次,這意味著日均訪問量達到 1.15 億次,相當於加拿大、澳大利亞、波蘭和荷蘭的人口總和!
  • Pornhub,想不到你是這麼「不務正業」的成人網站
    如果你只是這樣想的話,那真的錯了。在我看來,Pornhub更像一位全能商人,它的跨界甚至可以顛覆你對情色網站的認知,與潮牌聯名、開快閃店、做慈善、甚至創立音樂廠牌...總之只有你想不到的,沒有Pornhub做不到的。
  • 一起來逛 PornHub 吧!
    今天我們只聊 Pornhub  , xvideos先放一邊。 2018 年,Pornhub 的訪問量又漲了 50 億次,達到 335 億次。平均每一分鐘下來,全球會有 6.3 萬用戶在 Pornhub 上觀看 20 多萬個視頻,進行 5.7 萬次搜索。來看看 Pornhub 是怎麼推動社會進步的。
  • 貼心 | Pornhub改名Stayhome hub, 贈成人會員
    你一邊點開這篇文章,一邊問Pornhub是啥?即日起,只要你登入這個頁面:https://cn.pornhub.com/stayhome勾選主動在家隔離以及勤洗手的選項,就能免費獲得高級成人會員一直到疫情結束前都有效
  • 【搬運】被Pornhub毀掉的孩子
    「你輸入『Young Asian』(年輕亞洲人),可能就會找到我,」她補充道。實際上,可能找不到。最近,Pornhub為這一詞條搜索提供了2.6萬條視頻結果。今年秋天,Pornhub從一段裸體女子在中國被一群男人折磨的視頻中獲利。它也從有著諸如「青少年尖叫」、「青少年墮落」、「極度窒息」標題的視頻片段中獲利。觀看一段窒息視頻,它就可能推薦你再去搜索「她無法呼吸」。「性積極」和「不上Pornhub」理應是可以兼得的。
  • Love Sci-Hub,Love Science!
    眾所周知,全球最大的文獻全文下載網站sci-hub的地址總是那麼變化莫測,讓人摸不到頭腦。sci-hub.love&sci-hub.app are not working any more.Please add the new domain https://sci-hub.win to your bookmark!