2.6. モデルサービングランタイム
モデルサービングランタイムを使用すると、シングルモデルサービングプラットフォームでモデルを提供できます。モデルサービングランタイムの設定は、ServingRuntime および InferenceService カスタムリソース定義 (CRD) によって定義されます。
2.6.1. ServingRuntime
ServingRuntime CRD は、モデルをデプロイおよび管理するための環境であるサービスランタイムを作成します。さまざまな形式のモデルを動的にロードおよびアンロードする Pod のテンプレートを作成し、さらに推論リクエスト用のサービスエンドポイントを公開します。
次の YAML 設定は、vLLM ServingRuntime for KServe の例です。この設定には、さまざまなフラグ、環境変数、コマンドライン引数が含まれています。
apiVersion: serving.kserve.io/v1alpha1 kind: ServingRuntime metadata: annotations: opendatahub.io/recommended-accelerators: '["nvidia.com/gpu"]' 1 openshift.io/display-name: vLLM ServingRuntime for KServe 2 labels: opendatahub.io/dashboard: "true" name: vllm-runtime spec: annotations: prometheus.io/path: /metrics 3 prometheus.io/port: "8080" 4 containers : - args: - --port=8080 - --model=/mnt/models 5 - --served-model-name={{.Name}} 6 command: 7 - python - '-m' - vllm.entrypoints.openai.api_server env: - name: HF_HOME value: /tmp/hf_home image: 8 quay.io/modh/vllm@sha256:8a3dd8ad6e15fe7b8e5e471037519719d4d8ad3db9d69389f2beded36a6f5b21 name: kserve-container ports: - containerPort: 8080 protocol: TCP multiModel: false 9 supportedModelFormats: 10 - autoSelect: true name: vLLM
- 1
- ランタイムで使用する推奨アクセラレーター。
- 2
- サービングランタイムの表示に使用する名前。
- 3
- 監視用のメトリクスをスクレイピングするために Prometheus が使用するエンドポイント。
- 4
- 監視用のメトリクスをスクレイピングするために Prometheus が使用するポート。
- 5
- ランタイムコンテナー内でモデルファイルが保存される場所へのパス。
- 6
- ランタイムコンテナー仕様内の
{{.Name}}
テンプレート変数で指定されたモデル名をランタイム環境に渡します。{{.Name}}
変数は、InferenceService
メタデータオブジェクトのspec.predictor.name
フィールドにマップされます。 - 7
- ランタイムコンテナーを起動するエントリーポイントコマンド。
- 8
- サービングランタイムによって使用されるランタイムコンテナーイメージ。このイメージは、使用するアクセラレーターの種類によって異なります。
- 9
- ランタイムをシングルモデルサービングに使用することを指定します。
- 10
- ランタイムでサポートされるモデル形式を指定します。
2.6.2. InferenceService
InferenceService CRD は、推論クエリーを処理し、それをモデルに渡して、推論出力を返すサーバーまたは推論サービスを作成します。
推論サービスは次のアクションも実行します。
- モデルの場所と形式を指定します。
- モデルを提供するために使用するサービスランタイムを指定します。
- gRPC または REST 推論のパススルールートを有効にします。
- デプロイされたモデルの HTTP または gRPC エンドポイントを定義します。
次の例は、vLLM ランタイムを使用して Granite モデルをデプロイするときに生成される InferenceService YAML 設定ファイルを示しています。
apiVersion: serving.kserve.io/v1beta1 kind: InferenceService metadata: annotations: openshift.io/display-name: granite serving.knative.openshift.io/enablePassthrough: 'true' sidecar.istio.io/inject: 'true' sidecar.istio.io/rewriteAppHTTPProbers: 'true' name: granite labels: opendatahub.io/dashboard: 'true' spec: predictor: maxReplicas: 1 minReplicas: 1 model: modelFormat: name: vLLM name: '' resources: limits: cpu: '6' memory: 24Gi nvidia.com/gpu: '1' requests: cpu: '1' memory: 8Gi nvidia.com/gpu: '1' runtime: vLLM ServingRuntime for KServe storage: key: aws-connection-my-storage path: models/granite-7b-instruct/ tolerations: - effect: NoSchedule key: nvidia.com/gpu operator: Exists
関連情報