0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

モデルの推論精度をテストする方法:Python初心者向けガイド

Last updated at Posted at 2024-12-28

はじめに

機械学習やディープラーニングにおいて、モデルの推論精度は非常に重要な指標です。特に複雑なタスクを扱う際に、モデルが実際にどのように動作するかを理解するのに役立ちます。この記事では、モデルの推論精度をテストする方法をステップバイステップで解説し、Pythonを使って簡単なコードを実装します。

モデルの推論精度とは?

モデルの推論精度とは、モデルが特定のタスクにおいてどれだけ正確に推論を行うかを示す指標です。例えば、質問応答タスクでは、モデルが正しく回答する割合が推論精度となります。モデルの推論精度をテストするためには、標準的なデータセットとツールを使用します。

使用するツール:lm-evaluation-harness

lm-evaluation-harness というツールを使用して、モデルの推論精度をテストします。このツールは、多くの標準データセットと評価方法を提供しており、モデルの性能を簡単にテストすることができます。

ツールのインストール

まず、lm-evaluation-harness ツールをインストールします。以下のコマンドを使用してインストールできます。

git clone --depth 1 https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
pip install -e .

国内の場合は、ミラーサイトを使用してダウンロード速度を向上させることができます。

export HF_ENDPOINT=https://hf-mirror.com

データセットのロードで問題が発生した場合は、datasets のバージョンを指定してみてください。

pip install datasets==2.14.6

モデルの推論精度をテストする手順

ここでは、Qwen2.5-0.5B モデルを使用し、ARC_challengeHellaSwagpiqa データセットでテストを行います。

1. モデルとトークナイザーのロード

まず、モデルとトークナイザーをロードします。transformers ライブラリを使用してモデルとトークナイザーをロードします。

from transformers import AutoModelForCausalLM, AutoTokenizer

# モデルをロード
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-0.5B", device_map="auto", trust_remote_code=True).eval()

# トークナイザーをロード
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B", trust_remote_code=True)

2. lm-evaluation-harness を使用してテスト

次に、lm-evaluation-harness を使用してモデルの推論精度をテストします。simple_evaluate 関数を使用して評価を行います。

from lm_eval.models.huggingface import HFLM
from lm_eval import simple_evaluate
import json

# HFLMオブジェクトを作成
lm = HFLM(pretrained=model, tokenizer=tokenizer, batch_size=64, device="cpu")

# 指定されたデータセットで評価
results = simple_evaluate(model=lm, tasks=["arc_challenge", "hellaswag", "piqa"])

# 結果をJSONファイルにエクスポート
filtered_results = results.copy()
filtered_results = {key: value for key, value in results.items() if key == "results"}
json_filtered_results = json.dumps(filtered_results, indent=4)

with open("results.json", "w") as json_file:
    json_file.write(json_filtered_results)

3. スクリプトの実行

上記のコードをPythonスクリプト(例えば evaluate_model.py)として保存し、コマンドラインで実行します。

python evaluate_model.py

実行が完了すると、results.json というファイルが生成されます。このファイルには、モデルが ARC_challengeHellaSwagpiqa データセットで達成した推論精度が含まれています。

4. 結果の確認

results.json ファイルを開くと、以下のような内容が表示されます。

{
    "results": {
        "arc_challenge": {
            "alias": "arc_challenge",
            "acc,none": 0.295221843003413,
            "acc_stderr,none": 0.01332975029338232,
            "acc_norm,none": 0.3242320819112628,
            "acc_norm_stderr,none": 0.013678810399518813
        },
        "hellaswag": {
            "alias": "hellaswag",
            "acc,none": 0.40619398526190004,
            "acc_stderr,none": 0.004901178917900843,
            "acc_norm,none": 0.5214100776737701,
            "acc_norm_stderr,none": 0.004985204766555058
        },
        "piqa": {
            "alias": "piqa",
            "acc,none": 0.7023939064200218,
            "acc_stderr,none": 0.01066735379238821,
            "acc_norm,none": 0.6996735582154516,
            "acc_norm_stderr,none": 0.010695225308183138
        }
    }
}

ここで、acc,none はモデルが対応するデータセットで達成した正解率を示しています。例えば、arc_challenge データセットでの正解率は約29.5%です。

まとめ

この記事では、モデルの推論精度をテストする方法を紹介しました。lm-evaluation-harness ツールを使用することで、複数の標準データセットでモデルの性能を簡単に評価することができます。このガイドが、今後のプロジェクトで役立つことを願っています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?