【Paddle 经验分享】利用PaddleHub 2.x 完成文本分类训练的坑
CSDN原文鏈接:https://blog.csdn.net/kinfey/article/details/117254781
基于項目選擇了PaddlePaddle 作為文本分類的基礎,經過一周多的使用終于有所進展,把文本分類的相關工作做了一個簡單模型。
首先說說PaddlePaddle , 現在做深度學習,更多用戶使用的是TensorFlow / PyTorch ,但其實還有很多類似的框架,PaddlePaddle就是其中之一。有人會說TensorFlow / PyTorch 已經這么優秀了,為何還用 PaddlePaddle 呢 ?我這里也想結合一周多的使用說說 。當初使用 Paddle Paddle框架我看中的是他在自然語言中文領域有很多現成的模型,舉個例子如情感分類,如閱讀理解,還有自動問答等,而且在使用上也是非常簡單。我就是奔著這個去的,至于其他像內存占用小啊,API易用這些用過就知道其實是一個場景相對的工作。如果我們使用自然語言相關,我是建議使用,但在計算機視覺或者其他的都差不多。PaddlePaddle 在設計初期就兼顧了動態圖和靜態圖,所以還是不錯的。?
PaddlePaddle 有不少預訓練的模型,基于預訓練組建了一個PaddleHub , ?可以讓你快速調用并完成模型的管理,你還可以基于自有的模型做遷移學習,更好地服務應用場景。這里做文本分類,我就直接用了PaddleHub 自有的 ERNIE 進行遷移學習。就這樣我就開始了一段神奇之旅。
一.ERNIE
在中文領域,這是一個非常非常棒的自然語言模型,和BERT 比,采用了先知Mask機制,和隨機Mask 的BERT比,能更有效對中文常用詞進行判斷。更多可以參考? https://github.com/PaddlePaddle/ERNIE。
二. 具體使用遇到的一些問題
PaddlePaddle 在網上搜索的例子都是有問題的,因為基于原來的例子基本是按照1.x 版本(https://aistudio.baidu.com/aistudio/projectdetail/186443)改的,只能自己碰。
1.環境問題
我現在的Cuda ?環境是11.1 , 但是無論最新的2.1 還是2.0.2 其實都沒有支持的,開始我自己也慌了第一步就放棄么?但我認真看了下,其實2.0.2 是支持11.0 也是可以在11.1的CUDA上跑,所以安裝環境就變成了:
pip install paddlepaddle-gpu==2.0.2.post110 -f https://paddlepaddle.org.cn/whl/stable.html2.ERNIE 版本選擇
其實我本來想要ERNIE,但最后選擇ERNIE-TINY是因為他更小巧,更適應我的場景, 如果你想應用其他也是可以的,他支持多種語義模型。
3.TextClassificationDataset
因為我是做遷移學習的文本分類所以這里就需要去繼承原有的TextClassificationDataset,我一直覺得是一個簡單活,結果花了我一堆時間,因為這里對數據格式有要求,第一列必須是Label , 而且token是一個Bert+Custom , ?并且一定要做好測試集和訓練集,這里我真的花了5天去找,但最后還是追看TextClassificationDataset 找到答案,主要是文檔太少。
4.traindata
訓練這里細節也挺多的,特別最基本的一個traindata 這里要說,我發現是要補充上learning_rate ,否則有些東西奇奇怪怪。
這是我訓練的一些結果,還是不錯,這個過程我花了5個工作日,真是痛哭流涕。
三、一些工作還是要繼續的
1.? 部署,其實PaddleHub建議用PaddleServing 來部署的,但由于現在模型還在調整,數據在增加,所以臨時方案還是直接用PaddleHub去解釋模型,這里內存在服務器占用大,要改進?
2.? 調優,還有很多方法,還在學習中,希望日后可以填上?
3.? onnx , 還是想轉換為onnx ,但文檔很少,還是得花時間
4. 壓縮,模型壓縮就是技術活了,怎么樣能做到一個精度高,容量小的模型,又是我要考慮的了
學習是一步步的,經過1周多,終于有成果, PaddlePaddle是好東西,但文檔,例子欠缺,我希望利用自己項目的經驗分享給大家。
總結
以上是生活随笔為你收集整理的【Paddle 经验分享】利用PaddleHub 2.x 完成文本分类训练的坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用c#接入华为云-内容审核
- 下一篇: 记一次 .NET 某电商交易平台Web站