

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# vLLM 및 lm-evaluation-harnessLLMs 벤치마크
<a name="tutorial-vllm-leaderboard"></a>

이 자습서에서는 단일 Deadline Cloud 작업에서 여러 벤치마크와 비교하여 여러 대규모 언어 모델(LLMs)을 평가하는 방법을 안내합니다. 각 모델은 파라미터 스윕에서 하나의 작업이 되며 작업은 작업자 간에 병렬로 실행됩니다. 마지막 단계에서는 모델별 결과를 CSV 및 마크다운 형식으로 순위가 매겨진 리더보드로 집계합니다.

이 자습서의 소스 코드는 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, 최소 32GB 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 서비스 할당량입니다. `g5.xlarge` (각각 vCPUs 4개)에서 실행되는 기본 3-모델에는 *온디맨드 G 및 VT 인스턴스 실행*에서 최소 12vCPUs가 필요합니다.

**참고**  
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 스택이에 도달하면 새 팜을 사용하도록 Deadline Cloud CLI를 `CREATE_COMPLETE`구성합니다.

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

팜이 이미 있는 경우 다음 구성을 사용하는 것이 좋습니다.
+ NVIDIA GPUs, 최소 32GB RAM 및 최소 4개의 vCPUs.
+ `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`의 세 가지 작고 비동기화된 모델을 평가합니다`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)