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

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

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

トレーニングデータの準備が整ったら、次はモデルのトレーニングを行います。Hugging FaceのTransformersライブラリを使用すれば、簡単にトレーニングプロセスを構築できます。このセクションでは、Pythonを使ったトレーニング実行の例と、モデル評価の方法について解説します。

モデルのトレーニング

QD

モデルのトレーニングには、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): ポジティブと予測したケースのうち、実際に正しかった割合です。

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

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


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

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

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

公開日: 2024-11-08
最終更新日: 2025-04-30
バージョン: 1

下田 昌平

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

チーム

任 弘毅

株式会社レシートローラーにて開発とサポートを担当。POSレジやShopifyアプリ開発の経験を活かし、業務のデジタル化を促進。

下田 昌平

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