翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
LLMsを使用して LLM をベンチマークする lm-evaluation-harness
このチュートリアルでは、1 つの Deadline Cloud ジョブで複数のベンチマークに対して複数の大規模言語モデル (LLMs) を評価する方法について説明します。各モデルはパラメータスイープで 1 つのタスクになり、タスクはワーカー間で並行して実行されます。最後のステップでは、モデルごとの結果を CSV および Markdown 形式でランク付けされたリーダーボードに集計します。
このチュートリアルのソースコードは、GitHub の deadline-cloud-samples
次の動画は、Deadline Cloud での vLLM LLM リーダーボードワークフローを示しています。
推定時間: 20~40 分 (モデルとベンチマークの数によって異なります)。
概要
EvalModels ステップの各タスクはローカル vLLM
このチュートリアルを完了するには、次の手順に従います。
-
「前提条件」を完了します。
-
ファームをセットアップします。
-
評価ジョブを送信します。
-
結果をダウンロードして確認します。
-
リソースをクリーンアップします。
前提条件
開始する前に、次のセットアップをお勧めします。
-
NVIDIA GPU サービスマネージドフリート (A10G または L4、少なくとも 32 GB の RAM、少なくとも 4 つの vCPUs) を持つ Deadline Cloud ファーム。
-
CondaPackagesおよびCondaChannelsジョブパラメータを読み取る conda キュー環境がアタッチされたキュー。 -
ワークステーションにインストールされている Deadline Cloud CLI
。 -
GPU インスタンスに十分な Amazon Elastic Compute Cloud (Amazon EC2) vCPU サービスクォータ。で実行されるデフォルトの 3 モデル
g5.xlarge(各 4 vCPUs) では、オンデマンド G および VT インスタンスの実行で少なくとも 12 vCPUs が必要です。
注記
Hugging Face トークンは、ゲートモデル (Llama など) にのみ必要です。デフォルトのモデルリストでは、非推奨モデルが使用されます。
ファームをセットアップする
互換性のあるファームを取得する最も簡単な方法は、CUDA ファーム CloudFormation テンプレート
ファームの CLI を設定するには
-
CloudFormation スタックが に達したら
CREATE_COMPLETE、新しいファームを使用するように Deadline Cloud CLI を設定します。deadline config set defaults.farm_idFarmId-from-stack-outputsdeadline config set defaults.queue_idCUDAQueueId-from-stack-outputs
ファームが既にある場合は、次の設定をお勧めします。
-
NVIDIA GPUs、32 GB 以上の RAM、4 つ以上の vCPUs を搭載した SMF フリート。
-
CondaPackagesおよびCondaChannelsジョブパラメータを読み取る conda キュー環境を持つキュー。
評価ジョブを送信する
評価ジョブを送信するには
-
サンプルリポジトリのクローンを作成し、ジョブバンドルディレクトリに移動します。
git clone https://github.com/aws-deadline/deadline-cloud-samples.git cd deadline-cloud-samples/job_bundles/vllm_lm_eval_leaderboard -
デフォルトのモデルとベンチマークを使用してジョブを送信します。
deadline bundle submit . \ --parameter MaxModelLen=2048デフォルトのモデルリストでは、、
Qwen/Qwen2.5-0.5B、Qwen/Qwen2.5-1.5Bの 3 つの小さなモデルが評価されますEleutherAI/pythia-1.4b。デフォルトのベンチマークは、共通推論スイート ですhellaswag,arc_easy,arc_challenge,winogrande。 -
Deadline Cloud コンソールで、または
deadline job getコマンドを使用してジョブのステータスをモニタリングします。
モデルリストの変更
モデルは、 のEvalModelsステップで STRING パラメータスペースとして定義されますtemplate.yaml。
parameterSpace: taskParameterDefinitions: - name: ModelName type: STRING range: - "Qwen/Qwen2.5-0.5B" - "Qwen/Qwen2.5-1.5B" - "EleutherAI/pythia-1.4b"
モデルを追加または削除するには、rangeリストを編集します。各エントリは Deadline Cloud モニターに表示されるタスクになります。モデル IDsは vLLM でサポートされている必要があります (vLLM でサポートされているモデルリスト
ベンチマークの選択
Benchmarks ジョブパラメータは、lm-evaluation-harness タスク名のカンマ区切りリストです。送信時にデフォルトのベンチマークを上書きします。
deadline bundle submit . \ --parameter Benchmarks="hellaswag,mmlu,gsm8k"
リスト内のすべてのベンチマークは、各モデルの vLLM サーバーに対して順番に実行されます。最小モデルのコンテキストウィンドウMaxModelLen以下を保持します。利用可能なベンチマークの完全なリストについては、GitHub の lm-evaluation-harness タスク
結果をダウンロードして確認する
リーダーボードの結果をダウンロードするには
-
ジョブが完了したら、出力をダウンロードします。
deadline job download-output --job-idjob-id -
リーダーボードを表示します。
cat leaderboard_results/leaderboard.md
次の例は、一般的なリーダーボード出力を示しています。
# LLM Leaderboard Models: 3 | Benchmarks: arc_challenge, arc_easy, hellaswag, winogrande | Rank | Model | arc_challenge | arc_easy | hellaswag | winogrande | Mean | |------|------------------------|---------------|----------|-----------|------------|--------| | 1 | Qwen/Qwen2.5-1.5B | 0.4497 | 0.7176 | 0.6775 | 0.6322 | 0.6192 | | 2 | Qwen/Qwen2.5-0.5B | 0.3200 | 0.5816 | 0.5223 | 0.5691 | 0.4982 | | 3 | EleutherAI/pythia-1.4b | 0.2833 | 0.5387 | 0.5201 | 0.5730 | 0.4788 |
クリーンアップ
継続的な料金を回避するには、このチュートリアル用に作成したリソースをクリーンアップします。
チュートリアルリソースをクリーンアップするには
-
CUDA ファーム CloudFormation テンプレートをデプロイした場合は、 CloudFormation コンソールから CloudFormation スタックを削除します。
-
既存のファームを使用した場合は、このチュートリアルで使用した GPU フリートを停止または削除します。
-
不要になったローカル出力ファイルを削除します。
rm -rf leaderboard_results/
トラブルシューティング
フリートがワーカーをスケールアップしない
最も一般的な原因は、Amazon EC2 vCPU サービスクォータです。EC2 で Service Quotas コンソール
関連リソース
以下のリソースは追加情報を提供します。