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 を停止します。詳細については、GitHub ウェブサイトの「vLLM」とlm-evaluation-harness」を参照してください。モデルは 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。インストール手順については、GitHub ウェブサイトの deadline-cloud リポジトリを参照してください。

  • GPU インスタンスに十分な Deadline Cloud サービスクォータ。で実行されるデフォルトの 3 モデル g5.xlarge (それぞれ 4 つの vCPUsと 1 つの GPU) では、リージョンごとにオンデマンド G インスタンス GPUs で少なくとも 3 つの GPU、リージョンごとにオンデマンド vCPU vCPUs で少なくとも 12 の vCPU が必要です。 OnDemand GPUs OnDemand vCPUs

注記

Hugging Face トークンは、ゲートモデル (Llama など) にのみ必要です。デフォルトのモデルリストでは、非推奨モデルを使用します。

ファームをセットアップする

互換性のあるファームを取得する最も簡単な方法は、GitHub ウェブサイトで 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.5B、 Qwen/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/

トラブルシューティング

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

最も一般的な原因は、Deadline Cloud サービスクォータです。AWS Deadline Cloud で Service Quotas コンソールを開き、リージョンごとのOnDemand G インスタンス GPUs とリージョンごとのOnDemandvCPUs のヘッドルームがあることを確認します。クォータの引き上げには数分から数営業日かかる場合があります。

以下のリソースは、GitHub ウェブサイトと vLLM ウェブサイトで追加情報を提供します。