View a markdown version of this page

LLMsを使用して LLM をベンチマークする lm-evaluation-harness - Deadline クラウド

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

LLMsを使用して LLM をベンチマークする lm-evaluation-harness

このチュートリアルでは、1 つの Deadline Cloud ジョブで複数のベンチマークに対して複数の大規模言語モデル (LLMs) を評価する方法について説明します。各モデルはパラメータスイープで 1 つのタスクになり、タスクはワーカー間で並行して実行されます。最後のステップでは、モデルごとの結果を CSV および Markdown 形式でランク付けされたリーダーボードに集計します。

このチュートリアルのソースコードは、GitHub の deadline-cloud-samples リポジトリで入手できます。

次の動画は、Deadline Cloud での vLLM LLM リーダーボードワークフローを示しています。

推定時間: 20~40 分 (モデルとベンチマークの数によって異なります)。

概要

EvalModels ステップの各タスクはローカル vLLM サーバーを起動し、ローカルエンドポイントに対して EleutherAI の lm-evaluation-harness を使用してすべてのベンチマークを実行し、vLLM を停止します。モデルは Hugging Face Hub から直接ロードされるため、ジョブアタッチメントは必要ありません。

このチュートリアルを完了するには、次の手順に従います。

  1. 「前提条件」を完了します。

  2. ファームをセットアップします。

  3. 評価ジョブを送信します。

  4. 結果をダウンロードして確認します。

  5. リソースをクリーンアップします。

前提条件

開始する前に、次のセットアップをお勧めします。

  • 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 テンプレートをデプロイすることです。テンプレートは、NVIDIA GPU サービスマネージドフリート (A10G または L4) と、このバンドルが変更なしで使用する conda キュー環境を持つキューをプロビジョニングします。

ファームの CLI を設定するには
  • CloudFormation スタックが に達したらCREATE_COMPLETE、新しいファームを使用するように Deadline Cloud CLI を設定します。

    deadline config set defaults.farm_id FarmId-from-stack-outputs deadline config set defaults.queue_id CUDAQueueId-from-stack-outputs

ファームが既にある場合は、次の設定をお勧めします。

  • NVIDIA GPUs、32 GB 以上の RAM、4 つ以上の vCPUs を搭載した SMF フリート。

  • CondaPackages および CondaChannelsジョブパラメータを読み取る conda キュー環境を持つキュー。

評価ジョブを送信する

評価ジョブを送信するには
  1. サンプルリポジトリのクローンを作成し、ジョブバンドルディレクトリに移動します。

    git clone https://github.com/aws-deadline/deadline-cloud-samples.git cd deadline-cloud-samples/job_bundles/vllm_lm_eval_leaderboard
  2. デフォルトのモデルとベンチマークを使用してジョブを送信します。

    deadline bundle submit . \ --parameter MaxModelLen=2048

    デフォルトのモデルリストでは、、Qwen/Qwen2.5-0.5BQwen/Qwen2.5-1.5Bの 3 つの小さなモデルが評価されますEleutherAI/pythia-1.4b。デフォルトのベンチマークは、共通推論スイート ですhellaswag,arc_easy,arc_challenge,winogrande

  3. 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 タスクを参照してください。

結果をダウンロードして確認する

リーダーボードの結果をダウンロードするには
  1. ジョブが完了したら、出力をダウンロードします。

    deadline job download-output --job-id job-id
  2. リーダーボードを表示します。

    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 |

クリーンアップ

継続的な料金を回避するには、このチュートリアル用に作成したリソースをクリーンアップします。

チュートリアルリソースをクリーンアップするには
  1. CUDA ファーム CloudFormation テンプレートをデプロイした場合は、 CloudFormation コンソールから CloudFormation スタックを削除します。

  2. 既存のファームを使用した場合は、このチュートリアルで使用した GPU フリートを停止または削除します。

  3. 不要になったローカル出力ファイルを削除します。

    rm -rf leaderboard_results/

トラブルシューティング

フリートがワーカーをスケールアップしない

最も一般的な原因は、Amazon EC2 vCPU サービスクォータです。EC2Service Quotas コンソールを開き、オンデマンド G および VT インスタンスを実行するためのヘッドルームがあることを確認します。クォータの引き上げには数分から数営業日かかる場合があります。

以下のリソースは追加情報を提供します。