- Notifications
You must be signed in to change notification settings - Fork4
GPT-4 を用いて、言語モデルの応答を自動評価するスクリプト
License
Northern-System-Service/gpt4-autoeval
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
GPT-4 などの LLM を用いて、言語モデルの応答を自動評価するスクリプトである。
評価者のLLMとして、下記のモデルを選択できる。モデル名はJUDGE
環境変数で指定する。
openai/gpt-4
: OpenAI GPT-4 Turbo APIopenai/gpt-4o
: OpenAI GPT-4o APIcohere/command-r-plus
: Cohere Command-R+ API
notebooks
ディレクトリ配下にあるノートブックを実行することで、評価対象のLLMに ELYZA-tasks-100 データセットの各質問に対する回答が生成できる。ノートブックは、Google Colaboratory などで実行可能。
生成されたテキストはpreds.jsonl
という名前の JSONL ファイルに書き出される。このファイルをダウンロードする。
HuggingFace🤗 から ELYZA-tasks-100 データセットをダウンロードする。
$docker compose build$docker compose run gpt4eval python /opt/gpt4eval/download_elyza.py
ファイルはassets/elyza_tasks_100/dataset.jsonl
に保存される。
下記のように、assets/<DATASET_NAME>
にデータセット・LLMの応答を JSONL 形式で配置する。(フォーマットの詳細はassets/test
を参照)
dataset.jsonl
はassets/elyza_tasks_100
からハードリンク(またはコピー)する。
assets/<DATASET_NAME>/ - dataset.jsonl - preds.jsonl
OpenAI API キーを発行し (link)、secrets/OPENAI_API_KEY
に置く (行末は改行しない)。
$cat secrets/OPENAI_API_KEYmy-OPeNAiKeY...
評価方法は、下記の2通りから選択できる。
sequential
モード(デフォルト): LLMの応答を1つずつ OpenAI API に送信し、評価する。評価結果は、標準出力に順次表示される。batch
モード: OpenAI API のバッチ推論機能 を使用する。結果は 24 時間以内に返却される。API利用料が割安。
$DATASET_NAME=<DATASET_NAME> JUDGE=openai/gpt-4o docker compose up --build
評価結果は JSONL 形式でassets/<DATASET_NAME>/result.jsonl
に保存される。
バッチ推論ジョブを作成する。
$DATASET_NAME=<DATASET_NAME> PROCESS_MODE=batch BATCH_TASK=submit \ JUDGE=openai/gpt-4o \ docker compose up --build
ジョブIDがassets/<DATASET_NAME>/batch_id.txt
に保存される。
ジョブの結果を取得する。
$DATASET_NAME=<DATASET_NAME> PROCESS_MODE=batch BATCH_TASK=retrieve \ docker compose up --build
ジョブが未完了の場合は、その旨が表示される。
ジョブが完了した場合、評価結果は JSONL 形式でassets/<DATASET_NAME>/result.jsonl
に保存される。
Cohere API キーを発行し (link)、secrets/COHERE_API_KEY
に置く (行末は改行しない)。
$cat secrets/COHERE_API_KEYmyCohereKey...
その後、下記コマンドを実行する。
$DATASET_NAME=<DATASET_NAME> JUDGE=cohere/command-r-plus docker compose up --build
評価結果は JSONL 形式でassets/<DATASET_NAME>/result.jsonl
に保存される。
Google スプレッドシートで結果を一覧表示する場合(表示例)は、<DATASET_NAME>/{preds,results}.jsonl
を Google Drive にコピーし、tools/copy_jsonl_to_google_spreadsheet.js
を Google Apps Script として実行する。
変数名 | とりうる値 | デフォルト値 | 説明 |
---|---|---|---|
DATASET_NAME | - | - | データセット名。assets/<DATASET_NAME> にデータセットを配置する |
PROCESS_MODE | sequential ,batch | sequential | 評価モード。batch は OpenAI API のみ対応 |
JUDGE | openai/gpt-4 ,openai/gpt-4o ,cohere/command-r-plus | openai/gpt-4 | 評価者のLLM |
BATCH_TASK | submit ,retrieve | submit | バッチ推論のタスク。PROCESS_MODE=batch 以外のときは無視される |
- Linux (kernel 5.15.133.1)
- Docker Compose v2.21.0
- ELYZA-tasks-100: ELYZA (CC BY-SA 4.0),link
以上
About
GPT-4 を用いて、言語モデルの応答を自動評価するスクリプト
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.