使用Bert有一段時間了鲜屏,在項目中確實也能帶來提升风范,這里總結下bert的使用心得。
1聚唐,資源的使用
Bert在訓練的過程確實很消耗資源。
Bert資源圖
上面是Bert模型在12G顯存的顯卡上腔召,每輪的樣本數(shù)和句子長度杆查。
開始還擔心Bert模型部署在客戶的機器上能否正常運行。后面測試發(fā)現(xiàn)臀蛛,如果沒有太高的并發(fā)亲桦,其實在預測階段對顯存的消耗并不高,大概1-2G顯存即可浊仆。
2客峭,模型速度
使用Bert模型一定要跑在GPU上,不論是訓練還是預測階段抡柿。我測試的跑在GPU上的速度是CPU的60多倍舔琅。
3,學習速率
目前使用Bert做過分類洲劣,seq2seq备蚓,序列標注课蔬,發(fā)現(xiàn)很多任務上,Bert的學習速率不宜調的過高郊尝,否則訓練的效果很差二跋。而且在官方代碼中學習速率是5e-5。而且這里的訓練方式建議使用官方提供的優(yōu)化器流昏,官方提供的優(yōu)化器學習速率是動態(tài)調整的扎即。詳細代碼可見GIT里面的demo3
4,Bert模型不參與訓練
在使用Bert的時候况凉,建議Bert先參與訓練铺遂,然后固定住Bert的參數(shù),在訓練N輪茎刚。在我的項目中襟锐,這樣的操作最后的效果比較好。
Bert不參與訓練需要調整兩個地方膛锭,一個是在創(chuàng)建模型的時候is_train=False,還有一個是Bert的參數(shù)不參與反向傳播粮坞。
詳細代碼可見GIT里面的demo3