이 튜토리얼에서는 v6e TPU VM에서 vLLM TPU 서빙 프레임워크 를 사용하여 Qwen/Qwen3-8B-Base 모델 을 서빙하는 방법을 보여줍니다.
목표
- 환경을 설정합니다.
- Qwen3-8B-Base로 vLLM을 실행합니다.
- 추론 요청을 보냅니다.
- 벤치마크 워크로드를 실행합니다.
- 삭제
비용
이 가이드에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
시작하기 전에
이 튜토리얼을 진행하기 전에 Cloud TPU 환경 설정 페이지의 안내를 따르세요. 이 안내에서는 프로젝트를 만들고 Cloud TPU를 사용하도록 구성하는 데 필요한 단계를 안내합니다. Google Cloud 기존 Google Cloud 프로젝트를 사용할 수도 있습니다. 기존 프로젝트를 사용하려면 프로젝트 만들기 단계를 건너뛰고 Cloud TPU를 사용하도록 환경 설정부터 시작하면 됩니다.Google Cloud
이 튜토리얼을 사용하려면 Hugging Face 액세스 토큰이 필요합니다. Hugging Face에서 무료 계정을 등록할 수 있습니다. 계정이 있으면 액세스 토큰을 생성합니다.
- Hugging Face 시작 페이지에서 계정 아바타를 클릭하고 액세스 토큰을 선택합니다.
- 액세스 토큰 페이지에서 새 토큰 만들기 를 클릭합니다.
- 읽기 토큰 유형을 선택하고 토큰 이름을 입력합니다.
- 액세스 토큰이 표시됩니다. 안전한 장소에 토큰을 저장합니다.
환경 설정
큐에 추가된 리소스
큐에 추가된 리소스 API를 사용하여 Cloud TPU v6e VM을 만듭니다. Qwen3-8B-Base의 경우 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을 만듭니다. Qwen3-8B-Base의 경우 v6e-1 TPU를 사용하는 것이 좋습니다. 먼저 환경 변수를 설정합니다.
변수를 설정합니다.
- PROJECT - 프로젝트의 이름입니다.
- TPU_NAME - 만들 TPU VM 머신의 이름입니다.
- ZONE - 새 VM을 만들 클라우드 영역입니다.
- TPU_TYPE - 만들 TPU VM의 유형입니다. 예를 들면
v6e-1또는v6e-4입니다. - RESERVATION - TPU가 포함된 예약의 이름입니다.
예약을 사용하여 TPU VM을 만듭니다.
TPU VM에 연결합니다.
Qwen3-8B-Base로 vLLM 실행
Hugging Face 토큰 및 모델 이름 변수를 설정합니다.
export HF_TOKEN="YOUR_HF_TOKEN" export MODEL_NAME="Qwen/Qwen3-8B-Base"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
Failed requests: 0
Benchmark duration (s): 73.97
Total input tokens: 1024000
Total generated tokens: 128000
Request throughput (req/s): 13.52
Output token throughput (tok/s): 1730.38
Peak output token throughput (tok/s): 2522.00
Peak concurrent requests: 1000.00
Total Token throughput (tok/s): 15573.42
---------------Time to First Token----------------
Mean TTFT (ms): 34834.97
Median TTFT (ms): 34486.19
P99 TTFT (ms): 70234.40
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 47.30
Median TPOT (ms): 48.57
P99 TPOT (ms): 48.60
---------------Inter-token Latency----------------
Mean ITL (ms): 47.31
Median ITL (ms): 53.49
P99 ITL (ms): 54.58
==================================================
삭제
이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.
- 터미널에서 exit를 입력하여 TPU VM에서 연결을 해제합니다.
리소스 삭제
모든 리소스를 삭제하는 프로젝트를 삭제하거나 프로젝트를 유지하고 리소스를 삭제할 수 있습니다.
프로젝트 삭제
프로젝트 및 연결된 모든 리소스를 삭제하려면 다음을 실행합니다. Google Cloud
gcloud projects delete $PROJECT_ID
TPU 리소스 삭제
큐에 추가된 리소스
Cloud TPU 리소스를 삭제합니다. 다음 명령어는 --force 매개변수를 사용하여 큐에 추가된 리소스 요청과 TPU VM을 모두 삭제합니다.
예약
Cloud TPU VM을 삭제합니다. 다음 명령어를 사용하여 VM을 종료하고 TPU를 예약으로 다시 해제합니다.