An chain version of lm evaluation framework.
このツールは、言語モデルの自動評価用フレームワークです。
以下の機能を提供します。
- 既存の評価用データを用いた言語モデルの評価
- 既存の評価用データを活用した、逆翻訳による実行ベース評価での言語モデルの評価
git clone https://github.com/KuramitsuLab/lm-chaineval-harness.git
cd lm-chaineval-harness
pip3 install -r requirements.txt
評価に使用するモデルで、API キーが必要な場合は.env
ファイルに記載して保存、もしくは環境変数に設定してください。
以下のAPIをサポートしています。
- Hugging Face のアクセストークン
- OpenAI API
- Amazon Bedrock API(boto3)
OPENAI_API_KEY
HF_TOKEN
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
-
templates
からテンプレートファイルを選ぶ、もしくは作成する -
任意のパス名に変更後、
chain.sh
として保存するpython3 ./scripts/main.py \ --model_path <MODEL_PATH> \ --dataset <DATASET_PATH> \ --template <TEMPLATE_PATH> \ --metrics <METRIC_PATH> \ --result_path <RESULT_PATH>
model_path
: 評価したいモデルのパス名を指定- OpenAI モデルは先頭に
openai:
を付けて指定(e.g.,openai:gpt-4
) - Amazon Bedrock 経由モデルは先頭に
bedrock:
を付けて指定(e.g.,bedrock:anthropic.claude-v2:1
)
- OpenAI モデルは先頭に
dataset
: HuggingFace Hub 上で提供されているデータセットのパス名を指定- e.g.,
openai_humaneval
,kogi-jwu/jhumaneval
- 個人がローカルに所有するjsonl 形式のデータを指定することも可能
- e.g.,
template
:templates
から選んだテンプレートのパス名を指定- 個人で新たに作成したテンプレートのパス名の指定も可能
metrics
: 評価指標のパス名を指定- HuggingFaceのevaluate-metricで提供されている評価指標を使っています
- 現在のサポート:
pass@1
result_path
: 結果を格納するファイル名を指定- 指定なしでも自動で結果のファイルを作成してくれます
-
評価を実行する
sh chain.sh
逆翻訳を活用した実行ベースでの評価方法をサポートしています。
-
templates
からテンプレートファイルを選ぶ、もしくは作成する -
任意のパス名に変更後、
chain.sh
として保存する# 評価したいタスク python3 ./scripts/main.py \ --model_path <MODEL_PATH> \ --dataset <DATASET_PATH> \ --template <TEMPLATE_PATH_1> \ --result_path <RESULT_PATH_1> # BackCodeEval python3 ./scripts/main.py \ --model_path <MODEL_PATH> \ --dataset <RESULT_PATH_1> \ --template <TEMPLATE_PATH_2> \ --metrics <METRIC_PATH> \ --result_path <RESULT_PATH_2>
model_path
: 評価したいモデルのパス名を指定- OpenAI モデルは先頭に
openai:
を付けて指定(e.g.,openai:gpt-4
) - Amazon Bedrock 経由モデルは先頭に
bedrock:
を付けて指定(e.g.,bedrock:anthropic.claude-v2:1
)
- OpenAI モデルは先頭に
dataset
: HuggingFace Hub 上で提供されているデータセットのパス名を指定- e.g.,
openai_humaneval
,kogi-jwu/jhumaneval
- 個人がローカルに所有するjsonl 形式のデータを指定することも可能
- e.g.,
template
:templates
から選んだテンプレートのパス名を指定- 個人で新たに作成したテンプレートのパス名の指定も可能
metrics
: 評価指標のパス名を指定- HuggingFaceのevaluate-metricで提供されている評価指標を使っています
- 現在のサポート:
pass@1
result_path
: 結果を格納するファイル名を指定- 指定なしでも自動で結果のファイルを作成してくれます
-
評価を実行する
sh chain.sh
モデルに合わせて必要なパラメータを追加してください。
# Hugging Face
--hf_token $HF_TOKEN
# OpenAI
--openai_api_key $OPENAI_API_KEY
# Amazon Bedrock
--aws_access_key_id $AWS_ACCESS_KEY_ID
--aws_secret_access_key $AWS_SECRET_ACCESS_KEY
HuggingFace のPipeline で使用できるパラメータを個別で設定可能です。
python3 ./scripts/main.py \
--model_path <MODEL_PATH> \
--max_new_tokens 512 \
--temperature 0.1 \
--top_p 0.90 \
--dataset <DATASET_PATH> \
--template <TEMPLATE_PATH> \
--metrics <METRIC_PATH> \
--result_path <RESULT_PATH>
bitsandbytes を使用した4bitでの量子化を指定することができます。
量子化を行う際には、コマンドライン引数として use_4bit
を追加してください。
python3 ./scripts/main.py \
--model_path <MODEL_PATH> \
--dataset <DATASET_PATH> \
--template <TEMPLATE_PATH> \
--metrics <METRIC_PATH> \
--result_path <RESULT_PATH> \
--use_4bit
test_run
を追加すると、データセットの先頭5件だけを実行します。
python3 ./scripts/main.py \
--model_path <MODEL_PATH> \
--dataset <DATASET_PATH> \
--template <TEMPLATE_PATH> \
--metrics <METRIC_PATH> \
--result_path <RESULT_PATH> \
--test_run
ツールが動作するかを確認するには以下のような実行が有効です。
python3 ./scripts/main.py \
--dataset openai_humaneval \
--metrics pass@1 \
--test_run