Home

Awesome

Swallowプロジェクト 大規模言語モデル 評価スクリプト Ver. 202407

注意事項

評価スクリプトが使用するLLM評価フレームワークおよびそれらのライセンス・変更点

llm-jp-eval

Language Model Evaluation Harness

JP Language Model Evaluation Harness

FastChat

Code Generation LM Evaluation Harness

JHumanEval (Code Generation LM Evaluation Harnessで使用)


評価スクリプトの実行方法

準備:環境構築

各フレームワークに対し、別々の仮想環境を用意します。

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 データセットの前処理

cd llm-jp-eval

python scripts/preprocess_dataset.py  \
--dataset-name all  \
--output-dir ./dataset

cd ../

llm-jp-evalのタスクで評価

swallow-evaluation/にて

bash scripts/evaluate_ja_llmjp.sh \
$MODEL_PATH \
$TOKENIZER_PATH \

jamp, janli, jemhopqa, jcommonsenseqa, jnli, jsem, jsick, jsquad, jsts, niilc, jmmluの評価が実行されます。

xlsum(自動要約)のタスクで評価

bash scripts/evaluate_ja_xlsum.sh $MODEL_PATH

mgsm(数学)のタスクで評価

bash scripts/evaluate_ja_mgsm.sh $MODEL_PATH

WMT20(機械翻訳)のタスクで評価

bash scripts/evaluate_ja_wmt20_{enja,jaen}.sh $MODEL_PATH

JHumanevalのタスクで評価

bash scripts/evaluate_ja_humaneval-unstripped.sh $MODEL_PATH true true

日本語MTBenchの評価

bash scripts/ja_mt_bench.sh $MODEL_PATH $GPU_NUM

英語の評価

結果は results/${MODEL_PATH}/en/ 以下に保存されます。

lm-evaluation-harness のタスクで評価

swallow-evaluation/にて

bash scripts/evaluate_english.sh $MODEL_PATH

Humanevalのタスクで評価

triviaqa, gsm8k, openbookqa, hellaswag, xwinograd_en, squadv2, mmlu, bbh_cot_fewshotの評価が実行されます。

bash scripts/evaluate_english_humaneval-unstripped.sh $MODEL_PATH true true

結果の集計

モデル名を指定してscripts/aggregate_result.pyを実行することで、モデルの評価結果を集計することができます。 ただし、各評価スクリプトの最後に自動的に結果が集計されるようになっているので、通常は実行する必要はありません。

python scripts/aggregate_result.py --model $MODEL_NAME