2.3 LLMのトレーニング実行とモデル評価|Pythonによるトレーニングと評価手法

公開日: 2024-11-08 最終更新日: 2026-08-24 バージョン: 4
2.3 LLMのトレーニング実行とモデル評価|Pythonによるトレーニングと評価手法

前のセクション「2.2 トレーニングデータの準備と前処理」では、ファインチューニングに必要なデータの準備と効率的な前処理について学びました。

トレーニングの実行とモデル評価

トレーニングデータの準備が整ったら、次はモデルのトレーニングを行います。Hugging FaceのTransformersライブラリを使えば、少ないコードでトレーニングの流れを組み立てられます。このセクションでは、Pythonでのトレーニング実行の例と、モデル評価の方法について解説します。

評価指標意味向いている場面
Accuracy(正解率)全予測のうち正しかった割合クラスの偏りが小さい分類
Precision(適合率)陽性と予測したうち本当に陽性の割合誤検知のコストが高い場面
Recall(再現率)本当に陽性のうち検出できた割合見落としのコストが高い場面
F1Precision と Recall の調和平均クラスが偏っている分類

モデルのトレーニング

モデルのトレーニングには、Trainerクラスを使うのが一般的です。以下は、BERTモデルを使ったトレーニングの例です。


from transformers import BertForSequenceClassification, Trainer, TrainingArguments

# モデルの読み込み
model = BertForSequenceClassification.from_pretrained("bert-base-uncased")

# トレーニング設定の定義
training_args = TrainingArguments(
    output_dir="./results",
    evaluation_strategy="epoch",
    per_device_train_batch_size=8,
    per_device_eval_batch_size=8,
    num_train_epochs=3,
    weight_decay=0.01,
)

# Trainerの初期化
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_data,
    eval_dataset=test_data,
)

# トレーニングの実行
trainer.train()
        

モデルの評価

トレーニング後は、モデルの性能を評価します。一般的な評価指標には、精度(Accuracy)F1スコアリコール(Recall)適合率(Precision)があります。以下は、Hugging FaceのTrainerクラスを使った評価例です。


from sklearn.metrics import accuracy_score, precision_recall_fscore_support

# 評価関数の定義
def compute_metrics(pred):
    labels = pred.label_ids
    preds = pred.predictions.argmax(-1)
    precision, recall, f1, _ = precision_recall_fscore_support(labels, preds, average="weighted")
    acc = accuracy_score(labels, preds)
    return {
        "accuracy": acc,
        "f1": f1,
        "precision": precision,
        "recall": recall,
    }

# 評価の実行
trainer.evaluate()
        

評価結果の解釈

  • 精度(Accuracy): 全体の予測のうち、正しい予測の割合です。
  • F1スコア: 適合率とリコールの調和平均。モデルの全体的なバランスを示します。
  • リコール(Recall): 実際のポジティブケースのうち、正しく予測された割合です。
  • 適合率(Precision): ポジティブと予測したケースのうち、実際に正しかった割合です。
押さえておきたいポイント

Accuracy だけを見るとクラスの偏りを見落としがちです。特に不均衡データでは、F1 や Precision/Recall を合わせて確認することが重要です。

結果の保存とモデルのエクスポート

トレーニングが完了したモデルは、save_pretrained()メソッドを使って保存できます。


# モデルの保存
model.save_pretrained("./my_model")
tokenizer.save_pretrained("./my_model")
        

保存したモデルは、from_pretrained()メソッドで再度読み込めます。

次のセクション「3.0 トークン化とデータ前処理の自動化」では、LLMモデルのトレーニングにおける効率的なトークン化とデータ前処理の方法について詳しく解説します。


下田 昌平
下田 昌平
開発と設計を担当。1994年からプログラミングを始め、今もなお最新技術への探究心を持ち続けています。

質問と回答

このトピックについて質問はありますか?以下からお気軽にどうぞ(登録不要)。担当チームが内容を確認し、回答します。

まだ質問はありません。最初の質問をどうぞ。

質問する

確認のため、入力されたメールアドレス宛に一度だけ確認メールをお送りします。質問は確認後に公開されます。