이 튜토리얼에서는 v6e TPU VM에서 vLLM TPU 서빙 프레임워크를 사용하여 Qwen/Qwen2-7B-Instruct 모델을 서빙합니다.
목표
- 환경을 설정합니다.
- Qwen2-7B-Instruct로 vLLM을 실행합니다.
- 추론 요청을 보냅니다.
- 벤치마크 워크로드를 실행합니다.
- 삭제
비용
이 가이드에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
시작하기 전에
이 튜토리얼을 진행하기 전에 Cloud TPU 환경 설정 페이지의 안내를 따르세요. 이 안내에서는 Google Cloud프로젝트를 만들고 Cloud TPU를 사용하도록 구성하는 데 필요한 단계를 안내합니다. 기존Google Cloud 프로젝트를 사용할 수도 있습니다. 원하는 경우Google Cloud 프로젝트 만들기 단계를 건너뛰고 Cloud TPU를 사용하도록 환경 설정부터 시작할 수 있습니다.
이 튜토리얼을 사용하려면 Hugging Face 액세스 토큰이 필요합니다. Hugging Face에서 무료 계정에 가입할 수 있습니다. 계정이 있으면 액세스 토큰을 생성합니다.
- Hugging Face 시작하기 페이지에서 계정 아바타를 클릭하고 액세스 토큰을 선택합니다.
- 액세스 토큰 페이지에서 새 토큰 만들기를 클릭합니다.
- 읽기 토큰 유형을 선택하고 토큰 이름을 입력합니다.
- 액세스 토큰이 표시됩니다. 토큰을 안전한 곳에 저장합니다.
환경 설정
큐에 추가된 리소스
큐에 추가된 리소스 API를 사용하여 Cloud TPU v6e VM을 만듭니다. qwen2-7b-instruct의 경우 v6e-1 TPU를 사용하는 것이 좋습니다.
변수를 설정합니다.
- PROJECT - 프로젝트 이름
- TPU_NAME - 만들 TPU VM 머신의 이름입니다.
- ZONE - 새 VM을 만들 클라우드 영역입니다.
- TPU_TYPE: 생성할 TPU VM의 유형입니다. 예를 들면
v6e-1또는v6e-4입니다. - QR_ID: 생성하는 큐에 추가된 리소스의 이름입니다.
큐에 추가된 리소스 요청을 만듭니다.
TPU VM이 준비되었는지 확인합니다.
예를 들어 상태가 ACTIVE인 경우:
name: projects/your-project-id/locations/your-zone/queuedResources/your-queued-resource-id
state:
state: ACTIVE
tpu:
nodeSpec:
- node:
acceleratorType: v6e-1
bootDisk: {}
networkConfig:
enableExternalIps: true
queuedResource: projects/your-project-number/locations/your-zone/queuedResources/your-queued-resource-id
runtimeVersion: v2-alpha-tpuv6e
schedulingConfig: {}
serviceAccount: {}
shieldedInstanceConfig: {}
useTpuVm: true
nodeId: your-node-id
parent: projects/your-project-number/locations/your-zone
예약
예약을 사용하여 Cloud TPU v6e VM을 만듭니다. qwen2-7b-instruct의 경우 v6e-1 TPU를 사용하는 것이 좋습니다. 먼저 환경 변수를 설정합니다.
변수를 설정합니다.
- PROJECT - 프로젝트 이름
- TPU_NAME - 만들 TPU VM 머신의 이름입니다.
- ZONE - 새 VM을 만들 클라우드 영역입니다.
- TPU_TYPE: 생성할 TPU VM의 유형입니다. 예를 들면
v6e-1또는v6e-4입니다. - RESERVATION - TPU가 포함된 예약의 이름입니다.
예약을 사용하여 TPU VM을 만듭니다.
TPU VM에 연결합니다.
Qwen2-7B-instruct로 vLLM 실행
Hugging Face 토큰 및 모델 이름 변수를 설정합니다.
export HF_TOKEN="YOUR_HF_TOKEN" export MODEL_NAME="Qwen/Qwen2-7B-Instruct"TPU VM 내에서 분리 모드로 vLLM Docker 컨테이너를 실행하고 vLLM 서버를 시작합니다. 이 명령어는 공유 메모리 크기 10GB를 사용합니다.
서버 로그를 확인하여 실행 중인지 확인합니다.
vLLM 서버가 실행되면 다음과 비슷한 출력이 표시됩니다. 출력이 표시되면
CTRL+C를 눌러 터미널로 돌아갑니다.(APIServer pid=7) INFO: Started server process [7] (APIServer pid=7) INFO: Waiting for application startup. (APIServer pid=7) INFO: Application startup complete.
추론 요청 보내기
vLLM 서버가 실행되면 API에 요청을 보낼 수 있습니다. 자세한 내용은 vLLM API 참조 문서를 참고하세요.
curl을 사용하여 서버에 테스트 요청을 보냅니다.
응답은 JSON 형식으로 반환됩니다.
벤치마크 워크로드 실행
두 번째 터미널에서 실행 중인 서버에 대해 벤치마크를 실행할 수 있습니다.
컨테이너 내에서
datasets라이브러리를 설치합니다.컨테이너 내에서
vllm bench serve명령어를 실행합니다.
벤치마크 결과는 다음과 같습니다.
============ Serving Benchmark Result ============
Successful requests: 1000
Benchmark duration (s): 45.35
Total input tokens: 1024000
Total generated tokens: 126848
Request throughput (req/s): 22.05
Output token throughput (tok/s): 2797.15
Peak output token throughput (tok/s): 4258.00
Peak concurrent requests: 1000.00
Total Token throughput (tok/s): 25377.57
---------------Time to First Token----------------
Mean TTFT (ms): 21332.46
Median TTFT (ms): 21330.37
P99 TTFT (ms): 42436.47
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 37.36
Median TPOT (ms): 38.56
P99 TPOT (ms): 38.69
---------------Inter-token Latency----------------
Mean ITL (ms): 37.35
Median ITL (ms): 38.55
P99 ITL (ms): 39.43
==================================================
삭제
이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.
- 터미널에서 exit를 입력하여 TPU VM에서 연결을 해제합니다.
리소스 삭제
프로젝트를 삭제하여 모든 리소스를 삭제하거나 프로젝트는 유지하고 리소스를 삭제할 수 있습니다.
프로젝트 삭제
Google Cloud 프로젝트와 연결된 모든 리소스를 삭제하려면 다음을 실행하세요.
gcloud projects delete $PROJECT_ID
TPU 리소스 삭제
큐에 추가된 리소스
Cloud TPU 리소스를 삭제합니다. 다음 명령어는 --force 매개변수를 사용하여 큐에 추가된 리소스 요청과 TPU VM을 모두 삭제합니다.
예약
Cloud TPU VM을 삭제합니다. 다음 명령어를 사용하여 VM을 종료하고 TPU를 예약으로 다시 해제합니다.
다음 단계
- Cloud TPU의 vLLM에 대해 자세히 알아보세요.
- Cloud TPU 자세히 알아보기