

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

# LLMsを使用して LLM をベンチマークする lm-evaluation-harness
<a name="tutorial-vllm-leaderboard"></a>

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

このチュートリアルのソースコードは、GitHub の [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_lm_eval_leaderboard) リポジトリで入手できます。

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

[![AWS Videos](http://img.youtube.com/vi/Hh_s65lEalU/0.jpg)](http://www.youtube.com/watch?v=Hh_s65lEalU)


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

## 概要
<a name="tutorial-vllm-overview"></a>

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

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

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

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

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

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

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

## 前提条件
<a name="tutorial-vllm-prerequisites"></a>

開始する前に、次のセットアップをお勧めします。
+ NVIDIA GPU サービスマネージドフリート (A10G または L4、少なくとも 32 GB の RAM、少なくとも 4 つの vCPUs) を持つ Deadline Cloud ファーム。
+ `CondaPackages` および `CondaChannels`ジョブパラメータを読み取る conda キュー環境がアタッチされたキュー。
+ ワークステーションにインストールされている [Deadline Cloud CLI](https://github.com/aws-deadline/deadline-cloud)。
+ GPU インスタンスに十分な Amazon Elastic Compute Cloud (Amazon EC2) vCPU サービスクォータ。で実行されるデフォルトの 3 モデル `g5.xlarge` (各 4 vCPUs) では、*オンデマンド G および VT インスタンスの実行*で少なくとも 12 vCPUs が必要です。

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

## ファームをセットアップする
<a name="tutorial-vllm-setup-farm"></a>

互換性のあるファームを取得する最も簡単な方法は、[CUDA ファーム CloudFormation テンプレート](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm)をデプロイすることです。テンプレートは、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 キュー環境を持つキュー。

## 評価ジョブを送信する
<a name="tutorial-vllm-submit"></a>

**評価ジョブを送信するには**

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

   ```
   git clone https://github.com/aws-deadline/deadline-cloud-samples.git
   cd deadline-cloud-samples/job_bundles/vllm_lm_eval_leaderboard
   ```

1. デフォルトのモデルとベンチマークを使用してジョブを送信します。

   ```
   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`。

1. Deadline Cloud コンソールで、または `deadline job get` コマンドを使用してジョブのステータスをモニタリングします。

### モデルリストの変更
<a name="tutorial-vllm-custom-models"></a>

モデルは、 の`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 でサポートされているモデルリスト](https://docs.vllm.ai/en/latest/models/supported_models.html)を参照）。

### ベンチマークの選択
<a name="tutorial-vllm-custom-benchmarks"></a>

`Benchmarks` ジョブパラメータは、lm-evaluation-harness タスク名のカンマ区切りリストです。送信時にデフォルトのベンチマークを上書きします。

```
deadline bundle submit . \
  --parameter Benchmarks="hellaswag,mmlu,gsm8k"
```

リスト内のすべてのベンチマークは、各モデルの vLLM サーバーに対して順番に実行されます。最小モデルのコンテキストウィンドウ`MaxModelLen`以下を保持します。利用可能なベンチマークの完全なリストについては、GitHub の [lm-evaluation-harness タスク](https://github.com/EleutherAI/lm-evaluation-harness/tree/main/lm_eval/tasks)を参照してください。

## 結果をダウンロードして確認する
<a name="tutorial-vllm-results"></a>

**リーダーボードの結果をダウンロードするには**

1. ジョブが完了したら、出力をダウンロードします。

   ```
   deadline job download-output --job-id {{job-id}}
   ```

1. リーダーボードを表示します。

   ```
   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 |
```

## クリーンアップ
<a name="tutorial-vllm-cleanup"></a>

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

**チュートリアルリソースをクリーンアップするには**

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

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

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

   ```
   rm -rf leaderboard_results/
   ```

## トラブルシューティング
<a name="tutorial-vllm-troubleshooting"></a>

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

最も一般的な原因は、Amazon EC2 vCPU サービスクォータです。**EC2** で [Service Quotas コンソール](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas)を開き、*オンデマンド G および VT インスタンスを実行する*ためのヘッドルームがあることを確認します。クォータの引き上げには数分から数営業日かかる場合があります。

## 関連リソース
<a name="tutorial-vllm-related"></a>

以下のリソースは追加情報を提供します。
+ [GitHub のサンプルソースコード](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_lm_eval_leaderboard)
+ [GitHub の vLLM](https://github.com/vllm-project/vllm)
+ [GitHub での lm-evaluation-harness ](https://github.com/EleutherAI/lm-evaluation-harness)
+ [CUDA ファーム CloudFormation テンプレート](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm)
+ [vLLM でサポートされているモデル](https://docs.vllm.ai/en/latest/models/supported_models.html)