I hope it is correct を追加したほか、生成トークン数の上限を 1024 に変更しています。The final answer is(.*?). だけでなく \\boxed{} も併用する方法に変更しました。trust_remote_codeに渡す値を指定できるようにしました。n を削除しない、いわゆる "unstripped" を使用しています。以下、本リポジトリをクローンしたフォルダ(例: /home/user/swallow-evaluation/ )を作業ディレクトリとしてコマンドを示します。
各フレームワークに対して、別々の仮想環境を用意します。
Pythonのバージョンは3.10.14を使ってください。
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
なお、以下の環境構築コードは、我々の計算環境においては動作検証をしておりますが、
利用される計算環境によってはバージョンが合わないことが考えられます。
その際は適宜適当なバージョンに置き換えてください。
source .venv_llm_jp_eval/bin/activate
cd llm-jp-eval
pip install --upgrade pip
pip install -e .
pip install protobuf sentencepiece
pip install 'accelerate>=0.26.0'
pip install datasets==2.21.0
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121
source .venv_harness_jp/bin/activate
cd lm-evaluation-harness-jp
pip install --upgrade pip
pip install -e ".[ja]"
pip install sacrebleu sentencepiece protobuf nagisa
pip install 'accelerate>=0.26.0'
pip install datasets==2.21.0
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121
source .venv_harness_en/bin/activate
cd lm-evaluation-harness-en
pip install --upgrade pip
pip install -e ".[math]"
pip install sentencepiece==0.2.0 protobuf==5.28.3 transformers==4.46.2
pip install 'accelerate>=0.26.0'
pip install datasets==2.21.0
pip install vllm==v0.6.3.post1
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121
docker build -t evaluation-harness-jalm-evaluation .
source .venv_bigcode/bin/activate
cd bigcode-evaluation-harness
pip install --upgrade pip
pip install -e .
pip install sentencepiece==0.2.0 protobuf==5.28.3 transformers==4.46.2
pip install 'accelerate>=0.26.0'
pip install datasets==2.21.0
pip install vllm==v0.6.3.post1
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121
仮想環境構築に加えて、dockerイメージのビルドが必要です。
docker://ghcr.io/bigcode-project/evaluation-harness を swallow-evaluation/evaluation-harness.sif として
pull を行う必要があります。 また、その用意したコンテナの中で datasets==2.21.0 をインストールする必要もあります。
例:Apptainer を使う場合(Docker、Singularityの場合も同様)
cd (cloneしたswallow-evaluationへのパス)
apptainer pull --name evaluation-harness.sif docker://ghcr.io/bigcode-project/evaluation-harness
apptainer exec evaluation-harness.sif pip install --user datasets==2.21.0
source .venv_fastchat/bin/activate
cd fastchat
pip install --upgrade pip
pip install python-dotenv pandas
pip install -e ".[model_worker,llm_judge]"
pip install vllm==v0.6.3.post1
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121
pip install markdown beautifulsoup4
モデルの生成文を gpt-4o-2024-08-06 を用いて評価する(LLM-as-a-judge)ので
./.envファイルを作成し、OpenAIのAPIキーを入力してください。
OPENAI_API_KEY=...
結果は
./results/${MODEL_PATH}/ja/
以下に保存されます。
llm-jp-evalのREADME.mdに従い、以下のコマンドを実行してデータセットをダウンロードする
source .venv_llm_jp_eval/bin/activate
cd llm-jp-eval
python scripts/preprocess_dataset.py \
--dataset-name all \
--output-dir ./dataset
cd ../
JEMHopQA, JCommonsenseQA, JSQuAD, NIILC, JMMLU, JSTS, NLIベンチマーク5種 (Jamp, JaNLI, JNLI, JSeM, JSICK) の評価が実行されます。
bash scripts/evaluate_ja_llmjp.sh $MODEL_PATH
jamp,janli,jnli,jsem,jsick)のbalanced accuracyを計算するには
./scripts/re_evaluate_nli_task.py に llm-jp-eval が出力した output_eval.json を渡してください。
計算結果はjson形式でstdoutに出力されます。python re_evaluate_nli_task.py --input="{output_eval.jsonのパス}" > {保存先のjsonファイルパス}
# 出力されるjsonの見本
{
"input_path": "{入力したoutput_eval.jsonのパス}",
"macro_accuracy": 0.38721748069591116, # accuracyのマクロ平均
"macro_balanced_accuracy": 0.3709781734463517, # balanced accuracyのマクロ平均
"jamp_balanced_accuracy": 0.33338203779466197, # 個別データセットのbalanced accuracy
...
}
output_eval.jsonを一括で処理する場合は ./scripts/batch_re_evaluate_nli_task.sh を実行してください。
ただし find コマンドの対象パスをあなたのフォルダ構造に合わせて書き換えて使ってください。
計算結果はndjson形式で ja_nli_task_dataset_scores.json に出力されます。# ヘッダ行の生成
head -n 1 {ndjsonファイル} | jq -r 'keys_unsorted | @tsv' > output.tsv
# 各行のデータの生成
cat {ndjsonファイル} | jq -r '[.[]] | @tsv' >> output.tsv
XL-Sum(自動要約)、MGSM(算術推論)、WMT20(機械翻訳)の評価が実行されます。
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
JHumanEval, MBPP-Ja の評価が実行されます。
結果は
./results/${MODEL_PATH}/ja/${task_name}_${NUM_FEWSHOT}shot_${NUM_TESTCASE}cases/
に保存されます。
bash scripts/evaluate_ja_{humaneval-unstripped,mbpp}.sh $MODEL_PATH true true
日本語MT-Bench の評価が実行されます。
bash scripts/evaluate_ja_mt_bench.sh $MODEL_PATH $GPU_NUM
結果は
results/${MODEL_PATH}/en/
以下に保存されます。
以下の評価が実行されます。
それぞれのベンチマークは、以下のシェルスクリプトで実行できます。
evaluate_english_general.sh - TriviaQA, GSM8K, OpenBookQA, HellaSwag, XWINO, SQuAD v2evaluate_english_bbh.sh - BBHevaluate_english_gpqa.sh - GPQAevaluate_english_mmlu.sh - MMLUevaluate_english_math.sh - MATHbash scripts/evaluate_english_{general,bbh,gpqa,mmlu,math}.sh $MODEL_PATH
HumanEval, MBPP の評価が実行されます。また、コード生成と採点を同時または別々に行うことができます。
# コード生成と採点を同時に行う場合
bash scripts/evaluate_english_{humaneval-unstripped,mbpp}.sh $MODEL_PATH true true
# コード生成のみを行う場合
bash scripts/evaluate_english_{humaneval-unstripped,mbpp}.sh $MODEL_PATH true false
# 採点のみを行う場合
bash scripts/evaluate_english_{humaneval-unstripped,mbpp}.sh $MODEL_PATH false true
./results/$MODEL_NAME/aggregated_result.jsonに書き込まれます。tmp/model_list ファイルを作成し、各モデル名を1行ずつ記入してください。その後、scripts/show_results.py を実行すると、複数モデルの結果を一覧表示できます。Python
92.4%
Jupyter Notebook
5.1%
Shell
2.1%
I hope it is correct を追加したほか、生成トークン数の上限を 1024 に変更しています。The final answer is(.*?). だけでなく \\boxed{} も併用する方法に変更しました。trust_remote_codeに渡す値を指定できるようにしました。n を削除しない、いわゆる "unstripped" を使用しています。以下、本リポジトリをクローンしたフォルダ(例: /home/user/swallow-evaluation/ )を作業ディレクトリとしてコマンドを示します。
各フレームワークに対して、別々の仮想環境を用意します。
Pythonのバージョンは3.10.14を使ってください。
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
なお、以下の環境構築コードは、我々の計算環境においては動作検証をしておりますが、
利用される計算環境によってはバージョンが合わないことが考えられます。
その際は適宜適当なバージョンに置き換えてください。
source .venv_llm_jp_eval/bin/activate
cd llm-jp-eval
pip install --upgrade pip
pip install -e .
pip install protobuf sentencepiece
pip install 'accelerate>=0.26.0'
pip install datasets==2.21.0
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121
source .venv_harness_jp/bin/activate
cd lm-evaluation-harness-jp
pip install --upgrade pip
pip install -e ".[ja]"
pip install sacrebleu sentencepiece protobuf nagisa
pip install 'accelerate>=0.26.0'
pip install datasets==2.21.0
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121
source .venv_harness_en/bin/activate
cd lm-evaluation-harness-en
pip install --upgrade pip
pip install -e ".[math]"
pip install sentencepiece==0.2.0 protobuf==5.28.3 transformers==4.46.2
pip install 'accelerate>=0.26.0'
pip install datasets==2.21.0
pip install vllm==v0.6.3.post1
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121
docker build -t evaluation-harness-jalm-evaluation .
source .venv_bigcode/bin/activate
cd bigcode-evaluation-harness
pip install --upgrade pip
pip install -e .
pip install sentencepiece==0.2.0 protobuf==5.28.3 transformers==4.46.2
pip install 'accelerate>=0.26.0'
pip install datasets==2.21.0
pip install vllm==v0.6.3.post1
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121
仮想環境構築に加えて、dockerイメージのビルドが必要です。
docker://ghcr.io/bigcode-project/evaluation-harness を swallow-evaluation/evaluation-harness.sif として
pull を行う必要があります。 また、その用意したコンテナの中で datasets==2.21.0 をインストールする必要もあります。
例:Apptainer を使う場合(Docker、Singularityの場合も同様)
cd (cloneしたswallow-evaluationへのパス)
apptainer pull --name evaluation-harness.sif docker://ghcr.io/bigcode-project/evaluation-harness
apptainer exec evaluation-harness.sif pip install --user datasets==2.21.0
source .venv_fastchat/bin/activate
cd fastchat
pip install --upgrade pip
pip install python-dotenv pandas
pip install -e ".[model_worker,llm_judge]"
pip install vllm==v0.6.3.post1
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121
pip install markdown beautifulsoup4
モデルの生成文を gpt-4o-2024-08-06 を用いて評価する(LLM-as-a-judge)ので
./.envファイルを作成し、OpenAIのAPIキーを入力してください。
OPENAI_API_KEY=...
結果は
./results/${MODEL_PATH}/ja/
以下に保存されます。
llm-jp-evalのREADME.mdに従い、以下のコマンドを実行してデータセットをダウンロードする
source .venv_llm_jp_eval/bin/activate
cd llm-jp-eval
python scripts/preprocess_dataset.py \
--dataset-name all \
--output-dir ./dataset
cd ../
JEMHopQA, JCommonsenseQA, JSQuAD, NIILC, JMMLU, JSTS, NLIベンチマーク5種 (Jamp, JaNLI, JNLI, JSeM, JSICK) の評価が実行されます。
bash scripts/evaluate_ja_llmjp.sh $MODEL_PATH
jamp,janli,jnli,jsem,jsick)のbalanced accuracyを計算するには
./scripts/re_evaluate_nli_task.py に llm-jp-eval が出力した output_eval.json を渡してください。
計算結果はjson形式でstdoutに出力されます。python re_evaluate_nli_task.py --input="{output_eval.jsonのパス}" > {保存先のjsonファイルパス}
# 出力されるjsonの見本
{
"input_path": "{入力したoutput_eval.jsonのパス}",
"macro_accuracy": 0.38721748069591116, # accuracyのマクロ平均
"macro_balanced_accuracy": 0.3709781734463517, # balanced accuracyのマクロ平均
"jamp_balanced_accuracy": 0.33338203779466197, # 個別データセットのbalanced accuracy
...
}
output_eval.jsonを一括で処理する場合は ./scripts/batch_re_evaluate_nli_task.sh を実行してください。
ただし find コマンドの対象パスをあなたのフォルダ構造に合わせて書き換えて使ってください。
計算結果はndjson形式で ja_nli_task_dataset_scores.json に出力されます。# ヘッダ行の生成
head -n 1 {ndjsonファイル} | jq -r 'keys_unsorted | @tsv' > output.tsv
# 各行のデータの生成
cat {ndjsonファイル} | jq -r '[.[]] | @tsv' >> output.tsv
XL-Sum(自動要約)、MGSM(算術推論)、WMT20(機械翻訳)の評価が実行されます。
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
JHumanEval, MBPP-Ja の評価が実行されます。
結果は
./results/${MODEL_PATH}/ja/${task_name}_${NUM_FEWSHOT}shot_${NUM_TESTCASE}cases/
に保存されます。
bash scripts/evaluate_ja_{humaneval-unstripped,mbpp}.sh $MODEL_PATH true true
日本語MT-Bench の評価が実行されます。
bash scripts/evaluate_ja_mt_bench.sh $MODEL_PATH $GPU_NUM
結果は
results/${MODEL_PATH}/en/
以下に保存されます。
以下の評価が実行されます。
それぞれのベンチマークは、以下のシェルスクリプトで実行できます。
evaluate_english_general.sh - TriviaQA, GSM8K, OpenBookQA, HellaSwag, XWINO, SQuAD v2evaluate_english_bbh.sh - BBHevaluate_english_gpqa.sh - GPQAevaluate_english_mmlu.sh - MMLUevaluate_english_math.sh - MATHbash scripts/evaluate_english_{general,bbh,gpqa,mmlu,math}.sh $MODEL_PATH
HumanEval, MBPP の評価が実行されます。また、コード生成と採点を同時または別々に行うことができます。
# コード生成と採点を同時に行う場合
bash scripts/evaluate_english_{humaneval-unstripped,mbpp}.sh $MODEL_PATH true true
# コード生成のみを行う場合
bash scripts/evaluate_english_{humaneval-unstripped,mbpp}.sh $MODEL_PATH true false
# 採点のみを行う場合
bash scripts/evaluate_english_{humaneval-unstripped,mbpp}.sh $MODEL_PATH false true
./results/$MODEL_NAME/aggregated_result.jsonに書き込まれます。tmp/model_list ファイルを作成し、各モデル名を1行ずつ記入してください。その後、scripts/show_results.py を実行すると、複数モデルの結果を一覧表示できます。Python
92.4%
Jupyter Notebook
5.1%
Shell
2.1%