Transformers の Trainer を使用して、PyTorch で事前トレーニングされた大規模モデルを微調整する

背景

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: DataCollat​​orWithPadding を使用してバッチでデータを入力し、入力プロセスを高速化します。

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 行のコードで大規模なモデルを微調整できます。試してみませんか?

おすすめ

転載: blog.csdn.net/duzm200542901104/article/details/133081182