- このリポジトリではSwallowプロジェクトによる大規模言語モデル;Swallowシリーズのリリースに用いた評価スクリプトを公開しています。 再現実験などにご利用ください。
- 本文書では評価スクリプトの実行方法のみを説明します。評価方法や結果はSwallowプロジェクトの評価ページや論文発表を参照ください。
- 評価スクリプトは,基本的には llm-jp-eval などの既存のLLM評価フレームワークを使用しています。 この場をお借りしてフレームワーク開発者の皆様にお礼申し上げます。
- 実行環境の違いにより、異なる評価結果になる場合があります。
- 評価がうまくいかないなど問題があればIssueまでお願いします。
- バージョン: llm-jp-eval v1.3.0 [Han+, ANLP24]
- ライセンス: Copyright 2023 LLM-jp, Apache License Version 2.0 (LICENSE)
- 主な変更点:
- バージョン: JP Language Model Evaluation Harness v0.4.2
- ライセンス: Copyright (c) 2020 EleutherAI, MIT License (LICENSE)
- 主な変更点: なし
- バージョン: Language Model Evaluation Harness v0.3.0 (commit #9b42d41) [Gao+, 22]
- ライセンス: Copyright (c) 2020 EleutherAI, MIT License (LICENSE)
- 主な変更点:
- TER (Translation Error Rate) をブートストラップ統計量から除外しました。
- 評価結果のキャッシュの保存先を指定できるようにしました。
- huggingface tokenizerを読み込む際に
trust_remote_code
に渡す値を指定できるようにしました。
- バージョン: FastChat (commit #e86e70d0)
- ライセンス: Apache License Version 2.0 (LICENSE)
- 主な変更点:
- 新しいモデルに対応するために、それぞれのモデルに対応するChatTemplateの追加をしました (リンク)。
- 一つの事例に対して複数回の応答文の生成と評価を行えるようにしました。
- OpenAIのAPIを呼び出す際のretryの処理を改善しました。
- バージョン: bigcode-evaluation-harness (commit #0261c52)
- ライセンス: Apache License Version 2.0 (LICENSE)
- 主な変更点:
- バージョン: jhuman-eval
- ライセンス: Copyright (c) 2023 Kimio Kuramitsu's Laboratory, MIT License (LICENSE)
- 主な変更点: なし
各フレームワークに対し、別々の仮想環境を用意します。
Pythonのバージョンは3.9を使ってください。
python -m venv .venv_llm_jp_eval
python -m venv .venv_harness_jp
python -m venv .venv_harness_en
python -m venv .venv_bigcode
python -m venv .venv_fastchat
swallow-evaluation/
にて
source .venv_llm_jp_eval/bin/activate
cd llm-jp-eval
pip install --upgrade pip
pip install -e .
pip install protobuf
pip install sentencepiece
torchのバージョンがcudaに合わない場合は、torchを入れ直してください。
swallow-evaluation/
にて
source .venv_harness_jp/bin/activate
cd lm-evaluation-harness-jp
pip install --upgrade pip
pip install -e ".[ja]"
pip install sacrebleu
pip install sentencepiece
pip install protobuf
pip install nagisa
torchのバージョンがcudaに合わない場合は、torchを入れ直してください。
swallow-evaluation/
にて
source .venv_harness_en/bin/activate
cd lm-evaluation-harness-en
pip install --upgrade pip
pip install -e .
pip install sentencepiece
pip install protobuf
torchのバージョンがcudaに合わない場合は、torchを入れ直してください。
swallow-evaluation/
にて
source .venv_bigcode/bin/activate
cd bigcode-evaluation-harness
pip install --upgrade pip
pip install -e .
# For Llama
pip install sentencepiece
pip install protobuf
torchのバージョンがcudaに合わない場合は、torchを入れ直してください。
bigcode-evaluation-harnessの指示に従ってdockerイメージをビルドする。
swallow-evaluation/
にて
source .venv_fastchat/bin/activate
cd fastchat
pip install --upgrade pip
pip install torch==2.1.0 --index-url https://download.pytorch.org/whl/cu118
pip install python-dotenv pandas
pip install -e ".[model_worker,llm_judge]"
torchのバージョンがcudaに合わない場合は、torchを入れ直してください。
swallow-evaluation/.env
ファイルを作成し、AzureのAPIキーを入力する。
AZURE_OPENAI_KEY=...
AZURE_OPENAI_ENDPOINT=...
結果は
results/${MODEL_PATH}/ja/
以下に保存されます。
- llm-jp-evalのREADME.mdに従って、データセットをダウンロードする
cd llm-jp-eval
python scripts/preprocess_dataset.py \
--dataset-name all \
--output-dir ./dataset
cd ../
swallow-evaluation/
にて
bash scripts/evaluate_ja_llmjp.sh \
$MODEL_PATH \
$TOKENIZER_PATH \
jamp, janli, jemhopqa, jcommonsenseqa, jnli, jsem, jsick, jsquad, jsts, niilc, jmmluの評価が実行されます。
bash scripts/evaluate_ja_xlsum.sh $MODEL_PATH
bash scripts/evaluate_ja_mgsm.sh $MODEL_PATH
bash scripts/evaluate_ja_wmt20_{enja,jaen}.sh $MODEL_PATH
- 評価を行うにはdockerイメージのビルドが必要
bash scripts/evaluate_ja_humaneval-unstripped.sh $MODEL_PATH true true
- Azure OpenAI APIを用いてGPT-4を呼び出すためAPI料金がかかる
bash scripts/ja_mt_bench.sh $MODEL_PATH $GPU_NUM
結果は
results/${MODEL_PATH}/en/
以下に保存されます。
swallow-evaluation/
にて
bash scripts/evaluate_english.sh $MODEL_PATH
triviaqa, gsm8k, openbookqa, hellaswag, xwinograd_en, squadv2, mmlu, bbh_cot_fewshotの評価が実行されます。
- 評価を行うにはdockerイメージのビルドが必要
bash scripts/evaluate_english_humaneval-unstripped.sh $MODEL_PATH true true
モデル名を指定してscripts/aggregate_result.py
を実行することで、モデルの評価結果を集計することができます。
ただし、各評価スクリプトの最後に自動的に結果が集計されるようになっているので、通常は実行する必要はありません。
python scripts/aggregate_result.py --model $MODEL_NAME