PyTorch預訓練Bert模型
本文介紹以下內容:
- 使用transformers框架做預訓練的bert-base模型;
- 開發平臺使用Google的Colab平臺,白嫖GPU加速;
- 使用datasets模組下載IMDB影評資料作為訓練資料。
transformers模組簡介
transformers框架為Huggingface開源的深度學習框架,支援幾乎所有的Transformer架構的預訓練模型。使用非常的方便,本文基於此框架,嘗試一下預訓練模型的使用,簡單易用。
本來打算預訓練bert-large模型,發現colab上GPU視訊記憶體不夠用,只能使用base版本了。開啟colab,並且設定好GPU加速,接下來開始介紹程式碼。
程式碼實現
首先安裝資料下載模組和transformers包。
!pip install datasets
!pip install transformers
使用datasets下載IMDB資料,返回DatasetDict型別的資料.返回的資料是文字型別,需要進行編碼。下面會使用tokenizer進行編碼。
from datasets import load_dataset
imdb = load_dataset('imdb')
print(imdb['train'][:3]) # 列印前3條訓練資料
接下來載入tokenizer和模型.從transformers匯入AutoModelForSequenceClassification, AutoTokenizer,建立模型和tokenizer。
from transformers import AutoModelForSequenceClassification, AutoTokenizer
model_checkpoint = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
model = AutoModelForSequenceClassification.from_pretrained(model_checkpoint, num_labels=2)
對原始資料進行編碼,並且分批次(batch)
def preprocessing_func(examples):
return tokenizer(examples['text'],
padding=True,
truncation=True, max_length=300)
batch_size = 16
encoded_data = imdb.map(preprocessing_func, batched=True, batch_size=batch_size)
上面得到編碼資料,每個批次設定為16.接下來需要指定訓練的引數,訓練引數的指定使用transformers給出的介面類TrainingArguments,模型的訓練可以使用Trainer。
from transformers import Trainer, TrainingArguments
args = TrainingArguments(
'out',
per_device_train_batch_size=batch_size,
per_device_eval_batch_size=batch_size,
learning_rate=5e-5,
evaluation_strategy='epoch',
num_train_epochs=10,
load_best_model_at_end=True,
)
trainer = Trainer(
model,
args=args,
train_dataset=encoded_data['train'],
eval_dataset=encoded_data['test'],
tokenizer=tokenizer
)
訓練模型使用trainer物件的train方法
trainer.train()
評估模型使用trainer物件的evaluate方法
trainer.evaluate()
總結
本文介紹了基於transformers框架實現的bert預訓練模型,此框架提供了非常友好的介面,可以方便讀者嘗試各種預訓練模型。同時datasets也提供了很多資料集,便於學習NLP的各種問題。加上Google提供的colab環境,資料下載和預訓練模型下載都非常快,建議讀者自行去煉丹。本文完整的案例下載
相關文章
- 【AI】Pytorch_預訓練模型AIPyTorch模型
- 【預訓練語言模型】 使用Transformers庫進行BERT預訓練模型ORM
- pytorch中:使用bert預訓練模型進行中文語料任務,bert-base-chinese下載。PyTorch模型
- MxNet預訓練模型到Pytorch模型的轉換模型PyTorch
- NLP與深度學習(五)BERT預訓練模型深度學習模型
- BERT預訓練模型的演進過程!(附程式碼)模型
- 使用Bert預訓練模型文字分類(內附原始碼)模型文字分類原始碼
- Bert: 雙向預訓練+微調
- 取出預訓練模型中間層的輸出(pytorch)模型PyTorch
- 完勝 BERT,谷歌最佳 NLP 預訓練模型開源,單卡訓練僅需 4 天谷歌模型
- NLP生成任務超越BERT、GPT!微軟提出通用預訓練模型MASSGPT微軟模型
- PyTorch 模型訓練實⽤教程(程式碼訓練步驟講解)PyTorch模型
- 【小白學PyTorch】5 torchvision預訓練模型與資料集全覽PyTorch模型
- 知識增廣的預訓練語言模型K-BERT:將知識圖譜作為訓練語料模型
- 中文任務全面超越 BERT:百度正式釋出NLP預訓練模型ERNIE模型
- 最強NLP預訓練模型!谷歌BERT橫掃11項NLP任務記錄模型谷歌
- 對比復現34個預訓練模型,PyTorch和Keras你選誰?模型PyTorchKeras
- 預訓練模型 & Fine-tuning模型
- bert訓練過程3
- 從Word Embedding到Bert模型——自然語言處理預訓練技術發展史模型自然語言處理
- 加入Transformer-XL,這個PyTorch包能呼叫各種NLP預訓練模型ORMPyTorch模型
- 輕量化模型訓練加速的思考(Pytorch實現)模型PyTorch
- pytorch使用交叉熵訓練模型學習筆記PyTorch熵模型筆記
- 自訓練 + 預訓練 = 更好的自然語言理解模型模型
- 中文最佳,哈工大訊飛聯合釋出全詞覆蓋中文BERT預訓練模型模型
- 【預訓練語言模型】使用Transformers庫進行GPT2預訓練模型ORMGPT
- pytorch指定GPU訓練PyTorchGPU
- Pytorch分散式訓練PyTorch分散式
- pytorch,訓練模型時記憶體佔用不斷上升PyTorch模型記憶體
- pytorch-模型儲存與載入自己訓練的模型詳解PyTorch模型
- BERT新轉變:面向視覺基礎進行預訓練視覺
- 從Word Embedding到Bert模型—自然語言處理中的預訓練技術發展史模型自然語言處理
- 後BERT時代:15個預訓練模型對比分析與關鍵點探索(附連結)模型
- TorchVision 預訓練模型進行推斷模型
- 模型訓練:資料預處理和預載入模型
- Findings | 中文預訓練語言模型回顧模型
- 常見預訓練語言模型簡述模型
- 知識增強的預訓練語言模型系列之ERNIE:如何為預訓練語言模型注入知識模型