我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
整理目前手上有的素材:
手上有的資料需要進行訓練 & 驗證集的切割,因此撰寫以下程式:
from datasets import load_dataset
dataset = load_dataset('csv', data_files = '/content/model/dataset/processed_tweets.csv', column_names = ["text"])
from datasets import DatasetDict
dataset = dataset['train'].train_test_split(test_size = 0.1)
dataset = DatasetDict(dataset)
接著進行資料長度規範處理,過長者進行截斷,不足者進行 Padding,並製作 Data Collator:
def tokenize_function(examples):
return tokenizer(examples["text"], padding = "max_length", truncation = True, max_length = 128)
tokenized_datasets = dataset.map(tokenize_function, batched = True)
from transformers import DataCollatorForLanguageModeling
data_collator = DataCollatorForLanguageModeling(tokenizer = tokenizer,
mlm = False)
注意這裡的 mlm 配置為 False,和 AI說書 - 從0開始 - 175 | Data Collator 建立 的配置不同,因為我們這裡要模型做的事情是產生對話序列 (宗旨見 AI說書 - 從0開始 - 180 | RoBERTa 預訓練前言),亦即 Autoregressive, Generative Language Modeling ,有關於 mlm 的說明見 AI說書 - 從0開始 - 130