GeotechSet數據集在GPT2上的訓練過程
1 引言
Transformers提供了數以千計的預訓練模型,利用這些預訓練模型可以對文本執行任務,如分類、信息提取、問題回答、總結、翻譯、文本生成等。Transformers提供的API可以在給定的文本上使用這些預訓練模型,在自己的數據集上對它們進行微調。這似乎是很激動人心的一件事情,在過去作為試驗曾經做過一個Bert的訓練模型《Bert模型微調---產生自己的訓練數據模型》,然而現實是對于個人計算機而言,要求的硬件配置非常高,因此在有限的資源下,為了訓練一個模型必須對各個方面精打細算。這個筆記描述了GeotechSet數據集在GPT2模型上的訓練過程,著重強調了在目前的硬件條件下如何實現這一過程。
2 考慮的因素
如果有足夠的硬件資源, 例如有多核的GPU或TPU, 有足夠大的GPU內存,我們可以不必考慮一些輸入參數的設置,但在目前條件下必須考慮這個問題,否則不能運行下去,最典型的錯誤信息就是"GPU out of memory", 即GPU的內存不夠,在《全過程記錄---檢查PyTorch是否在使用GPU》一文中描述過目前使用的硬件設備,只有1個GPU,6G的顯存,如此小的內存對機器學習來說是遠遠不夠的,因此需要綜合考慮各方面的因素。主要考慮的因素包括:
(1) 預訓練模型
預訓練模型是整個訓練過程的基礎,盡管使用大的模型可能會取得更好的結果,但預訓練模型不能取得太大。這是我們首先考慮的一個因素。GPT2模型目前有四個,按尺寸排列分別是: gpt2,
gpt2-medium, gpt2-large, gpt2-xl。在本次試驗中,為了安全起見,我們使用了最小的模型gpt2.
(2) 輸入數據
要進行訓練必須考慮輸入數據(input.txt)的大小。目前GeotechSet的數據量是180M左右, 顯然加載這個數據集機器是承受不了的,因此需要把大數據集分割成小數據集。事實上,小數據集的一個潛在好處是內容相對集中,這樣產生的結果離散性不會太大。一個數據集只包含一個相對集中的主題。例如"離散斷裂網絡"數據集盡量不包括"錨桿支護"方面的內容。在本次試驗中,為了保守起見,非常小心地選擇了一個大約450k的數據集,這個數據集主要是關于巖橋(rock bridge)方面的內容。
(3) 參數設置
訓練過程有許多參數需要設置,其中一個參數是per_device_train_batch_size,它或許影響著GPU的使用量,許多人建議這個值取得越小越好,因此干脆取了最小值1; 另一個參數是dataloader_num_workers,在初始運行時發現默認的設置值為6,有些人建議這個值取得小一些比較好,因此設置為2;最重要的一個參數是block_size,我覺得這個參數的設置影響最大,默認值為512,運行時總是出現超出內存的錯誤,在其它條件不變的情況下取其一半,設置為256就可以運行下去了。
3 訓練過程
在多次調試,綜合考慮各種因素后開始進行訓練,花了大約10多分鐘就完成了訓練過程。這么短的訓練過程誘使我要加大輸入數據和使用GPT2-large模型,但目前還沒有這么做,以后逐步加大輸入數據,測試其承載的極限值。產生的訓練模型保存在預先設置的目錄下,如下圖所示。
沒有去仔細研究這些文件的內容,直接進入測試階段,檢查訓練出來的模型是否能夠正常工作。
4 測試模型
由于訓練過程沒有出現錯誤,因此理論上可以使用我們自己的模型了:
tokenizer = GPT2Tokenizer.from_pretrained('./mwu')model = GPT2LMHeadModel.from_pretrained('./mwu')input_ids = tokenizer.encode(sentence, return_tensors='pt')
在Transformers中,模型的名稱就是模型文件的目錄名稱。接下來進行解碼方法設置。使用了top_k和top_p聯合取樣:
outputs = model.generate( input_ids, max_length = 100, early_stopping=True, num_return_sequences=2, top_k=60, top_p = 0.90, do_sample=True)
以"rock failure mechanism"作為引導句子進行測試,產生的結果如下:
(1) For the first time, a computational modelling approach has been adopted which simulates brittle fracture in rock mass with the objective of predicting the development of a pre-existing failure surface within a rock slope. The approach is simple but elegant considering the nature and the importance of considering fracture mechanisms in rock slopes, with several distinct modes of failure. The results of the numerical modelling of step-path failure are compared against rock slope scale simulations, highlighting the need for rigorous experimentation to simulate large scale;
(2) rock failure mechanism (Kemeny 2006; Stead et al. 2009). The strength and deformability of rock mass by jointing and jointed rock failure mechanisms are investigated in order to investigate the modelled failure mechanism of rock slopes. Three different failure mechanisms are simulated in different approaches. The main approaches (Stead et al. 2009) are presented in Figures 3.7-3.8. Five jointed rock mass failure mechanisms are assumed: (1) intact rock, (2) stepped;
測試結果成功,生成了非常連貫且有實際意義的句子,這顯示我們訓練出來的模型可用。
5 結束語
本文在有限的條件下使用GPT2在小的GeotechSet數據集上進行了訓練,得出了我們自己的geotech數據模型。今后逐漸加大輸入數據,使模型進化得更為完善。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















