このチュートリアルでは、v6e TPU VM で vLLM TPU サービング フレームワーク を使用して Qwen/Qwen2-7B-Instruct モデル をサービングします。
目標
- 環境をセットアップする。
- Qwen2-7B-Instruct で vLLM を実行する。
- 推論リクエストを送信する。
- ベンチマーク ワークロードを実行する。
- クリーンアップする。
費用
このチュートリアルでは、Google Cloud の課金対象となる以下のコンポーネントを使用します。
始める前に
このチュートリアルを行う前に、 Cloud TPU 環境を設定するの手順に沿って操作してください。この 手順では、プロジェクトを作成し、Cloud TPU を使用するように構成するために必要な手順について説明します。 Google Cloud既存の Google Cloud プロジェクトを使用することもできます。その場合は、プロジェクトを作成する手順をスキップして、Cloud TPU を使用するように環境をセットアップするから開始できます。Google Cloud
このチュートリアルを使用するには、Hugging Face アクセス トークンが必要です。Hugging Faceで無料アカウントに登録できます 。アカウントを取得したら、アクセス トークンを生成します。
- [Welcome to Hugging Face] ページで、 アカウントのアバターをクリックし、[**Access tokens**] を選択します。
- [Access Tokens] ページで、[Create new token] をクリックします。
- [Read] トークンタイプを選択し、トークンの名前を入力します。
- アクセス トークンが表示されます。トークンは安全な場所に保存してください。
環境の設定
キューに格納されたリソース
キューに格納されたリソース 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 サーバーを起動します。このコマンドでは、共有メモリサイズ 10 GB を使用します。
サーバーログを確認して、実行されていることを確認します。
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 形式で返されます。
ベンチマーク ワークロードを実行する
2 つ目のターミナルから、実行中のサーバーに対してベンチマークを実行できます。
コンテナ内で、
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 を予約に戻します。