このガイドでは、Llama 3.1 8B model のデプロイを例に、Serverless Endpoint をゼロから作成する方法を紹介します。
Step 1: コンテナイメージを準備する
事前にランタイム環境を Docker イメージとしてパッケージ化し、イメージリポジトリにアップロードする必要があります。現在、Novita AI は、「パブリックイメージリポジトリ」 と 「プライベートイメージリポジトリ」(イメージリポジトリのアクセス認証情報を含む)の指定をサポートしています。
Llama 3.1 8B model を提供するために、vLLM 公式イメージリポジトリ vllm/vllm-openai:latest を使用します。このイメージアドレスはそのまま使用できます。
Step 2: コンソールに移動する
Serverless Console に移動し、適切な GPU コンテナインスタンス仕様を選択して、「Create Endpoint」 をクリックします。
現在サポートされているインスタンス仕様は RTX 4090 24GB のみです。今後、より多くの選択肢が段階的に利用可能になる予定です。公式アップデートをお待ちください。
Step 3: Serverless Endpoint を設定する
ここでは、パブリックイメージ vllm/vllm-openai:latest を例として設定します。
- Endpoint Name: Endpoint を一意に識別するために使用されます。システムはデフォルトで名前を生成しますが、自分で指定することもできます。
- App Name: アプリケーション名は Endpoint URL の一部です。これは任意であり、カスタマイズをサポートしています。使用できるのは小文字、数字、ハイフンのみです。指定しない場合、システムが自動的に生成します。
- Worker Configuration
- Workers Min: 保持する Workers の最小数です。0 に設定でき、その場合、サービスにリクエストがないときは Workers は保持されません。0 に設定すると、その後のリクエストにすばやく応答できない可能性があることに注意してください。迅速な応答時間が必要なシナリオでは慎重に設定してください。
- Workers Max: 保持する Workers の最大数です。サービスのリクエスト量が増加し、自動スケーリングメカニズムがトリガーされると、Workers の数が増加します。この設定により Workers の最大数が制限され、コスト管理に役立ちます。
- Idle Timeout (seconds): 自動スケーリングメカニズムによって Worker がオフラインになる際、プラットフォームは、後続のリクエスト増加にすばやく対応できるよう、指定された時間だけ Worker を保持します。この時間についてもプラットフォームから課金されることに注意してください。
- Max Concurrency: 各 Worker が処理できる同時リクエストの最大数です。同時実行数が最大値を超えると、リクエストは他の Workers に振り分けられます。すべての Workers が完全に使用中の場合、リクエストは実行待ちキューに入ります。
- GPUs/Worker: 各 Worker が占有する GPU の数です。
- CUDA Version: CUDA バージョンの指定をサポートします。
- Scale Policy:
- Queue Delay: キュー内のリクエストの待機時間に基づいて Workers の数を調整します。「Queue Delay Time (seconds)」を設定する必要があります。キュー内のリクエストの待機時間がこの値を超えると、自動スケーリングがトリガーされます。この値未満の場合、自動スケーリングによってスケールダウンがトリガーされます(前に設定した「Idle Timeout (seconds)」と組み合わせて、Worker がオフラインになる具体的な時間が決定されます)。
- Request Count: キュー内のリクエスト数に基づいて Workers の数を調整します。「Queue Max Request Count」を設定する必要があります。キュー内のリクエスト数がこの値を超えると、自動スケーリングがトリガーされます。この値未満の場合、自動スケーリングによってスケールダウンがトリガーされます(前に設定した「Idle Timeout (seconds)」と組み合わせて、Worker がオフラインになる具体的な時間が決定されます)。
- Image Configuration:
- Container Image: イメージリポジトリのアドレスです。例:
vllm/vllm-openai:latest。
- Container Registry Credentials: プライベートイメージリポジトリを指定する場合、アクセス認証情報を設定する必要があります。Settings - Container Registry Auth から設定してください。
- HTTP Port: Workers によって公開される HTTP ポートです。ロードバランサーはリクエストを Workers のこのポートに転送します。このケースでは、たとえば
8080 です。
- Container Start Command: コンテナ起動時に実行されるコマンドです。例:
--model meta-llama/Llama-3.1-8B-Instruct --max-model-len 4096。
- Storage Configuration: ここでは、コンテナディスク、ボリュームディスク、ネットワークボリュームを設定できます。現在、コンテナディスクとボリュームディスクのサイズは固定です。今後、より多くの選択肢が段階的に利用可能になる予定です。公式アップデートをお待ちください。
- Others:
- Health Check Path: 組み込みの load balancer は、このパスを通じてヘルスチェックを実行します。返されたステータスコードが
200 であるかどうかに基づいて、Worker にリクエストを転送するかを判断します。例: /health。
- Environment Variables: ここでは、サービスが依存する環境変数を設定できます。例:
HUGGING_FACE_HUB_TOKEN={Your Hugging Face Access Token (with read permission)}。
設定が正しいことを確認したら、「Deploy」 をクリックして作成プロセスを完了します。
Step 4: デプロイ済みの Llama 3 8B Model Service にアクセスする
作成した Serverless Endpoint は、Serverless Console で確認できます。Endpoint のステータスが 「Serving」 に変わり、少なくとも 1 つの Worker が 「Running」 状態になったら、「Copy」 ボタンをクリックして、モデルサービスにアクセスするための URL をコピーします。
また、以下のように curl コマンドを使用してサービスにアクセスできます。
Next Step
次に、先ほど作成した serverless endpoint を確認および変更する方法については、Manage Serverless Endpoint のドキュメントを参照してください。