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()
メソッドで再度読み込むことができます。

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

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

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