背景
Transformers は大規模なモデルを微調整するための非常に便利な API を提供します。Trainer を使用して大規模なモデルを微調整する手順について説明します。
ステップ 1: 事前トレーニングされた大規模モデルをロードする
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased")
ステップ 2: トレーニングのハイパーパラメータを設定する
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="path/to/save/folder/",
learning_rate=2e-5,
per_device_train_batch_size=8,
per_device_eval_batch_size=8,
num_train_epochs=2,
)
たとえば、この設定エポックは 2 に等しくなります
ステップ 3: トークナイザーを取得する
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased")
ステップ 4: データセットをロードする
from datasets import load_dataset
dataset = load_dataset("rotten_tomatoes") # doctest: +IGNORE_RESULT
ステップ 5: 単語セグメンテーション関数を作成し、セグメント化する必要があるデータ セット内のフィールドを指定します。
def tokenize_dataset(dataset):
return tokenizer(dataset["text"])
ステップ 6: map() を呼び出して、単語セグメンテーション関数をデータセット全体に適用します。
dataset = dataset.map(tokenize_dataset, batched=True)
ステップ 7: DataCollatorWithPadding を使用してバッチでデータを入力し、入力プロセスを高速化します。
from transformers import DataCollatorWithPadding
data_collator = DataCollatorWithPadding(tokenizer=tokenizer)
ステップ 8: トレーナーを初期化する
from transformers import Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset["train"],
eval_dataset=dataset["test"],
tokenizer=tokenizer,
data_collator=data_collator,
) # doctest: +SKIP
ステップ 9: トレーニングを開始する
trainer.train()
要約:
Trainer が提供する API を使用すると、わずか 9 つの簡単な手順と 10 行のコードで大規模なモデルを微調整できます。試してみませんか?