モデルのサービング (提供)


Red Hat OpenShift AI Cloud Service 1

Red Hat OpenShift AI Cloud Service でモデルを提供する

概要

Red Hat OpenShift AI Cloud Service でモデルを提供します。トレーニングされたモデルを提供すると、それらをテストしてインテリジェントなアプリケーションに実装できるようになります。

第1章 モデルサービングについて

モデルをサービングする場合は、トレーニング済みのモデルをクエリー用に Red Hat OpenShift AI にアップロードします。これにより、トレーニング済みのモデルをインテリジェントアプリケーションに統合できるようになります。

モデルを S3 互換のオブジェクトストレージ、永続ボリューム要求、または Open Container Initiative (OCI) イメージにアップロードできます。その後、プロジェクトワークベンチからモデルにアクセスしてトレーニングできます。モデルをトレーニングした後、モデルサービングプラットフォームを使用してモデルをサービングまたはデプロイできます。

モデルをサービングまたはデプロイすると、モデルはサービス、つまりモデルランタイムサーバーとして利用でき、API を使用してアクセスできるようになります。その後、ダッシュボードからデプロイされたモデルの推論エンドポイントにアクセスし、API 呼び出しで提供されたデータ入力を基にした予測を確認できます。API を使用したモデルのクエリーは、モデル推論とも呼ばれます。

次のいずれかのモデルサービングプラットフォームでモデルをサービングできます。

  • シングルモデルサービングプラットフォーム
  • マルチモデルサービングプラットフォーム
  • NVIDIA NIM モデルサービングプラットフォーム

選択するモデルサービングプラットフォームは、ビジネスニーズによって異なります。

  • 各モデルを独自のランタイムサーバーにデプロイする場合、またはサーバーレスデプロイメントを使用する場合は、シングルモデルサービングプラットフォーム を選択します。実稼働環境での使用には、シングルモデルサービングプラットフォームが推奨されます。
  • 1 つのランタイムサーバーのみを使用して複数のモデルをデプロイする場合は、マルチモデルサービングプラットフォーム を選択します。このオプションは、1,000 を超える小規模および中規模のモデルをデプロイし、リソースの消費を軽減する場合に最適です。
  • NVIDIA Inference Microservices (NIM) を使用してモデルをデプロイする場合は、NVIDIA NIM モデルサービングプラットフォーム を選択します。

1.1. シングルモデルサービングプラットフォーム

シングルモデルサービングプラットフォーム上の専用モデルサービングから各モデルをデプロイできます。専用のモデルサーバーからモデルをデプロイすると、リソースの増加を必要とするモデルの展開、監視、拡張、保守に役立ちます。このモデルサービングプラットフォームは、大規模なモデルを提供するのに最適です。シングルモデルサービングプラットフォームは、KServe コンポーネントに基づいています。

シングルモデルサービングプラットフォームは、次のようなユースケースに役立ちます。

  • 大規模言語モデル (LLM)
  • 生成 AI

シングルモデルサービングプラットフォームの設定の詳細は、シングルモデルサービングプラットフォームのインストール を参照してください。

1.2. マルチモデルサービングプラットフォーム

マルチモデルサービングプラットフォームでは、同じモデルサーバーから複数のモデルをデプロイできます。デプロイされた各モデルはサーバーリソースを共有します。同じモデルサーバーから複数のモデルをデプロイすることで、コンピュートリソースや Pod の数が限られている OpenShift クラスター上で効率的に運用できます。このモデル提供プラットフォームは、小規模および中規模のモデルを大量にサービングするのに最適です。マルチモデルサービングプラットフォームは、ModelMesh コンポーネントに基づいています。

マルチモデルサービングプラットフォームの設定の詳細は、マルチモデルサービングプラットフォームのインストール を参照してください。

1.3. NVIDIA NIM モデルサービングプラットフォーム

NVIDIA NIM モデルサービングプラットフォームで NVIDIA Inference Microservices (NIM) を使用してモデルをデプロイできます。

NVIDIA AI Enterprise の一部である NVIDIA NIM は、クラウド、データセンター、ワークステーションをまたいで推論を実行する高性能 AI モデルの、セキュアで信頼性の高いデプロイメントのために設計されたマイクロサービスのセットです。

NVIDIA NIM 推論サービスは、次のようなユースケースに役立ちます。

  • NVIDIA によって最適化された GPU アクセラレーションコンテナー推論モデルの使用
  • 仮想スクリーニング、コンテンツ生成、アバター作成のための生成 AI のデプロイ

NVIDIA NIM モデルサービングプラットフォームは、シングルモデルサービングプラットフォームに基づいています。NVIDIA NIM モデルサービングプラットフォームを使用するには、まずシングルモデルサービングプラットフォームをインストールする必要があります。詳細は、シングルモデルサービングプラットフォームのインストール を参照してください。

第2章 シングルモデルサービングプラットフォームへのモデルのサービング

Red Hat OpenShift AI には、大規模言語モデル (LLM) などの大規模モデルをデプロイするために、KServe コンポーネントをベースとした シングルモデルサービングプラットフォーム が組み込まれています。各モデルが独自のモデルサーバーからデプロイされるため、シングルモデルサービングプラットフォームは、多くのリソースを必要とする大規模なモデルのデプロイ、監視、スケーリング、および保守に役立ちます。

2.1. シングルモデルサービングプラットフォームについて

OpenShift AI には、大規模言語モデル (LLM) などの大規模モデルをデプロイするために、KServe コンポーネントをベースとしたシングルモデルサービングプラットフォームが組み込まれています。各モデルが独自のモデルサーバー上にデプロイされるため、シングルモデルサービングプラットフォームは、多くのリソースを必要とする大規模なモデルのデプロイ、監視、スケーリング、および保守に役立ちます。

2.2. コンポーネント

  • KServe: あらゆるタイプのモデルのモデルサービングをオーケストレーションする Kubernetes カスタムリソース定義 (CRD)。KServe には、指定されたモデルサーバータイプの読み込みを実装するモデルサービングランタイムが含まれます。KServe は、デプロイメントオブジェクト、ストレージアクセス、およびネットワーク設定のライフサイクルも処理します。
  • Red Hat OpenShift Serverless: モデルのサーバーレスデプロイメントを可能にするクラウドネイティブ開発モデル。OpenShift Serverless は、オープンソースの Knative プロジェクトをベースにしています。
  • Red Hat OpenShift Service Mesh: トラフィックフローを管理し、アクセスポリシーを適用するサービスメッシュネットワーキングレイヤー。OpenShift Service Mesh は、オープンソースの Istio プロジェクトをベースにしています。

2.3. インストールオプション

シングルモデルサービングプラットフォームをインストールするには、次のオプションがあります。

自動インストール

OpenShift クラスターに ServiceMeshControlPlane または KNativeServing リソースを作成していない場合は、Red Hat OpenShift AI Operator を設定して KServe をインストールし、その依存関係を設定できます。

自動インストールの詳細は、KServe の自動インストールの設定 を参照してください。

手動インストール

OpenShift クラスターに ServiceMeshControlPlane または KNativeServing リソースをすでに作成している場合は、Red Hat OpenShift AI Operator を設定して KServe をインストールし、その依存関係を設定することは できません。この状況では、KServe を手動でインストールする必要があります。

手動インストールの詳細は、KServe の手動インストール を参照してください。

2.4. 認可

シングルモデルサービングプラットフォームの認可プロバイダーとして Authorino を追加できます。認可プロバイダーを追加すると、プラットフォームにデプロイするモデルに対してトーク認証を有効にできます。これにより、認可されたユーザーのみがモデルに対して推論リクエストを行うことができます。

シングルモデルサービングプラットフォームに Authorino を認可プロバイダーとして追加するには、次のオプションがあります。

  • クラスター上でシングルモデルサービングプラットフォームの自動インストールが可能な場合は、自動インストールプロセスの一部として Authorino を含めることができます。
  • シングルモデルサービングプラットフォームを手動でインストールする必要がある場合は、Authorino も手動で設定する必要があります。

シングルモデルサービングプラットフォームのインストールオプションを選択する方法は、インストールオプション を参照してください。

2.5. モニタリング

シングルモデルサービングプラットフォームの監視を設定し、Prometheus を使用して、プリインストールされた各モデルサービングランタイムのメトリクスをスクレイピングできます。

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
Copy to Clipboard Toggle word wrap
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-runtime
      storage:
        key: aws-connection-my-storage
        path: models/granite-7b-instruct/
    tolerations:
      - effect: NoSchedule
        key: nvidia.com/gpu
        operator: Exists
Copy to Clipboard Toggle word wrap

2.7. サポート対象のモデルサービングランタイム

OpenShift AI には、いくつかのプリインストールされたモデルサービングランタイムが含まれています。プリインストールされたモデルサービングランタイムを使用すると、ランタイムを自分で変更したり定義したりすることなく、モデルの提供を開始できます。モデルをサポートするために、カスタムランタイムを追加することもできます。

カスタムランタイムの追加に関するサポートは、シングルモデルサービングプラットフォーム用のカスタムモデルサービングランタイムの追加 を参照してください。

Expand
表2.1 モデルサービングランタイム
名前説明エクスポートされたモデル形式

Caikit Text Generation Inference Server (Caikit-TGIS) ServingRuntime for KServe (1)

Caikit 形式のモデルを提供するための複合ランタイム

Caikit テキスト生成

Caikit Standalone ServingRuntime for KServe (2)

埋め込みタスク用の Caikit 埋め込み形式でモデルを提供するためのランタイム

Caikit の埋め込み

OpenVINO Model Server

Intel アーキテクチャーに最適化されたモデルを提供するためのスケーラブルで高性能なランタイム

PyTorch、TensorFlow、OpenVINO IR、PaddlePaddle、MXNet、Caffe、Kaldi

[非推奨] Text Generation Inference Server (TGIS) Standalone ServingRuntime for KServe (3)

TGI 対応モデルを提供するためのランタイム

PyTorch モデル形式

vLLM NVIDIA GPU ServingRuntime for KServe

NVIDIA GPU アクセラレーターをサポートする大規模言語モデル向けの高スループットでメモリー効率の高い推論およびサービングランタイム

サポート対象モデル

vLLM Intel Gaudi Accelerator ServingRuntime for KServe

Intel Gaudi アクセラレーターをサポートする、高スループットでメモリー効率に優れた推論およびサービングランタイム

サポート対象モデル

vLLM AMD GPU ServingRuntime for KServe

AMD GPU アクセラレーターをサポートする、高スループットでメモリー効率に優れた推論およびサービングランタイム

サポート対象モデル

vLLM CPU ServingRuntime for KServe

IBM Power (ppc64le) および IBM Z (s390x) をサポートする、高スループットでメモリー効率に優れた推論およびサービングランタイム

サポート対象モデル

  1. 複合 Caikit-TGIS ランタイムは、Caikit および Text Generation Inference Server (TGIS) に基づいています。このランタイムを使用するには、モデルを Caikit 形式に変換する必要があります。例は、caikit-tgis-serving リポジトリーの Converting Hugging Face Hub models to Caikit format を参照してください。
  2. Caikit Standalone ランタイムは Caikit NLP に基づいています。このランタイムを使用するには、モデルを Caikit 埋め込み形式に変換する必要があります。例は、Tests for text embedding module を参照してください。
  3. Text Generation Inference Server (TGIS) Standalone ServingRuntime for KServe は非推奨となりました。詳細は、Red Hat OpenShift AI リリースノート を参照してください。
Expand
表2.2 デプロイメント要件
名前デフォルトプロトコル追加プロトコルモデルメッシュのサポートシングルノードの OpenShift サポートデプロイメントモード

Caikit Text Generation Inference Server (Caikit-TGIS) ServingRuntime for KServe

REST

gRPC

いいえ

はい

raw および serverless

Caikit Standalone ServingRuntime for KServe

REST

gRPC

いいえ

はい

raw および serverless

OpenVINO Model Server

REST

なし

はい

はい

raw および serverless

[非推奨] Text Generation Inference Server (TGIS) Standalone ServingRuntime for KServe

gRPC

なし

いいえ

はい

raw および serverless

vLLM NVIDIA GPU ServingRuntime for KServe

REST

なし

いいえ

はい

raw および serverless

vLLM Intel Gaudi Accelerator ServingRuntime for KServe

REST

なし

いいえ

はい

raw および serverless

vLLM AMD GPU ServingRuntime for KServe

REST

なし

いいえ

はい

raw および serverless

vLLM CPU ServingRuntime for KServe[1]

REST

なし

いいえ

はい

Raw

[1] IBM Z および IBM Power アーキテクチャーを使用している場合は、標準デプロイメントモードでのみモデルをデプロイできます。



[1] vLLM CPU ServingRuntime for KServe

2.8. テストおよび検証済みのモデルサービングランタイム

テストおよび検証済みのランタイムは、OpenShift AI の特定のバージョンに対してテストおよび検証されたモデルサービングランタイムのコミュニティーバージョンです。

Red Hat は、OpenShift AI の新しいバージョンがリリースされるたびに、テストおよび検証済みのランタイムの最新バージョンをテストします。テストおよび検証済みのランタイムの新しいバージョンが OpenShift AI リリースサイクルの途中でリリースされた場合、今後のリリースでテストおよび検証されます。

注記

テストおよび検証済みのランタイムは、Red Hat によって直接サポートされません。お客様が責任を持って追加するテスト済みおよび検証済みのランタイムを使用するライセンスがあることを確認して正しく設定および保守するようにしてください。

詳細は、OpenShift AI でテストおよび検証されたランタイム を参照してください。

Expand
表2.3 モデルサービングランタイム
名前説明エクスポートされたモデル形式

NVIDIA Triton Inference Server

アプリケーションにおける高速かつスケーラブルな AI を実現するオープンソースの推論サービスソフトウェア。

TensorRT、TensorFlow、PyTorch、ONNX、OpenVINO、Python、RAPIDS FIL など

Seldon MLServer

機械学習モデルのデプロイを簡素化するように設計されたオープンソースの推論サーバー。

Scikit-Learn (sklearn)、XGBoost、LightGBM、CatBoost、HuggingFace、および MLflow

Expand
表2.4 デプロイメント要件
名前デフォルトプロトコル追加プロトコルモデルメッシュのサポートシングルノードの OpenShift サポートデプロイメントモード

NVIDIA Triton Inference Server

gRPC

REST

はい

はい

raw および serverless

Seldon MLServer

gRPC

REST

いいえ

はい

raw および serverless

注記

Seldon の alibi-detect および alibi-explain ライブラリーは、Business Source License 1.1 (BSL 1.1) に基づいて提供されています。これらのライブラリーは、認定済みの Seldon MLServer ランタイムの一部として、Red Hat によってテスト、検証、またはサポートされているものではありません。これらのライブラリーを、ランタイムを使用した実稼働環境で使用することは推奨しません。

2.9. 推論エンドポイント

これらの例は、推論エンドポイントを使用してモデルをクエリーする方法を示しています。

注記

モデルのデプロイ時にトークン認証を有効にした場合は、Authorization ヘッダーを追加してトークン値を指定します。

2.9.1. Caikit TGIS ServingRuntime for KServe

  • :443/api/v1/task/text-generation
  • :443/api/v1/task/server-streaming-text-generation

コマンドの例

curl --json '{"model_id": "<model_name__>", "inputs": "<text>"}' https://<inference_endpoint_url>:443/api/v1/task/server-streaming-text-generation -H 'Authorization: Bearer <token>'
Copy to Clipboard Toggle word wrap

2.9.2. Caikit Standalone ServingRuntime for KServe

複数のモデルを提供している場合は、/info/models または :443 caikit.runtime.info.InfoService/GetModelsInfo をクエリーして、提供されているモデルのリストを表示できます。

REST エンドポイント

  • /api/v1/task/embedding
  • /api/v1/task/embedding-tasks
  • /api/v1/task/sentence-similarity
  • /api/v1/task/sentence-similarity-tasks
  • /api/v1/task/rerank
  • /api/v1/task/rerank-tasks
  • /info/models
  • /info/version
  • /info/runtime

gRPC エンドポイント

  • :443 caikit.runtime.Nlp.NlpService/EmbeddingTaskPredict
  • :443 caikit.runtime.Nlp.NlpService/EmbeddingTasksPredict
  • :443 caikit.runtime.Nlp.NlpService/SentenceSimilarityTaskPredict
  • :443 caikit.runtime.Nlp.NlpService/SentenceSimilarityTasksPredict
  • :443 caikit.runtime.Nlp.NlpService/RerankTaskPredict
  • :443 caikit.runtime.Nlp.NlpService/RerankTasksPredict
  • :443 caikit.runtime.info.InfoService/GetModelsInfo
  • :443 caikit.runtime.info.InfoService/GetRuntimeInfo
注記

デフォルトでは、Caikit Standalone ランタイムは REST エンドポイントを公開します。gRPC プロトコルを使用するには、カスタム Caikit Standalone ServingRuntime を手動でデプロイします。詳細は、シングルモデルサービングプラットフォーム用のカスタムモデルサービングランタイムの追加 を参照してください。

サンプルのマニフェストは caikit-tgis-serving GitHub リポジトリー で入手できます。

REST

curl -H 'Content-Type: application/json' -d '{"inputs": "<text>", "model_id": "<model_id>"}' <inference_endpoint_url>/api/v1/task/embedding -H 'Authorization: Bearer <token>'
Copy to Clipboard Toggle word wrap

gRPC

grpcurl -d '{"text": "<text>"}' -H \"mm-model-id: <model_id>\" <inference_endpoint_url>:443 caikit.runtime.Nlp.NlpService/EmbeddingTaskPredict -H 'Authorization: Bearer <token>'
Copy to Clipboard Toggle word wrap

2.9.3. TGIS Standalone ServingRuntime for KServe

重要

Text Generation Inference Server (TGIS) Standalone ServingRuntime for KServe は非推奨となりました。詳細は、OpenShift AI リリースノート を参照してください。

  • :443 fmaas.GenerationService/Generate
  • :443 fmaas.GenerationService/GenerateStream

    注記

    TGIS スタンドアロンランタイムのエンドポイントをクエリーするには、OpenShift AI text-generation-inference リポジトリーの proto ディレクトリーにあるファイルもダウンロードする必要があります。

コマンドの例

grpcurl -proto text-generation-inference/proto/generation.proto -d '{"requests": [{"text":"<text>"}]}' -H 'Authorization: Bearer <token>' -insecure <inference_endpoint_url>:443 fmaas.GenerationService/Generate
Copy to Clipboard Toggle word wrap

2.9.4. OpenVINO Model Server

  • /v2/models/<model-name>/infer

コマンドの例

curl -ks <inference_endpoint_url>/v2/models/<model_name>/infer -d '{ "model_name": "<model_name>", "inputs": [{ "name": "<name_of_model_input>", "shape": [<shape>], "datatype": "<data_type>", "data": [<data>] }]}' -H 'Authorization: Bearer <token>'
Copy to Clipboard Toggle word wrap

2.9.5. vLLM NVIDIA GPU ServingRuntime for KServe

  • :443/version
  • :443/docs
  • :443/v1/models
  • :443/v1/chat/completions
  • :443/v1/completions
  • :443/v1/embeddings
  • :443/tokenize
  • :443/detokenize

    注記
    • vLLM ランタイムは OpenAI REST API と互換性があります。vLLM ランタイムがサポートするモデルのリストは、サポートされるモデル を参照してください。
    • vLLM で embeddings 推論エンドポイントを使用するには、vLLM でサポートされている embeddings モデルを使用する必要があります。生成モデルでは embeddings エンドポイントは使用できません。詳細は、vLLM でサポートされている embeddings モデル を参照してください。
    • vLLM v0.5.5 以降では、/v1/chat/completions エンドポイントを使用してモデルをクエリーするときに、チャットテンプレートを提供する必要があります。モデルに定義済みのチャットテンプレートが含まれていない場合は、例に示すように、chat-template コマンドラインパラメーターを使用して、カスタム vLLM ランタイムでチャットテンプレートを指定できます。<CHAT_TEMPLATE> をテンプレートのパスに置き換えます。

      containers:
        - args:
            - --chat-template=<CHAT_TEMPLATE>
      Copy to Clipboard Toggle word wrap

      利用可能なチャットテンプレートは、こちら にある .jinja ファイルとして、または /app/data/template 配下の vLLM イメージで使用できます。詳細は、チャットテンプレート を参照してください。

    上記のパスで示されているように、シングルモデルサービングプラットフォームは、OpenShift ルーターの HTTPS ポート (通常はポート 443) を使用して、外部 API リクエストを処理します。

コマンドの例

curl -v https://<inference_endpoint_url>:443/v1/chat/completions -H "Content-Type: application/json" -d '{ "messages": [{ "role": "<role>", "content": "<content>" }] -H 'Authorization: Bearer <token>'
Copy to Clipboard Toggle word wrap

2.9.6. vLLM Intel Gaudi Accelerator ServingRuntime for KServe

vLLM NVIDIA GPU ServingRuntime for KServe を参照してください。

2.9.7. vLLM AMD GPU ServingRuntime for KServe

vLLM NVIDIA GPU ServingRuntime for KServe を参照してください。

2.9.8. NVIDIA Triton Inference Server

REST エンドポイント

  • v2/models/[/versions/<model_version>]/infer
  • v2/models/<model_name>[/versions/<model_version>]
  • v2/health/ready
  • v2/health/live
  • v2/models/<model_name>[/versions/]/ready
  • v2
注記

ModelMesh は次の REST エンドポイントをサポートしていません。

  • v2/health/live
  • v2/health/ready
  • v2/models/<model_name>[/versions/]/ready

コマンドの例

curl -ks <inference_endpoint_url>/v2/models/<model_name>/infer -d '{ "model_name": "<model_name>", "inputs": [{ "name": "<name_of_model_input>", "shape": [<shape>], "datatype": "<data_type>", "data": [<data>] }]}' -H 'Authorization: Bearer <token>'
Copy to Clipboard Toggle word wrap

gRPC エンドポイント

  • :443 inference.GRPCInferenceService/ModelInfer
  • :443 inference.GRPCInferenceService/ModelReady
  • :443 inference.GRPCInferenceService/ModelMetadata
  • :443 inference.GRPCInferenceService/ServerReady
  • :443 inference.GRPCInferenceService/ServerLive
  • :443 inference.GRPCInferenceService/ServerMetadata

コマンドの例

grpcurl -cacert ./openshift_ca_istio_knative.crt -proto ./grpc_predict_v2.proto -d @ -H "Authorization: Bearer <token>" <inference_endpoint_url>:443 inference.GRPCInferenceService/ModelMetadata
Copy to Clipboard Toggle word wrap

2.9.9. Seldon MLServer

REST エンドポイント

  • v2/models/[/versions/<model_version>]/infer
  • v2/models/<model_name>[/versions/<model_version>]
  • v2/health/ready
  • v2/health/live
  • v2/models/<model_name>[/versions/]/ready
  • v2

コマンドの例

curl -ks <inference_endpoint_url>/v2/models/<model_name>/infer -d '{ "model_name": "<model_name>", "inputs": [{ "name": "<name_of_model_input>", "shape": [<shape>], "datatype": "<data_type>", "data": [<data>] }]}' -H 'Authorization: Bearer <token>'
Copy to Clipboard Toggle word wrap

gRPC エンドポイント

  • :443 inference.GRPCInferenceService/ModelInfer
  • :443 inference.GRPCInferenceService/ModelReady
  • :443 inference.GRPCInferenceService/ModelMetadata
  • :443 inference.GRPCInferenceService/ServerReady
  • :443 inference.GRPCInferenceService/ServerLive
  • :443 inference.GRPCInferenceService/ServerMetadata

コマンドの例

grpcurl -cacert ./openshift_ca_istio_knative.crt -proto ./grpc_predict_v2.proto -d @ -H "Authorization: Bearer <token>" <inference_endpoint_url>:443 inference.GRPCInferenceService/ModelMetadata
Copy to Clipboard Toggle word wrap

2.10. KServe デプロイメントモードについて

モデルは、advanced または standard デプロイメントモードのいずれかでデプロイできます。

advanced デプロイメントモードでは、Knative Serverless が使用されます。デフォルトでは、KServe は Red Hat OpenShift Serverless および Red Hat OpenShift Service Mesh と統合され、シングルモデルサービングプラットフォームにモデルをデプロイします。Red Hat Serverless はオープンソースの Knative プロジェクトに基づいており、Red Hat OpenShift Serverless Operator が必要です。

または、KServe RawDeployment モードを使用し、Red Hat OpenShift Serverless Operator、Red Hat OpenShift Service Mesh、または Authorino を必要としない standard デプロイメントモードを使用することもできます。

KServe を advanced デプロイメントモードに設定すると、advanced および standard のデプロイメントモードでモデルを提供するようにデータサイエンスプロジェクトを設定できます。しかし、KServe を standard デプロイメントモードのみに設定した場合は、standard デプロイメントモードしか使用できません。

これらの各デプロイメントモードには、それぞれメリットとデメリットがあります。

2.10.1. advanced モード

メリット:

  • リクエスト量に基づいて自動スケーリングを有効にします。

    • 着信リクエストを受信すると、リソースは自動的にスケールアップされます。
    • リソースの使用を最適化し、ピーク時のパフォーマンスを維持します。
  • Knative を使用してゼロへのスケールダウンとゼロからのスケールダウンをサポートします。

    • 着信リクエストがない場合にリソースを完全にスケールダウンできます。
    • アイドル状態のリソースを実行しないことでコストを節約します。

デメリット:

  • カスタマイズの制限:

    • Serverless は Knative によってサポートされており、複数のボリュームをマウントする場合など、同じ設計上の選択を暗黙的に継承します。
  • スケーリングのために Knative に依存:

    • 従来のスケーリング方法と比較して、セットアップと管理がさらに複雑になります。
  • クラスタースコープのコンポーネント:

    • クラスターに Serverless がすでに設定されている場合は、OpenShift AI で動作するようにクラスターを手動で設定する必要があります。

2.10.2. standard モード

メリット:

  • Red Hat Serverless、Red Hat Service Mesh、Authorino などの追加の依存関係なしで、DeploymentServiceRouteHorizontal Pod Autoscaler などの Kubernetes リソースを使用したデプロイメントを可能にします。

    • 結果として得られるモデルのデプロイメントでは、advanced モードと比較してリソースフットプリントが小さくなります。
  • 複数のボリュームのマウントなど、Knative では利用できない従来の Deployment/Pod 設定が可能になります。

    • 複雑な設定や複数のストレージマウントを必要とするアプリケーションに役立ちます。

デメリット:

  • 自動スケーリングはサポートされていません。

    • アイドル時にリソースを自動的にゼロにスケールダウンすることはサポートされていません。
    • トラフィックが少ない期間にはコストが高くなる可能性があります。

2.11. シングルモデルサービングプラットフォームを使用したモデルのデプロイ

シングルモデルサービングプラットフォームでは、各モデルが独自のモデルサーバー上でデプロイされます。これにより、リソースの増加を必要とする大規模なモデルのデプロイ、監視、スケーリング、保守が容易になります。

重要

シングルモデルサービングプラットフォームを使用して、自己署名 SSL 証明書を使用する S3 互換ストレージからモデルをデプロイする場合は、OpenShift クラスターに認証局 (CA) バンドルをインストールする必要があります。詳細は、証明書の使用 を参照してください。

2.11.1. シングルモデルサービングプラットフォームの有効化

KServe をインストールすると、Red Hat OpenShift AI ダッシュボードを使用して、シングルモデルサービングプラットフォームを有効にすることができます。ダッシュボードを使用して、プラットフォームのモデルサービングランタイムを有効にすることもできます。

前提条件

  • OpenShift AI 管理者権限を持つユーザーとして OpenShift AI にログインしている。
  • KServe がインストールされている。
  • spec.dashboardConfig.disableKServe ダッシュボード設定オプションが false (デフォルト) に設定されている。

    ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。

手順

  1. 次のようにシングルモデルサービングプラットフォームを有効にします。

    1. 左側のメニューで、SettingsCluster settings をクリックします。
    2. Model serving platforms セクションを見つけます。
    3. プロジェクトに対してシングルモデルサービングプラットフォームを有効にするには、Single model serving platform チェックボックスをオンにします。
    4. Save changes をクリックします。
  2. 次のように、シングルモデルサービングプラットフォーム用のプリインストールされたランタイムを有効にします。

    1. OpenShift AI ダッシュボードの左側のメニューで、SettingsServing runtimes をクリックします。

      Serving runtimes ページには、プリインストールされたランタイムと追加したカスタムランタイムが表示されます。

      プリインストールされたランタイムの詳細は、サポートされているランタイム を参照してください。

    2. 使用するランタイムを Enabled に設定します。

      これで、シングルモデルサービングプラットフォームをモデルのデプロイに使用できるようになりました。

モデルサービングランタイムは、特定のモデルフレームワーク群のサポートと、それらのフレームワークでサポートされるモデル形式のサポートを追加します。OpenShift AI に含まれている プリインストールされたランタイム を使用できます。デフォルトのランタイムがニーズを満たしていない場合は、独自のカスタムランタイムを追加することもできます。

管理者は、OpenShift AI インターフェイスを使用して、カスタムのモデルサービングランタイムを追加して有効にすることができます。その場合は、シングルモデルサービングプラットフォームにモデルをデプロイする際に、カスタムランタイムを選択できます。

注記

Red Hat はカスタムランタイムのサポートを提供しません。追加したカスタムランタイムを使用するライセンスがあることを確認し、お客様の責任で正しく設定および保守するようにしてください。

前提条件

  • OpenShift AI 管理者権限を持つユーザーとして OpenShift AI にログインしている。
  • カスタムランタイムをビルドし、イメージを Quay などのコンテナーイメージリポジトリーに追加している。

手順

  1. OpenShift AI ダッシュボードから、SettingsServing runtimes をクリックします。

    Serving runtimes ページが開き、すでにインストールされ有効になっているモデルサービングランタイムが表示されます。

  2. カスタムランタイムを追加するには、次のオプションのいずれかを選択します。

    • 既存のランタイム (たとえば、vLLM NVIDIA GPU ServingRuntime for KServe) から開始するには、既存のランタイムの横にあるアクションメニュー (⋮) をクリックし、Duplicate をクリックします。
    • 新しいカスタムランタイムを追加するには、Add serving runtime をクリックします。
  3. Select the model serving platforms this runtime supports リストで、Single-model serving platform を選択します。
  4. Select the API protocol this runtime supports リストで、REST または gRPC を選択します。
  5. オプション: (既存のランタイムを複製するのではなく) 新しいランタイムを開始した場合は、次のオプションのいずれかを選択してコードを追加します。

    • YAML ファイルをアップロードする

      1. Upload files をクリックします。
      2. ファイルブラウザーで、コンピューター上の YAML ファイルを選択します。

        埋め込み YAML エディターが開き、アップロードしたファイルの内容が表示されます。

    • エディターに YAML コードを直接入力する

      1. Start from scratch をクリックします。
      2. 埋め込みエディターに YAML コードを直接入力または貼り付けます。
    注記

    多くの場合、カスタムランタイムを作成するには、ServingRuntime 仕様の env セクションに新しいパラメーターまたはカスタムパラメーターを追加する必要があります。

  6. Add をクリックします。

    Serving runtimes ページが開き、インストールされているランタイムの更新されたリストが表示されます。追加したカスタムランタイムが自動的に有効になることを確認します。ランタイム作成時に指定した API プロトコルが表示されます。

  7. オプション: カスタムランタイムを編集するには、アクションメニュー (⋮) をクリックし、Edit を選択します。

検証

  • 追加したカスタムモデルサービングランタイムは、Serving runtimes ページに有効な状態で表示されます。

プリインストールされたカスタムのモデルサービングランタイムに加えて、NVIDIA Triton Inference Server などの Red Hat でテストおよび検証されたモデルサービングランタイムを使用して要件に対応することもできます。Red Hat のテスト済みおよび検証済みのランタイムの詳細は、Red Hat OpenShift AI のテスト済みおよび検証済みのランタイム を参照してください。

Red Hat OpenShift AI ダッシュボードを使用して、シングルモデルサービングプラットフォーム用の NVIDIA Triton Inference Server または Seldon MLServer ランタイムを追加して有効にできます。その場合は、シングルモデルサービングプラットフォームにモデルをデプロイする際に、ランタイムを選択できます。

前提条件

  • OpenShift AI 管理者権限を持つユーザーとして OpenShift AI にログインしている。

手順

  1. OpenShift AI ダッシュボードから、SettingsServing runtimes をクリックします。

    Serving runtimes ページが開き、すでにインストールされ有効になっているモデルサービングランタイムが表示されます。

  2. Add serving runtime をクリックします。
  3. Select the model serving platforms this runtime supports リストで、Single-model serving platform を選択します。
  4. Select the API protocol this runtime supports リストで、REST または gRPC を選択します。
  5. Start from scratch をクリックします。
  6. NVIDIA Triton Inference Server ランタイムを追加するには、次の手順に従います。

    1. REST API プロトコルを選択した場合は、埋め込みエディターに次の YAML コードを直接入力または貼り付けます。

      apiVersion: serving.kserve.io/v1alpha1
      kind: ServingRuntime
      metadata:
        name: triton-kserve-rest
        labels:
          opendatahub.io/dashboard: "true"
      spec:
        annotations:
          prometheus.kserve.io/path: /metrics
          prometheus.kserve.io/port: "8002"
        containers:
          - args:
              - tritonserver
              - --model-store=/mnt/models
              - --grpc-port=9000
              - --http-port=8080
              - --allow-grpc=true
              - --allow-http=true
            image: nvcr.io/nvidia/tritonserver@sha256:xxxxx
            name: kserve-container
            resources:
              limits:
                cpu: "1"
                memory: 2Gi
              requests:
                cpu: "1"
                memory: 2Gi
            ports:
              - containerPort: 8080
                protocol: TCP
        protocolVersions:
          - v2
          - grpc-v2
        supportedModelFormats:
          - autoSelect: true
            name: tensorrt
            version: "8"
          - autoSelect: true
            name: tensorflow
            version: "1"
          - autoSelect: true
            name: tensorflow
            version: "2"
          - autoSelect: true
            name: onnx
            version: "1"
          - name: pytorch
            version: "1"
          - autoSelect: true
            name: triton
            version: "2"
          - autoSelect: true
            name: xgboost
            version: "1"
          - autoSelect: true
            name: python
            version: "1"
      Copy to Clipboard Toggle word wrap
    2. gRPC API プロトコルを選択した場合は、埋め込みエディターで次の YAML コードを直接入力または貼り付けます。

      apiVersion: serving.kserve.io/v1alpha1
      kind: ServingRuntime
      metadata:
        name: triton-kserve-grpc
        labels:
          opendatahub.io/dashboard: "true"
      spec:
        annotations:
          prometheus.kserve.io/path: /metrics
          prometheus.kserve.io/port: "8002"
        containers:
          - args:
              - tritonserver
              - --model-store=/mnt/models
              - --grpc-port=9000
              - --http-port=8080
              - --allow-grpc=true
              - --allow-http=true
            image: nvcr.io/nvidia/tritonserver@sha256:xxxxx
            name: kserve-container
            ports:
              - containerPort: 9000
                name: h2c
                protocol: TCP
            volumeMounts:
              - mountPath: /dev/shm
                name: shm
            resources:
              limits:
                cpu: "1"
                memory: 2Gi
              requests:
                cpu: "1"
                memory: 2Gi
        protocolVersions:
          - v2
          - grpc-v2
        supportedModelFormats:
          - autoSelect: true
            name: tensorrt
            version: "8"
          - autoSelect: true
            name: tensorflow
            version: "1"
          - autoSelect: true
            name: tensorflow
            version: "2"
          - autoSelect: true
            name: onnx
            version: "1"
          - name: pytorch
            version: "1"
          - autoSelect: true
            name: triton
            version: "2"
          - autoSelect: true
            name: xgboost
            version: "1"
          - autoSelect: true
            name: python
            version: "1"
      volumes:
        - emptyDir: null
          medium: Memory
          sizeLimit: 2Gi
          name: shm
      Copy to Clipboard Toggle word wrap
  7. Seldon MLServer ランタイムを追加するには、次の手順に従います。

    1. REST API プロトコルを選択した場合は、埋め込みエディターに次の YAML コードを直接入力または貼り付けます。

      apiVersion: serving.kserve.io/v1alpha1
      kind: ServingRuntime
      metadata:
        name: mlserver-kserve-rest
        labels:
          opendatahub.io/dashboard: "true"
      spec:
        annotations:
          openshift.io/display-name: Seldon MLServer
          prometheus.kserve.io/port: "8080"
          prometheus.kserve.io/path: /metrics
        containers:
          - name: kserve-container
            image: 'docker.io/seldonio/mlserver@sha256:07890828601515d48c0fb73842aaf197cbcf245a5c855c789e890282b15ce390'
            env:
              - name: MLSERVER_HTTP_PORT
                value: "8080"
              - name: MLSERVER_GRPC_PORT
                value: "9000"
              - name: MODELS_DIR
                value: /mnt/models
            resources:
              requests:
                cpu: "1"
                memory: 2Gi
              limits:
                cpu: "1"
                memory: 2Gi
            ports:
              - containerPort: 8080
                protocol: TCP
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop:
                  - ALL
              privileged: false
              runAsNonRoot: true
        protocolVersions:
          - v2
        multiModel: false
        supportedModelFormats:
          - name: sklearn
            version: "0"
            autoSelect: true
            priority: 2
          - name: sklearn
            version: "1"
            autoSelect: true
            priority: 2
          - name: xgboost
            version: "1"
            autoSelect: true
            priority: 2
          - name: xgboost
            version: "2"
            autoSelect: true
            priority: 2
          - name: lightgbm
            version: "3"
            autoSelect: true
            priority: 2
          - name: lightgbm
            version: "4"
            autoSelect: true
            priority: 2
          - name: mlflow
            version: "1"
            autoSelect: true
            priority: 1
          - name: mlflow
            version: "2"
            autoSelect: true
            priority: 1
          - name: catboost
            version: "1"
            autoSelect: true
            priority: 1
          - name: huggingface
            version: "1"
            autoSelect: true
            priority: 1
      Copy to Clipboard Toggle word wrap
    2. gRPC API プロトコルを選択した場合は、埋め込みエディターで次の YAML コードを直接入力または貼り付けます。

      apiVersion: serving.kserve.io/v1alpha1
      kind: ServingRuntime
      metadata:
        name: mlserver-kserve-grpc
        labels:
          opendatahub.io/dashboard: "true"
      spec:
        annotations:
          openshift.io/display-name: Seldon MLServer
          prometheus.kserve.io/port: "8080"
          prometheus.kserve.io/path: /metrics
        containers:
          - name: kserve-container
            image: 'docker.io/seldonio/mlserver@sha256:07890828601515d48c0fb73842aaf197cbcf245a5c855c789e890282b15ce390'
            env:
              - name: MLSERVER_HTTP_PORT
                value: "8080"
              - name: MLSERVER_GRPC_PORT
                value: "9000"
              - name: MODELS_DIR
                value: /mnt/models
            resources:
              requests:
                cpu: "1"
                memory: 2Gi
              limits:
                cpu: "1"
                memory: 2Gi
            ports:
              - containerPort: 9000
                name: h2c
                protocol: TCP
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop:
                  - ALL
              privileged: false
              runAsNonRoot: true
        protocolVersions:
          - v2
        multiModel: false
        supportedModelFormats:
          - name: sklearn
            version: "0"
            autoSelect: true
            priority: 2
          - name: sklearn
            version: "1"
            autoSelect: true
            priority: 2
          - name: xgboost
            version: "1"
            autoSelect: true
            priority: 2
          - name: xgboost
            version: "2"
            autoSelect: true
            priority: 2
          - name: lightgbm
            version: "3"
            autoSelect: true
            priority: 2
          - name: lightgbm
            version: "4"
            autoSelect: true
            priority: 2
          - name: mlflow
            version: "1"
            autoSelect: true
            priority: 1
          - name: mlflow
            version: "2"
            autoSelect: true
            priority: 1
          - name: catboost
            version: "1"
            autoSelect: true
            priority: 1
          - name: huggingface
            version: "1"
            autoSelect: true
            priority: 1
      Copy to Clipboard Toggle word wrap
  8. metadata.name フィールドで、追加するランタイムの値が、すでに追加されているランタイムと同じでないことを確認します。
  9. オプション: 追加するランタイムのカスタム表示名を使用するには、次の例に示すように、metadata.annotations.openshift.io/display-name フィールドを追加し、値を指定します。

    apiVersion: serving.kserve.io/v1alpha1
    kind: ServingRuntime
    metadata:
      name: kserve-triton
      annotations:
        openshift.io/display-name: Triton ServingRuntime
    Copy to Clipboard Toggle word wrap
    注記

    ランタイムのカスタム表示名を設定しないと、OpenShift AI には metadata.name フィールドの値が表示されます。

  10. Create をクリックします。

    Serving runtimes ページが開き、インストールされているランタイムの更新されたリストが表示されます。追加したランタイムが自動的に有効になっていることを確認します。ランタイム作成時に指定した API プロトコルが表示されます。

  11. オプション: ランタイムを編集するには、アクションメニュー (⋮) をクリックし、Edit を選択します。

検証

  • 追加したモデルサービスランタイムは、Serving runtimes ページに有効な状態で表示されます。

2.11.4. シングルモデルサービングプラットフォームへのモデルのデプロイ

シングルモデルサービングプラットフォームを有効にすると、プリインストールまたはカスタムのモデルサービングランタイムを有効にして、モデルをプラットフォームへデプロイできます。

プリインストールされたモデルサービングランタイムを使用すると、ランタイムを自分で変更したり定義したりすることなく、モデルの提供を開始できます。カスタムランタイムの追加に関するサポートは、シングルモデルサービングプラットフォーム用のカスタムモデルサービングランタイムの追加 を参照してください。

前提条件

  • Red Hat OpenShift AI にログインしている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。
  • KServe がインストールされている。
  • シングルモデルサービングプラットフォームを有効にした。
  • (advanced デプロイメントのみ) デプロイされたモデルのトークン認証と外部モデルルートを有効にするために、Authorino を認可プロバイダーとして追加した。詳細は、シングルモデルサービングプラットフォームの認可プロバイダーの追加 を参照してください。
  • データサイエンスプロジェクトを作成した。
  • S3 互換オブジェクトストレージにアクセスできる。
  • デプロイするモデルについて、S3 互換のオブジェクトストレージバケットまたは Open Container Initiative (OCI) コンテナー内の関連付けられた URI を把握している。
  • Caikit-TGIS ランタイムを使用するために、モデルを Caikit 形式に変換した。例は、caikit-tgis-serving リポジトリーの Converting Hugging Face Hub models to Caikit format を参照してください。
  • モデルサーバーでグラフィックスプロセッシングユニット (GPU) を使用する場合は、OpenShift AI で GPU サポートを有効にした。NVIDIA GPU を使用する場合は、NVIDIA GPU の有効化 を参照してください。AMD GPU を使用する場合は、AMD GPU の統合 を参照してください。
  • vLLM ランタイムを使用するために、OpenShift AI で GPU サポートを有効にし、クラスターに Node Feature Discovery Operator をインストールして設定した。詳細は、Node Feature Discovery Operator のインストールNVIDIA GPU の有効化 を参照してください。
  • vLLM Intel Gaudi Accelerator ServingRuntime for KServe ランタイムを使用するために、OpenShift AI でハイブリッドプロセッシングユニット (HPU) のサポートを有効にした。これには、Intel Gaudi AI アクセラレーター Operator のインストールとハードウェアプロファイルの設定が含まれます。詳細は、Setting up Gaudi for OpenShift および ハードウェアプロファイルの使用 を参照してください。
  • vLLM AMD GPU ServingRuntime for KServe ランタイムを使用するために、OpenShift AI で AMD グラフィックプロセッシングユニット (GPU) のサポートを有効にした。これには、AMD GPU Operator のインストールとハードウェアプロファイルの設定が含まれます。詳細は、Deploying the AMD GPU operator on OpenShift および ハードウェアプロファイルの使用 を参照してください。

    注記

    OpenShift AI では、Red Hat はモデルサービング用に NVIDIA GPU、Intel Gaudi、および AMD GPU アクセラレーターをサポートしています。

  • RHEL AI モデルをデプロイするために、以下を実行した。

    • vLLM NVIDIA GPU ServingRuntime for KServe ランタイムを有効にした。
    • Red Hat コンテナーレジストリーからモデルをダウンロードし、S3 互換オブジェクトストレージにアップロードした。

手順

  1. 左側のメニューで、Data science projects をクリックします。

    Data science projects のページが開きます。

  2. モデルをデプロイするプロジェクトの名前をクリックします。

    プロジェクトの詳細ページが開きます。

  3. Models タブをクリックします。
  4. 次のいずれかの操作を実行します。

    • ​​Single-model serving platform タイルが表示された場合は、タイル上の Deploy model をクリックします。
    • タイルが表示されない場合は、Deploy model ボタンをクリックします。

    Deploy model ダイアログが開きます。

  5. Model deployment name フィールドに、デプロイするモデルの一意の名前を入力します。
  6. Serving runtime フィールドで、有効なランタイムを選択します。プロジェクトスコープのランタイムが存在する場合、Serving runtime リストには、グローバルランタイムとプロジェクトスコープのランタイムを区別するためのサブ見出しが含まれます。
  7. Model framework (name - version) リストから値を選択します。
  8. Deployment mode リストから、standard または advanced を選択します。デプロイメントモードの詳細は、KServe デプロイメントモードについて を参照してください。
  9. Number of model server replicas to deploy フィールドに値を指定します。
  10. 次のオプションは、ハードウェアプロファイルを作成した場合にのみ使用できます。

    1. Hardware profile リストから、ハードウェアプロファイルを選択します。プロジェクトスコープのハードウェアプロファイルが存在する場合、Hardware profile リストには、グローバルハードウェアプロファイルとプロジェクトスコープのハードウェアプロファイルを区別するためのサブ見出しが含まれます。

      重要

      デフォルトでは、ハードウェアプロファイルはダッシュボードのナビゲーションメニューとユーザーインターフェイスに表示されませんが、アクセラレータープロファイルは表示されます。非推奨となったアクセラレータープロファイル機能に関連付けられたユーザーインターフェイスコンポーネントは、引き続き表示されます。ハードウェアプロファイルを有効にすると、Accelerator profiles リストの代わりに Hardware profiles リストが表示されます。ダッシュボードのナビゲーションメニューの Settings → Hardware profiles オプションと、ハードウェアプロファイルに関連付けられたユーザーインターフェイスコンポーネントを表示するには、OpenShift の OdhDashboardConfig カスタムリソース (CR) で、disableHardwareProfiles 値を false に設定します。ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。

    2. オプション: これらのデフォルト値を変更するには、Customize resource requests and limit をクリックし、新しい最小値 (要求) と最大値 (制限) を入力します。ハードウェアプロファイルは、コンテナーに割り当てられる CPU の数とメモリーの量を指定し、両方に対して保証される最小値 (要求) と最大値 (制限) を設定します。
  11. オプション: Model route セクションで、Make deployed models available through an external route チェックボックスをオンにして、デプロイされたモデルを外部クライアントが利用できるようにします。
  12. デプロイされたモデルに対する推論リクエストにトークン認証を要求するには、次のアクションを実行します。

    1. Require token authentication を選択します。
    2. Service account name フィールドに、トークンが生成されるサービスアカウント名を入力します。
    3. 追加のサービスアカウントを追加するには、Add a service account をクリックし、別のサービスアカウント名を入力します。
  13. モデルの場所を指定するには、次の一連のアクションのいずれかを実行します。

    • 既存の接続を使用します

      1. Existing connection を選択します。
      2. Name リストから、以前に定義した接続を選択します。

        1. S3 互換オブジェクトストレージの場合: Path フィールドに、指定したデータソース内のモデルが含まれるフォルダーパスを入力します。

          重要

          OpenVINO Model Server ランタイムには、モデルパスの指定方法に関する特定の要件があります。詳細は、OpenShift AI リリースノートの既知の問題 RHOAIENG-3025 を参照してください。

        2. Open Container Image 接続の場合: OCI storage location フィールドに、モデルが配置されているモデル URI を入力します。

          注記

          既存の S3、URI、または OCI データ接続を使用して登録済みのモデルバージョンをデプロイする場合は、接続に関する詳細の一部が自動入力されることがあります。これは、データ接続の種類と、データサイエンスプロジェクトで使用できる一致する接続の数によって異なります。たとえば、一致する接続が 1 つだけ存在する場合、パス、URI、エンドポイント、モデル URI、バケット、リージョンなどのフィールドが自動的に入力されることがあります。一致する接続には Recommended というラベルが付けられます。

    • 新しい接続を使用します

      1. モデルがアクセスできる新しい接続を定義するには、New connection を選択します。

        1. Add connection モーダルで、Connection type を選択します。OCI-compliant registryS3 compatible object storageURI オプションは、事前にインストールされた接続タイプです。OpenShift AI 管理者が追加した場合は、追加のオプションが利用できる場合があります。

          選択した接続タイプに固有のフィールドを含む Add connection フォームが開きます。

      2. 接続の詳細フィールドに入力します。

        重要

        接続タイプが S3 互換オブジェクトストレージの場合は、データファイルが含まれるフォルダーパスを指定する必要があります。OpenVINO Model Server ランタイムには、モデルパスの指定方法に関する特定の要件があります。詳細は、OpenShift AI リリースノートの既知の問題 RHOAIENG-3025 を参照してください。

  14. (オプション) Configuration parameters セクションでランタイムパラメーターをカスタマイズします。

    1. Additional serving runtime arguments の値を変更して、デプロイされるモデルの動作を定義します。
    2. モデルの環境内の変数を定義するには、Additional environment variables の値を変更します。

      Configuration parameters セクションに、事前定義されたサービングランタイムパラメーターが表示されます (利用可能な場合)。

      注記

      ポートまたはモデルサービングランタイムの引数は変更しないでください。これらの引数には、特定の値を設定する必要があるためです。これらのパラメーターを上書きすると、デプロイが失敗する可能性があります。

  15. Deploy をクリックします。

検証

  • デプロイされたモデルがプロジェクトの Models タブに表示され、ダッシュボードの Model deployments ページで Status 列にチェックマークが付いて表示されていることを確認します。

2.11.5. KServe のタイムアウトの設定

大規模なモデルをデプロイする場合、または KServe でノードの自動スケーリングを使用する場合、モデルがデプロイされる前に操作がタイムアウトすることがあります。KNative Serving が設定するデフォルトの progress-deadline が 10 分であるためです。

KNative Serving を使用した Pod のデプロイに 10 分以上かかる場合、Pod が自動的に失敗とマークされる可能性があります。これは、S3 互換のオブジェクトストレージからプルするのに 10 分以上かかる大規模なモデルをデプロイしている場合、またはノードの自動スケーリングを使用して GPU ノードの消費を削減している場合に発生する可能性があります。

この問題を解決するには、アプリケーションに合わせて KServe の InferenceService でカスタムの progress-deadline を設定できます。

前提条件

  • OpenShift クラスターの namespace 編集アクセス権がある。

手順

  1. OpenShift コンソールにクラスター管理者としてログインします。
  2. モデルをデプロイしたプロジェクトを選択します。
  3. Administrator パースペクティブで、HomeSearch をクリックします。
  4. Resources ドロップダウンメニューから、InferenceService を検索します。
  5. spec.predictor.annotations の下の serving.knative.dev/progress-deadline を新しいタイムアウトに変更します。

    apiVersion: serving.kserve.io/v1alpha1
    kind: InferenceService
    metadata:
      name: my-inference-service
    spec:
      predictor:
        annotations:
          serving.knative.dev/progress-deadline: 30m
    Copy to Clipboard Toggle word wrap
    注記

    必ず spec.predictor.annotations レベルで progress-deadline を設定して、KServe の InferenceServiceprogress-deadline を KNative Service オブジェクトにコピーできるようにしてください。

2.11.6. デプロイされたモデルサービングランタイムのパラメーターのカスタマイズ

特定のモデルをデプロイしたり、既存のモデルのデプロイメントを拡張したりするには、デフォルトのパラメーター以外に追加のパラメーターが必要になる場合があります。このような場合、デプロイメントのニーズに合わせて既存のランタイムのパラメーターを変更できます。

注記

ランタイムのパラメーターのカスタマイズは、選択したモデルのデプロイメントにのみ影響します。

前提条件

  • OpenShift AI 管理者権限を持つユーザーとして OpenShift AI にログインしている。
  • シングルモデルサービングプラットフォームにモデルをデプロイした。

手順

  1. OpenShift AI ダッシュボードで、ModelsModel deployments をクリックします。

    Model deployments ページが開きます。

  2. カスタマイズするモデル名の横にあるアクションメニュー (⋮) をクリックし、Edit を選択します。

    Configuration parameters セクションに、事前定義されたサービングランタイムパラメーターが表示されます (利用可能な場合)。

  3. Configuration parameters セクションでランタイムパラメーターをカスタマイズします。

    1. Additional serving runtime arguments の値を変更して、デプロイされるモデルの動作を定義します。
    2. モデルの環境内の変数を定義するには、Additional environment variables の値を変更します。

      注記

      ポートまたはモデルサービングランタイムの引数は変更しないでください。これらの引数には、特定の値を設定する必要があるためです。これらのパラメーターを上書きすると、デプロイが失敗する可能性があります。

  4. ランタイムパラメーターのカスタマイズが完了したら、Redeploy をクリックして、変更を加えたモデルを保存してデプロイします。

検証

  • デプロイされたモデルがプロジェクトの Models タブに表示され、ダッシュボードの Model deployments ページで Status 列にチェックマークが付いて表示されていることを確認します。
  • 次のいずれかの方法で、設定した引数と変数が spec.predictor.model.argsspec.predictor.model.env に表示されることを確認します。

    • OpenShift コンソールから InferenceService YAML を確認します。
    • OpenShift CLI で次のコマンドを使用します。

      oc get -o json inferenceservice <inferenceservicename/modelname> -n <projectname>
      Copy to Clipboard Toggle word wrap

2.11.7. カスタマイズ可能なモデルサービングランタイムのパラメーター

デプロイメントのニーズに合わせて、既存のモデルサービングランタイムのパラメーターを変更できます。

サポートされている各サービングランタイムのパラメーターの詳細は、次の表を参照してください。

Expand
サービングランタイムリソース

Caikit Text Generation Inference Server (Caikit-TGIS) ServingRuntime for KServe

Caikit NLP: Configuration
TGIS: Model configuration

Caikit Standalone ServingRuntime for KServe

Caikit NLP: Configuration

NVIDIA Triton Inference Server

NVIDIA Triton Inference Server: Model Parameters

OpenVINO Model Server

OpenVINO Model Server Features: Dynamic Input Parameters

Seldon MLServer

MLServer Documentation: Model Settings

[非推奨] Text Generation Inference Server (TGIS) Standalone ServingRuntime for KServe

TGIS: Model configuration

vLLM NVIDIA GPU ServingRuntime for KServe

vLLM: Engine Arguments
OpenAI-Compatible Server

vLLM AMD GPU ServingRuntime for KServe

vLLM: Engine Arguments
OpenAI-Compatible Server

vLLM Intel Gaudi Accelerator ServingRuntime for KServe

vLLM: Engine Arguments
OpenAI-Compatible Server

2.11.8. モデル保存用の OCI コンテナーの使用

モデルを S3 バケットまたは URI に保存する代わりに、モデルを Open Container Initiative (OCI) コンテナーにアップロードできます。OCI コンテナーからモデルをデプロイすることは、KServe では modelcar とも呼ばれます。

モデルの保存に OCI コンテナーを使用すると、次のことが可能になります。

  • 同じモデルを複数回ダウンロードすることを回避し、起動時間を短縮します。
  • ローカルにダウンロードされるモデルの数を減らすことで、ディスク領域の使用量を削減します。
  • 事前に取得したイメージを許可することで、モデルのパフォーマンスが向上します。

モデルの保存に OCI コンテナーを使用する場合、次のタスクを実行します。

2.11.8.1. OCI イメージへのモデルの保存

モデルを OCI イメージに保存できます。次の手順では、MobileNet v2-7 モデルを ONNX 形式で保存する例を使用します。

前提条件

  • ONNX 形式のモデルがある。この手順の例では、ONNX 形式の MobileNet v2-7 モデルを使用します。
  • Podman ツールがインストールされている。

手順

  1. ローカルマシンのターミナルウィンドウで、OCI イメージの作成に必要なモデルファイルとサポートファイルの両方を保存するための一時ディレクトリーを作成します。

    cd $(mktemp -d)
    Copy to Clipboard Toggle word wrap
  2. 一時ディレクトリー内に models フォルダーを作成します。

    mkdir -p models/1
    Copy to Clipboard Toggle word wrap
    注記

    この例のコマンドでは、サブディレクトリー 1 を指定します。これは、OpenVINO がモデルのバージョン管理に番号付きのサブディレクトリーを必要とするためです。OpenVINO を使用していない場合は、OCI コンテナーイメージを使用するために 1 サブディレクトリーを作成する必要はありません。

  3. モデルとサポートファイルをダウンロードします。

    DOWNLOAD_URL=https://github.com/onnx/models/raw/main/validated/vision/classification/mobilenet/model/mobilenetv2-7.onnx
    curl -L $DOWNLOAD_URL -O --output-dir models/1/
    Copy to Clipboard Toggle word wrap
  4. tree コマンドを使用して、モデルファイルが期待どおりにディレクトリー構造内に配置されていることを確認します。

    tree
    Copy to Clipboard Toggle word wrap

    tree コマンドで、次の例のようなディレクトリー構造が返されるはずです。

    .
    ├── Containerfile
    └── models
        └── 1
            └── mobilenetv2-7.onnx
    Copy to Clipboard Toggle word wrap
  5. Containerfile という名前の Docker ファイルを作成します。

    注記
    • シェルを提供するベースイメージを指定してください。次の例では、ubi9-micro がベースコンテナーイメージです。scratch などのシェルを提供しない空のイメージを指定することはできません。KServe はシェルを使用してモデルファイルがモデルサーバーにアクセス可能であることを確認するためです。
    • コピーしたモデルファイルの所有権を変更し、root グループに読み取り権限を付与して、モデルサーバーがファイルにアクセスできるようにしてください。OpenShift は、ランダムなユーザー ID と root グループ ID を使用してコンテナーを実行します。
    FROM registry.access.redhat.com/ubi9/ubi-micro:latest
    COPY --chown=0:0 models /models
    RUN chmod -R a=rX /models
    
    # nobody user
    USER 65534
    Copy to Clipboard Toggle word wrap
  6. podman build コマンドを使用して OCI コンテナーイメージを作成し、レジストリーにアップロードします。次のコマンドでは、レジストリーとして Quay を使用します。

    注記

    リポジトリーがプライベートの場合は、コンテナーイメージをアップロードする前に、レジストリーに対して認証されていることを確認してください。

    podman build --format=oci -t quay.io/<user_name>/<repository_name>:<tag_name> .
    podman push quay.io/<user_name>/<repository_name>:<tag_name>
    Copy to Clipboard Toggle word wrap
2.11.8.2. CLI を使用して OCI イメージに保存されたモデルをデプロイする

OCI イメージに保存されているモデルをコマンドラインインターフェイスからデプロイできます。

次の手順では、OpenVINO モデルサーバー上の OCI イメージに保存されている ONNX 形式の MobileNet v2-7 モデルをデプロイする例を使用します。

注記

KServe では、デフォルトでモデルはクラスター外部に公開され、認証によって保護されません。

前提条件

  • OCI イメージへのモデルの保存 の説明に従って、モデルを OCI イメージに保存した。
  • プライベート OCI リポジトリーに保存されているモデルをデプロイする場合は、イメージプルシークレットを設定した。イメージプルシークレットの作成の詳細は、イメージプルシークレットの使用 を参照してください。
  • OpenShift クラスターにログインしている。

手順

  1. モデルをデプロイするためのプロジェクトを作成します。

    oc new-project oci-model-example
    Copy to Clipboard Toggle word wrap
  2. OpenShift AI アプリケーションプロジェクトの kserve-ovms テンプレートを使用して ServingRuntime リソースを作成し、新しいプロジェクトで OpenVINO モデルサーバーを設定します。

    oc process -n redhat-ods-applications -o yaml kserve-ovms | oc apply -f -
    Copy to Clipboard Toggle word wrap
  3. kserve-ovms という名前の ServingRuntime が作成されていることを確認します。

    oc get servingruntimes
    Copy to Clipboard Toggle word wrap

    このコマンドは、次のような出力を返すはずです。

    NAME          DISABLED   MODELTYPE     CONTAINERS         AGE
    kserve-ovms              openvino_ir   kserve-container   1m
    Copy to Clipboard Toggle word wrap
  4. モデルがプライベート OCI リポジトリーに保存されているか、パブリック OCI リポジトリーに保存されているかに応じて、InferenceService YAML リソースを作成します。

    • パブリック OCI リポジトリーに保存されているモデルの場合は、次の値を含む InferenceService YAML ファイルを作成し、<user_name><repository_name><tag_name> をお客様の環境固有の値に置き換えます。

      apiVersion: serving.kserve.io/v1beta1
      kind: InferenceService
      metadata:
        name: sample-isvc-using-oci
      spec:
        predictor:
          model:
            runtime: kserve-ovms # Ensure this matches the name of the ServingRuntime resource
            modelFormat:
              name: onnx
            storageUri: oci://quay.io/<user_name>/<repository_name>:<tag_name>
            resources:
              requests:
                memory: 500Mi
                cpu: 100m
                # nvidia.com/gpu: "1" # Only required if you have GPUs available and the model and runtime will use it
              limits:
                memory: 4Gi
                cpu: 500m
                # nvidia.com/gpu: "1" # Only required if you have GPUs available and the model and runtime will use it
      Copy to Clipboard Toggle word wrap
    • プライベート OCI リポジトリーに保存されているモデルの場合は、次の例に示すように、spec.predictor.imagePullSecrets フィールドにプルシークレットを指定した InferenceService YAML ファイルを作成します。

      apiVersion: serving.kserve.io/v1beta1
      kind: InferenceService
      metadata:
        name: sample-isvc-using-private-oci
      spec:
        predictor:
          model:
            runtime: kserve-ovms # Ensure this matches the name of the ServingRuntime resource
            modelFormat:
              name: onnx
            storageUri: oci://quay.io/<user_name>/<repository_name>:<tag_name>
            resources:
              requests:
                memory: 500Mi
                cpu: 100m
                # nvidia.com/gpu: "1" # Only required if you have GPUs available and the model and runtime will use it
              limits:
                memory: 4Gi
                cpu: 500m
                # nvidia.com/gpu: "1" # Only required if you have GPUs available and the model and runtime will use it
          imagePullSecrets: # Specify image pull secrets to use for fetching container images, including OCI model images
          - name: <pull-secret-name>
      Copy to Clipboard Toggle word wrap

      InferenceService リソースを作成すると、KServe は storageUri フィールドによって参照される OCI イメージに保存されているモデルをデプロイします。

検証

デプロイメントのステータスを確認します。

oc get inferenceservice
Copy to Clipboard Toggle word wrap

このコマンドで、デプロイしたモデルの URL やその準備状態などの情報を含む出力が返されるはずです。

2.11.9. vLLM でのアクセラレーターの使用

OpenShift AI では、NVIDIA、AMD、および Intel Gaudi アクセラレーターがサポートされています。また、OpenShift AI には、アクセラレーターのサポートを提供するモデルサービングランタイムがプリインストールされています。

2.11.9.1. NVIDIA GPU

vLLM NVIDIA GPU ServingRuntime for KServe ランタイムを使用すると、NVIDIA グラフィックスプロセッシングユニット (GPU) を使用するモデルを提供できます。このランタイムを使用するには、OpenShift AI で GPU サポートを有効にする必要があります。これには、クラスターへの Node Feature Discovery Operator のインストールと設定が含まれます。詳細は、Node Feature Discovery Operator のインストールNVIDIA GPU の有効化 を参照してください。

2.11.9.2. Intel Gaudi アクセラレーター

vLLM Intel Gaudi Accelerator ServingRuntime for KServe ランタイムを使用すると、Intel Gaudi アクセラレーターを搭載したモデルを提供できます。このランタイムを使用するには、OpenShift AI でハイブリッドプロセッシングユニット (HPU) のサポートを有効にする必要があります。これには、Intel Gaudi AI アクセラレーター Operator のインストールとハードウェアプロファイルの設定が含まれます。詳細は、OpenShift 用の Gaudi のセットアップ および ハードウェアプロファイルの使用 を参照してください。

推奨される vLLM パラメーター、環境変数、サポートされる設定などの詳細は、vLLM with Intel® Gaudi® AI Accelerators を参照してください。

注記

ウォームアップは、モデルの初期化およびパフォーマンスの最適化手順であり、コールドスタートの遅延や最初の推論の待ち時間を短縮するのに役立ちます。モデルのサイズによっては、ウォームアップによりモデルのロード時間が長くなる可能性があります。

パフォーマンスの制限を回避するために実稼働環境において強く推奨されますが、非実稼働環境ではウォームアップをスキップすることで、モデルのロード時間を短縮し、モデル開発とテストサイクルを加速できます。ウォームアップをスキップするには、デプロイされたモデルサービングランタイムのパラメーターのカスタマイズ で説明されている手順に従って、モデルデプロイメントの 設定パラメーター セクションに次の環境変数を追加します。

`VLLM_SKIP_WARMUP="true"`
Copy to Clipboard Toggle word wrap
2.11.9.3. AMD GPU

vLLM AMD GPU ServingRuntime for KServe を使用すると、AMD GPU を使用するモデルを提供できます。このランタイムを使用するには、OpenShift AI で AMD グラフィックプロセッシングユニット (GPU) のサポートを有効にする必要があります。これには、AMD GPU Operator のインストールとハードウェアプロファイルの設定が含まれます。詳細は、OpenShift への AMD GPU Operator のデプロイ (AMD ドキュメント) および ハードウェアプロファイルの使用 を参照してください。

2.11.10. vLLM モデルサービングランタイムのカスタマイズ

場合によっては、LLM ファミリーをデプロイするために、vLLM ServingRuntime for KServe にフラグまたは環境変数をさらに追加する必要があります。

次の手順では、vLLM モデルサービングランタイムをカスタマイズして、Llama、Granite、または Mistral モデルをデプロイする方法を説明します。

前提条件

  • OpenShift AI 管理者権限を持つユーザーとして OpenShift AI にログインしている。
  • Llama モデルをデプロイする場合は、meta-llama-3 モデルをオブジェクトストレージにダウンロードした。
  • Granite モデルをデプロイする場合は、granite-7b-instruct または granite-20B-code-instruct モデルをオブジェクトストレージにダウンロードした。
  • Mistral モデルをデプロイする場合は、mistral-7B-Instruct-v0.3 モデルをオブジェクトストレージにダウンロードした。
  • vLLM ServingRuntime for KServe を有効にした。
  • OpenShift AI で GPU サポートを有効にし、クラスターに Node Feature Discovery Operator をインストールして設定した。詳細は、Node Feature Discovery Operator のインストールNVIDIA GPU の有効化 を参照してください。

手順

  1. シングルモデルサービングプラットフォームへのモデルのデプロイ で説明されている手順に従って、モデルをデプロイします。
  2. Serving runtime フィールドで、vLLM ServingRuntime for KServe を選択します。
  3. meta-llama-3 モデルをデプロイする場合は、Configuration parameters セクションの Additional serving runtime arguments に次の引数を追加します。

    –-distributed-executor-backend=mp 
    1
    
    --max-model-len=6144 
    2
    Copy to Clipboard Toggle word wrap
    1
    分散モデルワーカーのバックエンドをマルチプロセッシングに設定します。
    2
    モデルの最大コンテキスト長を 6144 トークンに設定します。
  4. granite-7B-instruct モデルをデプロイする場合は、Configuration parameters セクションの Additional serving runtime arguments に次の引数を追加します。

    --distributed-executor-backend=mp 
    1
    Copy to Clipboard Toggle word wrap
    1
    分散モデルワーカーのバックエンドをマルチプロセッシングに設定します。
  5. granite-20B-code-instruct モデルをデプロイする場合は、Configuration parameters セクションの Additional serving runtime arguments に次の引数を追加します。

    --distributed-executor-backend=mp 
    1
    
    –-tensor-parallel-size=4 
    2
    
    --max-model-len=6448 
    3
    Copy to Clipboard Toggle word wrap
    1
    分散モデルワーカーのバックエンドをマルチプロセッシングに設定します。
    2
    シングルノード内の 4 つの GPU に推論を分散します。
    3
    モデルの最大コンテキスト長を 6448 トークンに設定します。
  6. mistral-7B-Instruct-v0.3 model モデルをデプロイする場合は、Configuration parameters セクションの Additional serving runtime arguments に次の引数を追加します。

    --distributed-executor-backend=mp 
    1
    
    --max-model-len=15344 
    2
    Copy to Clipboard Toggle word wrap
    1
    分散モデルワーカーのバックエンドをマルチプロセッシングに設定します。
    2
    モデルの最大コンテキスト長を 15344 トークンに設定します。
  7. Deploy をクリックします。

検証

  • デプロイされたモデルがプロジェクトの Models タブに表示され、ダッシュボードの Model deployments ページで Status 列にチェックマークが付いて表示されていることを確認します。
  • Granite モデルの場合、次のサンプルコマンドを使用して、デプロイしたモデルへの API リクエストを検証します。

    curl -q -X 'POST' \
        "https://<inference_endpoint_url>:443/v1/chat/completions" \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -d "{
        \"model\": \"<model_name>\",
        \"prompt\": \"<prompt>",
        \"max_tokens\": <max_tokens>,
        \"temperature\": <temperature>
        }"
    Copy to Clipboard Toggle word wrap

2.12. 複数の GPU ノードを使用したモデルのデプロイ

大規模言語モデル (LLM) などの大規模モデルを処理するために、複数の GPU ノードにわたってモデルをデプロイします。

vLLM サービングフレームワークを使用して、複数の GPU ノードにわたって Red Hat OpenShift AI 上でモデルを提供できます。マルチノード推論では、vllm-multinode-runtime カスタムランタイムが使用されます。これは、vLLM NVIDIA GPU ServingRuntime for KServe と同じイメージを使用し、マルチ GPU 推論に必要な情報を含んでいます。

モデルは、永続ボリューム要求 (PVC) または Open Container Initiative (OCI) コンテナーイメージからデプロイできます。

重要

複数の GPU ノードを使用したモデルのデプロイ は、現在、Red Hat OpenShift AI のテクノロジープレビュー機能として提供されています。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat では、実稼働環境での使用を推奨していません。これらの機能により、近日発表予定の製品機能をリリースに先駆けてご提供でき、お客様は開発プロセス時に機能をテストして、フィードバックをお寄せいただくことができます。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

前提条件

  • OpenShift クラスターのクラスター管理者権限を持っている。
  • OpenShift コマンドラインインターフェイス (CLI) をダウンロードしてインストールした。詳細は、OpenShift CLI のインストール (Red Hat OpenShift Dedicated) または OpenShift CLI のインストール (Red Hat OpenShift Service on AWS) を参照してください。
  • Node Feature Discovery Operator、NVIDIA GPU Operator など、お使いの GPU タイプ用の Operator を有効にした。アクセラレーターの有効化の詳細は、アクセラレーターの有効化 を参照してください。

    • NVIDIA GPU (nvidia.com/gpu) を使用している。
    • ServingRuntime または InferenceService のいずれかを使用して GPU タイプを指定した。ServingRuntime で指定された GPU タイプが InferenceService で設定されたものと異なる場合、両方の GPU タイプがリソースに割り当てられ、エラーが発生する可能性があります。
  • クラスターで KServe を有効にした。
  • 環境にヘッド Pod が 1 つだけある。InferenceServicemin_replicas または max_replicas 設定を使用してレプリカ数を調整しないでください。追加のヘッド Pod を作成すると、それらが Ray クラスターから除外される可能性があります。
  • PVC からデプロイする場合: 永続ボリューム要求 (PVC) がセットアップされ、ReadWriteMany (RWX) アクセスモード用に設定されている。
  • OCI コンテナーイメージからデプロイする場合:

    • モデルを OCI コンテナーイメージに保存した。
    • モデルがプライベート OCI リポジトリーに保存されている場合は、イメージプルシークレットを設定した。

手順

  1. ターミナルウィンドウで、クラスター管理者として OpenShift クラスターにまだログインしていない場合は、次の例に示すように OpenShift CLI にログインします。

    $ oc login <openshift_cluster_url> -u <admin_username> -p <password>
    Copy to Clipboard Toggle word wrap
  2. モデルをデプロイするための namespace を選択または作成します。たとえば、kserve-demo namespace を作成するには、次のコマンドを実行します。

    oc new-project kserve-demo
    Copy to Clipboard Toggle word wrap
  3. (PVC からモデルをデプロイする場合のみ) モデルをデプロイする namespace に、モデルストレージ用の PVC を作成します。Filesystem volumeMode を使用してストレージクラスを作成し、このストレージクラスを PVC に使用します。ストレージサイズは、ディスク上のモデルファイルのサイズよりも大きくする必要があります。以下に例を示します。

    注記

    PVC がすでに設定済みの場合、または OCI コンテナーイメージからモデルをデプロイする場合は、このステップをスキップできます。

    kubectl apply -f -
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: granite-8b-code-base-pvc
    spec:
      accessModes:
        - ReadWriteMany
      volumeMode: Filesystem
      resources:
        requests:
          storage: <model size>
      storageClassName: <storage class>
    Copy to Clipboard Toggle word wrap
    1. 作成した PVC にモデルをダウンロードするための Pod を作成します。バケット名、モデルパス、および認証情報を使用してサンプル YAML を更新します。

      apiVersion: v1
      kind: Pod
      metadata:
        name: download-granite-8b-code
        labels:
          name: download-granite-8b-code
      spec:
        volumes:
          - name: model-volume
            persistentVolumeClaim:
              claimName: granite-8b-code-base-pvc
        restartPolicy: Never
        initContainers:
          - name: fix-volume-permissions
            image: quay.io/quay/busybox@sha256:92f3298bf80a1ba949140d77987f5de081f010337880cd771f7e7fc928f8c74d
            command: ["sh"]
            args: ["-c", "mkdir -p /mnt/models/$(MODEL_PATH) && chmod -R 777 /mnt/models"] 
      1
      
            volumeMounts:
              - mountPath: "/mnt/models/"
                name: model-volume
            env:
              - name: MODEL_PATH
                value: <model path> 
      2
      
        containers:
          - resources:
              requests:
                memory: 40Gi
            name: download-model
            imagePullPolicy: IfNotPresent
            image: quay.io/opendatahub/kserve-storage-initializer:v0.14 
      3
      
            args:
              - 's3://$(BUCKET_NAME)/$(MODEL_PATH)/'
              - /mnt/models/$(MODEL_PATH)
            env:
              - name: AWS_ACCESS_KEY_ID
                value: <id> 
      4
      
              - name: AWS_SECRET_ACCESS_KEY
                value: <secret> 
      5
      
              - name: BUCKET_NAME
                value: <bucket_name> 
      6
      
              - name: MODEL_PATH
                value: <model path> 
      7
      
              - name: S3_USE_HTTPS
                value: "1"
              - name: AWS_ENDPOINT_URL
                value: <AWS endpoint> 
      8
      
              - name: awsAnonymousCredential
                value: 'false'
              - name: AWS_DEFAULT_REGION
                value: <region> 
      9
      
              - name: S3_VERIFY_SSL
                value: 'true' 
      10
      
            volumeMounts:
              - mountPath: "/mnt/models/"
                name: model-volume
      Copy to Clipboard Toggle word wrap
      1
      chmod 操作は、Pod が root として実行されている場合にのみ使用できます。Pod を root として実行していない場合は、引数から `chmod -R 777` を削除します。
      2 7
      モデルへのパスを指定します。
      3
      InferenceService にある containers.image の値。この値にアクセスするには、oc get configmap inferenceservice-config -n redhat-ods-operator -oyaml | grep kserve-storage-initializer: のコマンドを実行します。
      4
      S3 バケットへのアクセスキー ID。
      5
      S3 バケットへのシークレットアクセスキー。
      6
      S3 バケットの名前。
      8
      S3 バケットへのエンドポイント。
      9
      AWS S3 バケットを使用する場合の S3 バケットのリージョン。ODF や Minio などの他の S3 互換ストレージを使用する場合は、AWS_DEFAULT_REGION 環境変数を削除できます。
      10
      SSL エラーが発生した場合は、S3_VERIFY_SSLfalse に変更します。
  4. プロジェクト namespace に vllm-multinode-runtime カスタムランタイムを作成します。

    oc process vllm-multinode-runtime-template -n redhat-ods-applications|oc apply -n kserve-demo -f -
    Copy to Clipboard Toggle word wrap
  5. 次の InferenceService 設定を使用してモデルをデプロイします。

    apiVersion: serving.kserve.io/v1beta1
    kind: InferenceService
    metadata:
      annotations:
        serving.kserve.io/deploymentMode: RawDeployment
        serving.kserve.io/autoscalerClass: external
      name: <inference service name>
    spec:
      predictor:
        model:
          modelFormat:
            name: vLLM
          runtime: vllm-multinode-runtime
          storageUri: <storage_uri_path> 
    1
    
        workerSpec: {} 
    2
    Copy to Clipboard Toggle word wrap
    1
    デプロイ方法に応じてモデルへのパスを指定します。
    • PVC の場合: pvc://<pvc_name>/<model_path>
    • OCI コンテナーイメージの場合: oci://<registry_host>/<org_or_username>/<repository_name><tag_or_digest>
    2
    InferenceService には次の設定を追加できます。
    • workerSpec.tensorParallelSize: ノードごとに使用される GPU の数を決定します。ヘッドノードとワーカーノードのデプロイメントリソースの GPU タイプ数は、どちらも自動的に更新されます。workerSpec.tensorParallelSize の値は、必ず 1 以上にしてください。
    • workerSpec.pipelineParallelSize: デプロイメントでモデルのバランスをとるために使用されるノードの数を決定します。この変数は、ヘッドノードとワーカーノードの両方を含むノードの合計数を表します。workerSpec.pipelineParallelSize の値は、必ず 2 以上にしてください。実稼働環境では、この値は変更しないでください。

      注記

      お使いの環境およびモデルサイズに応じて、追加の引数を指定する必要がある場合があります。

  6. InferenceService 設定を適用してモデルをデプロイします。

    oc apply -f <inference-service-file.yaml>
    Copy to Clipboard Toggle word wrap

検証

複数の GPU ノードにモデルをデプロイするように環境を設定したことを確認するには、GPU リソースのステータス、InferenceService のステータス、Ray クラスターのステータスを確認し、モデルにリクエストを送信します。

  • GPU リソースのステータスを確認します。

    • ヘッドノードとワーカーノードの Pod 名を取得します。

      # Get pod name
      podName=$(oc get pod -l app=isvc.granite-8b-code-base-pvc-predictor --no-headers|cut -d' ' -f1)
      workerPodName=$(oc get pod -l app=isvc.granite-8b-code-base-pvc-predictor-worker --no-headers|cut -d' ' -f1)
      
      oc wait --for=condition=ready pod/${podName} --timeout=300s
      # Check the GPU memory size for both the head and worker pods:
      echo "### HEAD NODE GPU Memory Size"
      kubectl exec $podName -- nvidia-smi
      echo "### Worker NODE GPU Memory Size"
      kubectl exec $workerPodName -- nvidia-smi
      Copy to Clipboard Toggle word wrap

      応答の例

      +-----------------------------------------------------------------------------------------+
      | NVIDIA-SMI 550.90.07              Driver Version: 550.90.07      CUDA Version: 12.4     |
      |-----------------------------------------+------------------------+----------------------+
      | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
      | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
      |                                         |                        |               MIG M. |
      |=========================================+========================+======================|
      |   0  NVIDIA A10G                    On  |   00000000:00:1E.0 Off |                    0 |
      |  0%   33C    P0             71W /  300W |19031MiB /  23028MiB <1>|      0%      Default |
      |                                         |                        |                  N/A |
      +-----------------------------------------+------------------------+----------------------+
               ...
      +-----------------------------------------------------------------------------------------+
      | NVIDIA-SMI 550.90.07              Driver Version: 550.90.07      CUDA Version: 12.4     |
      |-----------------------------------------+------------------------+----------------------+
      | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
      | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
      |                                         |                        |               MIG M. |
      |=========================================+========================+======================|
      |   0  NVIDIA A10G                    On  |   00000000:00:1E.0 Off |                    0 |
      |  0%   30C    P0             69W /  300W |18959MiB /  23028MiB <2>|      0%      Default |
      |                                         |                        |                  N/A |
      +-----------------------------------------+------------------------+----------------------+
      Copy to Clipboard Toggle word wrap

      <1> と <2> の値をチェックして、モデルが適切にロードされたことを確認します。モデルがロードされなかった場合、これらのフィールドの値は 0MiB になります。

  • 次のコマンドを使用して、InferenceService のステータスを確認します。注記: テクノロジープレビューでは、推論にポート転送のみを使用できます。

    oc wait --for=condition=ready pod/${podName} -n $DEMO_NAMESPACE --timeout=300s
    export MODEL_NAME=granite-8b-code-base-pvc
    Copy to Clipboard Toggle word wrap

    応答の例

       NAME                 URL                                                   READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION                          AGE
       granite-8b-code-base-pvc   http://granite-8b-code-base-pvc.default.example.com
    Copy to Clipboard Toggle word wrap

  • モデルが推論に使用できることを確認するために、モデルにリクエストを送信します。

    oc wait --for=condition=ready pod/${podName} -n vllm-multinode --timeout=300s
    
    oc port-forward $podName 8080:8080 &
    
    curl http://localhost:8080/v1/completions \
           -H "Content-Type: application/json" \
           -d "{
                'model': "$MODEL_NAME",
                'prompt': 'At what temperature does Nitrogen boil?',
                'max_tokens': 100,
                'temperature': 0
            }"
    Copy to Clipboard Toggle word wrap

シングルモデルサービングプラットフォームを使用してモデルをデプロイすると、そのモデルは、API リクエストを使用してアクセスできるサービスとして利用できます。これにより、データ入力に基づく予測を返すことができます。API リクエストを使用してデプロイされたモデルと対話するには、モデルの推論エンドポイントを知っておく必要があります。

さらに、トークン認証を有効にすることで推論エンドポイントを保護した場合は、推論リクエストで認証トークンを指定できるように、認証トークンへのアクセス方法を理解する必要があります。

2.13.1. デプロイされたモデルの認証トークンへのアクセス

トークン認証を有効にすることでモデル推論エンドポイントを保護した場合は、推論リクエストで認証トークンを指定できるように、認証トークンへのアクセス方法を理解する必要があります。

前提条件

  • Red Hat OpenShift AI にログインしている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。
  • シングルモデルサービングプラットフォームを使用してモデルをデプロイした。

手順

  1. OpenShift AI ダッシュボードで、Data science projects をクリックします。

    Data science projects のページが開きます。

  2. デプロイされたモデルが含まれるプロジェクトの名前をクリックします。

    プロジェクトの詳細ページが開きます。

  3. Models タブをクリックします。
  4. Models and model servers リストで、モデルのセクションを展開します。

    認証トークンは、Token secret フィールドの Token authentication セクションに表示されます。

  5. オプション: 推論リクエストで使用する認証トークンをコピーするには、トークン値の横に表示される Copy ボタン ( osd copy ) をクリックします。

2.13.2. デプロイされたモデルの推論エンドポイントにアクセスする

デプロイされたモデルに対して推論リクエストを行うには、利用可能な推論エンドポイントへのアクセス方法を知っておく必要があります。

サポートされているランタイムとコマンド例で使用するパスのリストは、推論エンドポイント を参照してください。

前提条件

  • Red Hat OpenShift AI にログインしている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。
  • シングルモデルサービングプラットフォームを使用してモデルをデプロイした。
  • デプロイされたモデルに対してトークン認証を有効にしている場合は、関連付けられたトークン値があります。

手順

  1. OpenShift AI ダッシュボードで、ModelsModel deployments をクリックします。

    モデルの推論エンドポイントは、Inference endpoint フィールドに表示されます。

  2. モデルで実行するアクション (およびモデルがそのアクションをサポートしているかどうか) に応じて、表示されている推論エンドポイントをコピーし、URL の末尾にパスを追加します。
  3. エンドポイントを使用して、デプロイされたモデルに API リクエストを送信します。

クラスター管理者は、シングルモデルサービングプラットフォームの監視を設定する際に、管理者以外のユーザーは OpenShift Web コンソールを使用して、KServe コンポーネントのモデルサービングランタイムメトリクスを表示できます。

前提条件

手順

  1. OpenShift Web コンソールにログインします。
  2. Developer パースペクティブに切り替えます。
  3. 左側のメニューで、Observe をクリックします。
  4. Red Hat OpenShift Dedicated でのプロジェクトメトリクスのモニタリング または Red Hat OpenShift Service on AWS でのプロジェクトメトリクスのモニタリング で説明されているように、Web コンソールを使用して、caikit_*tgi_*ovms_*、および vllm:* モデルサービングランタイムメトリクスのクエリーを実行します。OpenShift Service Mesh に関連付けられた istio_* メトリクスのクエリーも実行できます。以下に例を示します。

    1. 次のクエリーは、vLLM ランタイムでデプロイされたモデルについて、一定期間内に成功した推論リクエストの数を表示します。

      sum(increase(vllm:request_success_total{namespace=${namespace},model_name=${model_name}}[${rate_interval}]))
      Copy to Clipboard Toggle word wrap
    2. 次のクエリーは、スタンドアロン TGIS ランタイムでデプロイされたモデルについて、一定期間内に成功した推論リクエストの数を表示します。

      sum(increase(tgi_request_success{namespace=${namespace}, pod=~${model_name}-predictor-.*}[${rate_interval}]))
      Copy to Clipboard Toggle word wrap
    3. 次のクエリーは、Caikit Standalone ランタイムでデプロイされたモデルについて、一定期間内に成功した推論リクエストの数を表示します。

      sum(increase(predict_rpc_count_total{namespace=${namespace},code=OK,model_id=${model_name}}[${rate_interval}]))
      Copy to Clipboard Toggle word wrap
    4. 次のクエリーは、OpenVINO Model Server ランタイムでデプロイされたモデルについて、一定期間内に成功した推論リクエストの数を表示します。

      sum(increase(ovms_requests_success{namespace=${namespace},name=${model_name}}[${rate_interval}]))
      Copy to Clipboard Toggle word wrap

2.15. モデルのパフォーマンスの監視

シングルモデルサービングプラットフォームでは、プラットフォームにデプロイされている特定のモデルのパフォーマンスメトリクスを表示できます。

2.15.1. デプロイされたモデルのパフォーマンスメトリクスの表示

シングルモデルサービングプラットフォームにデプロイされている特定のモデルについて、次のメトリクスを監視できます。

  • リクエスト数 - 特定のモデルに対して失敗または成功したリクエストの数。
  • 平均応答時間 (ミリ秒) - 特定のモデルがリクエストに応答するまでにかかる平均時間。
  • CPU 使用率 (%) - 特定のモデルによって現在使用されている、モデルレプリカごとの CPU 制限の割合。
  • メモリー使用率 (%) - 特定のモデルによって使用されているモデルレプリカごとのメモリー制限の割合。

これらのメトリクスの時間範囲と更新間隔を指定すると、使用量のピーク時間帯や、指定した時間におけるモデルのパフォーマンスなどを判断するのに役立ちます。

前提条件

  • Red Hat OpenShift AI がインストール済みである。
  • Red Hat OpenShift AI にログインしている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。
  • 次のダッシュボード設定オプションは、次のようにデフォルト値に設定されている。

    disablePerformanceMetrics:false
    disableKServeMetrics:false
    Copy to Clipboard Toggle word wrap

    ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。

  • プリインストールされたランタイムを使用して、シングルモデルサービングプラットフォームにモデルをデプロイしている。

    注記

    メトリクスは、プリインストールされたモデルサービングランタイム、またはプリインストールされたランタイムから複製されたカスタムランタイムを使用してデプロイされたモデルに対してのみサポートされます。

手順

  1. OpenShift AI ダッシュボードのナビゲーションメニューから、Data science projects をクリックします。

    Data science projects のページが開きます。

  2. 監視するデータサイエンスモデルが含まれているプロジェクトの名前をクリックします。
  3. プロジェクトの詳細ページで、Models タブをクリックします。
  4. 使用するモデルを選択します。
  5. Endpoint performance タブで、次のオプションを設定します。

    • 時間範囲 - メトリクスを追跡する期間を指定します。1 時間、24 時間、7 日、30 日のいずれかの値を選択できます。
    • 更新間隔 - (最新のデータを表示するために) メトリクスページのグラフを更新する頻度を指定します。15 秒、30 秒、1 分、5 分、15 分、30 分、1 時間、2 時間、1 日の値のいずれかを選択できます。
  6. 下にスクロールすると、リクエスト数、平均応答時間、CPU 使用率、メモリー使用率のデータグラフが表示されます。

検証

Endpoint performance タブには、モデルのメトリクスのグラフが表示されます。

2.15.2. Grafana メトリクスダッシュボードのデプロイ

ユーザーワークロードモニタリング (UWM) 用の Grafana メトリクスダッシュボードをデプロイし、シングルモデルサービングプラットフォームにデプロイされたモデルのパフォーマンスとリソース使用状況のメトリクスを監視できます。

この例 のように Kustomize オーバーレイを作成できます。オーバーレイを使用して、OpenVino Model Server (OVMS) および vLLM でデプロイされたモデル用の事前設定されたメトリクスダッシュボードをデプロイします。

前提条件

  • OpenShift クラスターのクラスター管理者権限がある。
  • OpenShift コマンドラインインターフェイス (CLI) がインストールされている。詳細は、OpenShift CLI のインストール (OpenShift Dedicated) または OpenShift CLI のインストール (Red Hat OpenShift Service on AWS) を参照してください。
  • この例 のように、Grafana インスタンスをデプロイするためのオーバーレイを作成している。

    注記

    GPU メトリクスを表示するには、Enabling the GPU monitoring dashboard の説明に従って、NVIDIA GPU モニタリングダッシュボードを有効にする必要があります。GPU モニタリングダッシュボードは、GPU ノードの GPU 使用率、メモリー使用量、およびその他のメトリクスの包括的なビューを提供します。

手順

  1. ターミナルウィンドウで、クラスター管理者として OpenShift CLI にログインします。
  2. Grafana Operator およびメトリクスダッシュボードをインストールするためのオーバーレイをまだ作成していない場合は、RHOAI UWM リポジトリー を参照して作成します。
  3. 作成したオーバーレイを使用して、Grafana インスタンスおよびメトリクスダッシュボードを OpenShift クラスターにインストールします。<overlay-name> は、オーバーレイの名前に置き換えます。

    oc apply -k overlays/<overlay-name>
    Copy to Clipboard Toggle word wrap
  4. Grafana インスタンスの URL を取得します。<namespace> は、Grafana インスタンスが含まれる namespace に置き換えます。

    oc get route -n <namespace> grafana-route -o jsonpath='{.spec.host}'
    Copy to Clipboard Toggle word wrap

    次の例のような出力が表示されます。URL を使用して Grafana インスタンスにアクセスします。

    grafana-<namespace>.apps.example-openshift.com
    Copy to Clipboard Toggle word wrap

検証

  • Grafana インスタンスの KServe、vLLM、および OVMS で利用可能な事前設定されたダッシュボードにアクセスできます。

2.15.3. Grafana インスタンスへの vLLM/GPU メトリクスダッシュボードのデプロイ

アクセラレーターと vLLM のパフォーマンスメトリクスを監視するために Grafana ボードをデプロイします。

前提条件

  • Grafana メトリクスダッシュボードのデプロイ の説明に従って、Grafana メトリクスダッシュボードをデプロイした。
  • Grafana インスタンスにアクセスできる。
  • 設定ファイル内の環境変数を置き換えるために使用されるコマンドラインツールである envsubst をインストールした。詳細は、GNU の gettext ドキュメントを参照してください。

手順

  1. 次の例のように、YAML ファイルで GrafanaDashboard オブジェクトを定義します。

    1. アクセラレーターメトリクスを監視するには、nvidia-vllm-dashboard.yaml を参照してください。
    2. vLLM メトリクスを監視するには、grafana-vllm-dashboard.yaml を参照してください。
  2. 以下の例のような inputs.env ファイルを作成します。NAMESPACE パラメーターおよび MODEL_NAME パラメーターを独自の値に置き換えます。

    NAMESPACE=<namespace> 
    1
    
    MODEL_NAME=<model-name> 
    2
    Copy to Clipboard Toggle word wrap
    1
    NAMESPACE は、モデルがデプロイされるターゲット namespace です。
    2
    MODEL_NAME は、InferenceService で定義されているモデル名です。モデル名は、Grafana ダッシュボードで Pod 名をフィルタリングするためにも使用されます。
  3. 以下のアクションを実行して、YAML ファイルの NAMESPACE パラメーターおよび MODEL_NAME パラメーターを input.env ファイルの値に置き換えます。

    1. inputs.env に記載されているパラメーターを環境変数としてエクスポートします。

      export $(cat inputs.env | xargs)
      Copy to Clipboard Toggle word wrap
    2. YAML ファイル内の $NAMESPACE および ${MODEL_NAME) 変数を、エクスポートした環境変数の値に置き換えます。

      envsubst '${NAMESPACE} ${MODEL_NAME}' < nvidia-vllm-dashboard.yaml > nvidia-vllm-dashboard-replaced.yaml
      Copy to Clipboard Toggle word wrap
  4. YAML ファイルに更新された値が含まれていることを確認します。
  5. ダッシュボードオブジェクトをデプロイします。

    oc create -f nvidia-vllm-dashboard-replaced.yaml
    Copy to Clipboard Toggle word wrap

検証

Grafana インスタンスでアクセラレーターと vLLM メトリクスダッシュボードを表示できます。

2.15.4. Grafana メトリクス

Grafana ボードを使用して、アクセラレーターおよび vLLM パフォーマンスメトリクスを監視できます。datasourceinstance および gpu は、ボード内で定義された変数です。

2.15.4.1. アクセラレーターメトリクス

アクセラレーターのメトリクスを追跡して、ハードウェアの健全性を確認します。

NVIDIA GPU の使用率

GPU が実際にタスクを処理している時間の割合を追跡し、GPU のワークロードレベルを示します。

Query

DCGM_FI_DEV_GPU_UTIL{instance=~"$instance", gpu=~"$gpu"}
Copy to Clipboard Toggle word wrap
NVIDIA GPU メモリー使用率

メモリー使用量と空きメモリーを比較します。これは、GPU を多用するワークロードでのメモリーのボトルネックを特定するために重要です。

Query

DCGM_FI_DEV_POWER_USAGE{instance=~"$instance", gpu=~"$gpu"}
Copy to Clipboard Toggle word wrap

Sum

sum(DCGM_FI_DEV_POWER_USAGE{instance=~"$instance", gpu=~"$gpu"})
Copy to Clipboard Toggle word wrap
NVIDIA GPU の温度

ハードウェアの劣化を防ぐために、GPU が安全な熱制限内で動作されるようにします。

Query

DCGM_FI_DEV_GPU_TEMP{instance=~"$instance", gpu=~"$gpu"}
Copy to Clipboard Toggle word wrap

Avg

avg(DCGM_FI_DEV_GPU_TEMP{instance=~"$instance", gpu=~"$gpu"})
Copy to Clipboard Toggle word wrap
NVIDIA GPU スロットリング

GPU スロットリングは、GPU が過熱による損傷を避けるために自動的にクロック (動作周波数) を下げるときに発生します。

GPU スロットリングを識別するには、次のメトリクスを使用できます。

  • GPU temperature: GPU 温度を監視します。スロットリングは、GPU が特定の温度 (たとえば 85 - 90°C) に達したときによく発生します。
  • SM clock speed: コアクロック速度を監視します。GPU に負荷がかかっているときにクロック速度が大幅に低下すると、スロットリングが発生していることを示します。
2.15.4.2. CPU メトリクス

CPU のメトリクスを追跡して、ハードウェアの健全性を確認できます。

CPU の使用率

CPU 使用率を追跡して、CPU に依存するワークロードを識別します。

Query

sum(rate(container_cpu_usage_seconds_total{namespace="$namespace", pod=~"$model_name.*"}[5m])) by (namespace)
Copy to Clipboard Toggle word wrap
CPU-GPU ボトルネック

CPU スロットリングと GPU 使用率メトリクスを組み合わせることで、リソース割り当ての非効率性を特定します。次の表は、CPU スロットリングと GPU 使用率の組み合わせと、お使いの環境でこれらのメトリクスが何を意味するのかを示しています。

Expand
CPU スロットリングGPU の使用率意味

Low

High

システムを適切に分散します。GPU は CPU の制約なしに最大限に活用されます。

High

Low

CPU リソースが制限されています。CPU が GPU の処理要求に対応できず、GPU が十分に活用されない可能性があります。

High

High

CPU と GPU の両方のワークロードが増えているため、リソースをスケールアップする必要がある可能性があります。

Query

sum(rate(container_cpu_cfs_throttled_seconds_total{namespace="$namespace", pod=~"$model_name.*"}[5m])) by (namespace)
avg_over_time(DCGM_FI_DEV_GPU_UTIL{instance=~"$instance", gpu=~"$gpu"}[5m])
Copy to Clipboard Toggle word wrap
2.15.4.3. vLLM メトリクス

vLLM モデルに関連するメトリクスを追跡できます。

GPU と CPU のキャッシュ使用率

vLLM モデルによって使用される GPU メモリーの割合を追跡し、メモリー効率に関する分析情報を提供します。

Query

sum_over_time(vllm:gpu_cache_usage_perc{namespace="${namespace}",pod=~"$model_name.*"}[24h])
Copy to Clipboard Toggle word wrap
要求の実行

アクティブに処理されているリクエストの数。ワークロードの同時実行性を監視するのに役立ちます。

num_requests_running{namespace="$namespace", pod=~"$model_name.*"}
Copy to Clipboard Toggle word wrap
待機中のリクエスト

キュー内のリクエストを追跡し、システムの飽和状態を示します。

num_requests_waiting{namespace="$namespace", pod=~"$model_name.*"}
Copy to Clipboard Toggle word wrap
接頭辞キャッシュヒット率

ヒット率が高い場合、キャッシュされた計算が効率的に再利用され、リソースの使用が最適化されます。

クエリー

vllm:gpu_cache_usage_perc{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}
vllm:cpu_cache_usage_perc{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}
Copy to Clipboard Toggle word wrap
リクエストの合計数

クエリー

vllm:request_success_total{finished_reason="length",namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}
Copy to Clipboard Toggle word wrap

モデル推論に設定された最大トークン制限に達したため、リクエストは終了しました。

クエリー

vllm:request_success_total{finished_reason="stop",namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}
Copy to Clipboard Toggle word wrap

モデルの出力または停止条件 (文の終わりやトークンの完了など) に基づいて、リクエストが自然に完了しました。

エンドツーエンドのレイテンシー
最適なユーザーエクスペリエンスを実現するために、リクエストの全体の処理時間を測定します。

ヒストグラムクエリー

histogram_quantile(0.99, sum by(le) (rate(vllm:e2e_request_latency_seconds_bucket{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])))
histogram_quantile(0.95, sum by(le) (rate(vllm:e2e_request_latency_seconds_bucket{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])))
histogram_quantile(0.9, sum by(le) (rate(vllm:e2e_request_latency_seconds_bucket{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])))
histogram_quantile(0.5, sum by(le) (rate(vllm:e2e_request_latency_seconds_bucket{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])))
rate(vllm:e2e_request_latency_seconds_sum{namespace="$namespace", pod=~"$model_name.*",model_name="$model_name"}[5m])
rate(vllm:e2e_request_latency_seconds_count{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])
Copy to Clipboard Toggle word wrap
最初のトークンまでの時間 (TTFT) の遅延

応答の最初のトークンを生成するのにかかる時間。

ヒストグラムクエリー

histogram_quantile(0.99, sum by(le) (rate(vllm:time_to_first_token_seconds_bucket{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])))
histogram_quantile(0.95, sum by(le) (rate(vllm:time_to_first_token_seconds_bucket{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])))
histogram_quantile(0.9, sum by(le) (rate(vllm:time_to_first_token_seconds_bucket{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])))
histogram_quantile(0.5, sum by(le) (rate(vllm:time_to_first_token_seconds_bucket{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])))
rate(vllm:time_to_first_token_seconds_sum{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])
rate(vllm:time_to_first_token_seconds_count{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])
Copy to Clipboard Toggle word wrap
出力トークンあたりの時間 (TPOT) のレイテンシー

各出力トークンを生成するのにかかる平均時間。

ヒストグラムクエリー

histogram_quantile(0.99, sum by(le) (rate(vllm:time_per_output_token_seconds_bucket{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])))
histogram_quantile(0.95, sum by(le) (rate(vllm:time_per_output_token_seconds_bucket{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])))
histogram_quantile(0.9, sum by(le) (rate(vllm:time_per_output_token_seconds_bucket{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])))
histogram_quantile(0.5, sum by(le) (rate(vllm:time_per_output_token_seconds_bucket{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])))
rate(vllm:time_per_output_token_seconds_sum{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])
rate(vllm:time_per_output_token_seconds_count{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])
Copy to Clipboard Toggle word wrap
プロンプトトークンのスループットと生成スループット

LLM 最適化のプロンプトトークンの処理速度を追跡します。

クエリー

rate(vllm:prompt_tokens_total{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])
rate(vllm:generation_tokens_total{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"}[5m])
Copy to Clipboard Toggle word wrap
生成されたトークンの合計
リアルタイムアプリケーションにとって重要な、応答トークンの生成効率を測定します。

クエリー

sum(vllm:generation_tokens_total{namespace="$namespace", pod=~"$model_name.*", model_name="$model_name"})
Copy to Clipboard Toggle word wrap

2.16. モデルサービングランタイムの最適化

必要に応じて、OpenShift AI で利用可能なプリインストールされたモデルサービングランタイムを拡張して、推論の最適化、レイテンシーの短縮、リソース割り当ての微調整など、追加の利点と機能を活用できます。

2.16.1. 投機的デコーディングとマルチモーダル推論の有効化

vLLM NVIDIA GPU ServingRuntime for KServe ランタイムを設定して、大規模言語モデル (LLM) の推論時間を最適化するための並列処理技術である投機的デコーディングを使用できます。

ランタイムを設定して、Vision-Language Model (VLM) の推論をサポートすることもできます。VLM は、視覚データとテキストデータの両方を統合するマルチモーダルモデルのサブセットです。

次の手順では、投機的デコーディングとマルチモーダル推論用に vLLM NVIDIA GPU ServingRuntime for KServe をカスタマイズする方法を説明します。

前提条件

  • OpenShift AI 管理者権限を持つユーザーとして OpenShift AI にログインしている。
  • ドラフトモデルで投機的デコーディングに vLLM モデルサービングランタイムを使用している場合は、元のモデルと投機的モデルを S3 互換オブジェクトストレージ内の同じフォルダーに保存している。

手順

  1. シングルモデルサービングプラットフォームへのモデルのデプロイ で説明されている手順に従って、モデルをデプロイします。
  2. Serving runtime フィールドで、vLLM NVIDIA GPU ServingRuntime for KServe を選択します。
  3. プロンプト内での n-gram のマッチングを使用した投機的デコーディング用に vLLM モデルサービングランタイムを設定するには、Configuration parameters セクションの Additional serving runtime arguments に次の引数を追加します。

    --speculative-model=[ngram]
    --num-speculative-tokens=<NUM_SPECULATIVE_TOKENS>
    --ngram-prompt-lookup-max=<NGRAM_PROMPT_LOOKUP_MAX>
    --use-v2-block-manager
    Copy to Clipboard Toggle word wrap
    1. <NUM_SPECULATIVE_TOKENS><NGRAM_PROMPT_LOOKUP_MAX> を独自の値に置き換えます。

      注記

      推論スループットは、n-gram による推測に使用されるモデルによって異なります。

  4. ドラフトモデルを使用した投機的デコーディング用に vLLM モデルサービングランタイムを設定するには、Configuration parameters セクションの Additional serving runtime arguments に次の引数を追加します。

    --port=8080
    --served-model-name={{.Name}}
    --distributed-executor-backend=mp
    --model=/mnt/models/<path_to_original_model>
    --speculative-model=/mnt/models/<path_to_speculative_model>
    --num-speculative-tokens=<NUM_SPECULATIVE_TOKENS>
    --use-v2-block-manager
    Copy to Clipboard Toggle word wrap
    1. <path_to_speculative_model><path_to_original_model> を、S3 互換オブジェクトストレージ上の投機的モデルと元のモデルへのパスに置き換えます。
    2. <NUM_SPECULATIVE_TOKENS> を独自の値に置き換えます。
  5. マルチモーダル推論用に vLLM モデルサービングランタイムを設定するには、Configuration parameters セクションの Additional serving runtime arguments に次の引数を追加します。

    --trust-remote-code
    Copy to Clipboard Toggle word wrap
    注記

    --trust-remote-code 引数は、信頼できるソースからのモデルでのみ使用してください。

  6. Deploy をクリックします。

検証

  • 投機的デコーディング用に vLLM モデルサービングランタイムを設定している場合は、次のサンプルコマンドを使用して、デプロイされたモデルへの API リクエストを確認します。

    curl -v https://<inference_endpoint_url>:443/v1/chat/completions
    -H "Content-Type: application/json"
    -H "Authorization: Bearer <token>"
    Copy to Clipboard Toggle word wrap
  • マルチモーダル推論用に vLLM モデルサービングランタイムを設定している場合は、次のサンプルコマンドを使用して、デプロイした Vision-Language Model (VLM) への API リクエストを確認します。

    curl -v https://<inference_endpoint_url>:443/v1/chat/completions
    -H "Content-Type: application/json"
    -H "Authorization: Bearer <token>"
    -d '{"model":"<model_name>",
         "messages":
            [{"role":"<role>",
              "content":
                 [{"type":"text", "text":"<text>"
                  },
                  {"type":"image_url", "image_url":"<image_url_link>"
                  }
                 ]
             }
            ]
        }'
    Copy to Clipboard Toggle word wrap

2.17. パフォーマンスの最適化とチューニング

2.17.1. LLM を利用したアプリケーションの GPU 要件の決定

OpenShift AI でホストされる Large Language Model (LLM) を利用したアプリケーション用に GPU を選択する際には、考慮すべき要素がいくつかあります。

次のガイドラインは、モデルのサイズと予想される使用状況に応じて、アプリケーションのハードウェア要件を決定するのに役立ちます。

  • メモリー要件の見積もり: 一般的な目安として、16 ビット精度の N パラメーターを持つモデルには、約 2N バイトの GPU メモリーが必要です。たとえば、80 億パラメーターのモデルでは約 16 GB の GPU メモリーが必要です。700 億パラメーターのモデルでは約 140 GB が必要です。
  • 量子化: メモリー要件を削減し、スループットを向上させるために、量子化を使用して、INT8、FP8、INT4 などの低精度形式でモデルをロードまたは実行できます。これにより、モデルの精度がわずかに低下しますが、メモリーフットプリントが削減されます。

    注記

    vLLM ServingRuntime for KServe モデルサービングランタイムは、いくつかの量子化方法をサポートしています。サポートされている実装と互換性のあるハードウェアの詳細は、Supported hardware for quantization kernels を参照してください。

  • キー値キャッシュ用の追加メモリー: モデルの重みに加えて、リクエストの数と各リクエストのシーケンスの長さに応じて増加するアテンションキー値 (KV) キャッシュを格納するための GPU メモリーも必要です。これは、特に大規模モデルの場合、リアルタイムアプリケーションのパフォーマンスに影響を与える可能性があります。
  • 推奨される GPU 設定:

    • 小規模モデル (10 - 80 億パラメーター): この範囲のモデルの場合、通常、24 GB のメモリーを搭載した GPU があれば、少数の同時ユーザーをサポートするのに十分です。
    • 中規模モデル (100 - 340 億パラメーター):

      • 200 億パラメーター未満のモデルには、少なくとも 48 GB の GPU メモリーが必要です。
      • 200 - 340 億のパラメーターを持つモデルでは、単一の GPU に少なくとも 80 GB 以上のメモリーが必要です。
    • 大規模モデル (700 億パラメーター): この規模のモデルでは、テンソル並列化技術を使用して複数の GPU に分散する必要がある場合があります。テンソル並列化により、モデルを複数の GPU に分散できるため、トークン間のレイテンシーが改善され、KV キャッシュ用の追加メモリーが解放されて最大バッチサイズが増加します。テンソル並列化は、GPU に NVLink などの高速相互接続がある場合に最も効果的に機能します。
    • 非常に大規模なモデル (4050 億パラメーター): 非常に大規模なモデルの場合、メモリー需要を減らすために量子化を推奨します。パイプライン並列化を使用して、複数の GPU 間、または 2 台のサーバー間でモデルを分散することもできます。このアプローチでは、単一サーバーのメモリー制限を超えて拡張できますが、最適なパフォーマンスを得るにはサーバー間の通信を慎重に管理する必要があります。

最良の結果を得るには、小さいモデルから始めて、並列化や量子化などの手法を使用して、パフォーマンスとメモリーの要件を満たすように、必要に応じて大きいモデルにスケールアップしてください。

テキスト要約アプリケーションや RAG アプリケーション、およびユーザーがアップロードした大容量のドキュメントを処理する LLM ベースのサービスでは、考慮すべき要素が他にもあります。

  • 長い入力シーケンス: 各ユーザークエリーに、長いプロンプトや、アップロードされたドキュメントなどの大量のコンテキストが含まれている場合、入力シーケンスの長さが通常のチャットアプリケーションよりも大幅に長くなる可能性があります。入力シーケンス長が長くなると、事前入力時間 (モデルが応答を生成する前に初期入力シーケンスを処理するのにかかる時間) が長くなり、最初のトークン生成までの時間 (TTFT) が長くなる可能性があります。TTFT が長くなると、アプリケーションの応答性に影響が生じる可能性があります。最適なユーザーエクスペリエンスを実現するために、この遅延を最小限に抑えてください。
  • KV キャッシュの使用: シーケンスが長くなるほど、キー値 (KV) キャッシュ に多くの GPU メモリーが必要になります。KV キャッシュには、生成中のモデルのパフォーマンスを向上させるための中間アテンションデータが格納されます。リクエストあたりの KV キャッシュ使用率を高くするには、十分な GPU メモリーを備えたハードウェアセットアップが必要です。これは、複数のユーザーが同時にモデルをクエリーする場合に特に重要です。各リクエストによってメモリーの総負荷が増加するためです。
  • 最適なハードウェア設定: 応答性を維持し、メモリーのボトルネックを回避するには、十分なメモリーを備えた GPU 設定を選択します。たとえば、80 億のモデルを単一の 24 GB GPU で実行する代わりに、より大きな GPU (48 GB や 80 GB など) または複数の GPU にモデルをデプロイすると、KV キャッシュのメモリーヘッドルームが増え、トークン間のレイテンシーが短縮されるため、パフォーマンスが向上します。マルチ GPU セットアップとテンソル並列化を使用すると、メモリー需要を管理し、大規模な入力シーケンスの効率を向上できます。

要約すると、ドキュメントベースのアプリケーションで最適な応答性とスケーラビリティーを確保するには、GPU メモリー容量の高いハードウェアを優先的に考慮する必要があります。また、長い入力シーケンスと KV キャッシュのメモリー要件の増加に対応するために、マルチ GPU セットアップも検討する必要があります。

2.17.3. 推論のパフォーマンスメトリクス

レイテンシースループット、および 100 万トークンあたりのコスト は、推論時のモデルの応答生成効率を評価する際に考慮すべき重要なメトリクスです。これらのメトリクスは、モデルの推論パフォーマンスを包括的に把握し、さまざまなユースケースの速度、効率、コストのバランスをとるのに役立ちます。

2.17.3.1. レイテンシー

レイテンシー は、インタラクティブなユースケースやリアルタイムのユースケースにとって重要です。これは次のメトリクスを使用して測定します。

  • 最初のトークン生成までの時間 (TTFT): 最初のリクエストから最初のトークン生成までの遅延 (ミリ秒単位)。このメトリクスはストリーミングレスポンスにとって重要です。
  • トークン間のレイテンシー (ITL): 最初のトークンの後に後続の各トークンを生成するのにかかる時間 (ミリ秒単位)。ストリーミングにも関連します。
  • 出力トークンあたりの時間 (TPOT): 非ストリーミングリクエストの場合に、出力シーケンス内の各トークンを生成するのにかかる平均時間 (ミリ秒単位)。
2.17.3.2. スループット

スループット は、モデルサーバーの全体的な効率を測定したものです。これは次のメトリクスで表されます。

  • 1 秒あたりのトークン数 (TPS): すべてのアクティブなリクエストで 1 秒あたりに生成されるトークンの合計数。
  • 1 秒あたりのリクエスト数 (RPS): 1 秒あたりに処理されるリクエストの数。RPS は、応答時間と同様に、シーケンス長の影響を強く受けます。
2.17.3.3. 100 万トークンあたりのコスト

100 万トークンあたりのコスト は、モデルの推論の費用対効果を測定したものです。これは、生成された 100 万トークンあたりに発生する費用を示します。このメトリクスは、モデルをデプロイすることの経済的な実現可能性とスケーラビリティーの両方を評価するのに役立ちます。

2.17.4. CUDA メモリー不足エラーを解決する

場合によっては、使用されているモデルとハードウェアアクセラレーターに応じて、TGIS メモリー自動チューニングアルゴリズムが長いシーケンスを処理するために必要な GPU メモリーの量を過小評価することがあります。この間違った計算により、モデルサーバーから Compute Unified Architecture (CUDA) のメモリー不足 (OOM) エラー応答が発生する可能性があります。その場合は、次の手順で説明するように、TGIS モデルサービングランタイムでパラメーターを更新または追加する必要があります。

注記

Text Generation Inference Server (TGIS) Standalone ServingRuntime for KServe は非推奨となりました。詳細は、OpenShift AI リリースノート を参照してください。

前提条件

  • OpenShift AI 管理者権限を持つユーザーとして OpenShift AI にログインしている。

手順

  1. OpenShift AI ダッシュボードから、SettingsServing runtimes をクリックします。

    Serving runtimes ページが開き、すでにインストールされ有効になっているモデルサービングランタイムが表示されます。

  2. モデルのデプロイに使用したランタイムに基づき、次のいずれかのアクションを実行します。

    • プリインストールされた Text Generation Inference Server (TGIS) Standalone ServingRuntime for KServe ランタイムを使用した場合は、ランタイムを複製してカスタムバージョンを作成してから残りの手順を実行します。プリインストールされている TGIS ランタイムの複製の詳細は、シングルモデルサービングプラットフォーム用のカスタムモデルサービングランタイムの追加 を参照してください。
    • すでにカスタム TGIS ランタイムを使用している場合は、ランタイムの横にあるアクションメニュー (⋮) をクリックし、Edit を選択します。

      埋め込み YAML エディターが開き、カスタムモデルサービングランタイムの内容が表示されます。

  3. BATCH_SAFETY_MARGIN 環境変数を追加または更新し、値を 30 に設定します。同様に、ESTIMATE_MEMORY_BATCH_SIZE 環境変数を追加または更新し、値を 8 に設定します。

    spec:
      containers:
        env:
        - name: BATCH_SAFETY_MARGIN
          value: 30
        - name: ESTIMATE_MEMORY_BATCH
          value: 8
    Copy to Clipboard Toggle word wrap
    注記

    BATCH_SAFETY_MARGIN パラメーターは、OOM 状態を回避するための安全マージンとして保持する空き GPU メモリーの割合を設定します。BATCH_SAFETY_MARGIN のデフォルト値は 20 です。ESTIMATE_MEMORY_BATCH_SIZE パラメーターは、メモリー自動チューニングアルゴリズムで使用されるバッチサイズを設定します。ESTIMATE_MEMORY_BATCH_SIZE のデフォルト値は 16 です。

  4. Update をクリックします。

    Serving runtimes ページが開き、インストール済みランタイムのリストが表示されます。更新したカスタムモデルサービングランタイムが表示されていることを確認します。

  5. モデルを再デプロイしてパラメーターの更新を反映するには、次のアクションを実行します。

    1. OpenShift AI ダッシュボードで、ModelsModel deployments をクリックします。
    2. 再デプロイするモデルを見つけて、モデルの横にあるアクションメニュー (⋮) をクリックし、Delete を選択します。
    3. シングルモデルサービングプラットフォームへのモデルのデプロイ の説明に従って、モデルを再デプロイします。

検証

  • モデルサーバーから正常な応答を受信し、CUDA OOM エラーが表示されなくなります。

2.18. NVIDIA NIM モデルサービングプラットフォームについて

NVIDIA NIM モデルサービングプラットフォーム で NVIDIA NIM 推論サービスを使用してモデルを展開できます。

NVIDIA AI Enterprise の一部である NVIDIA NIM は、クラウド、データセンター、ワークステーションをまたいで推論を実行する高性能 AI モデルの、セキュアで信頼性の高いデプロイメントのために設計されたマイクロサービスのセットです。

2.18.1. NVIDIA NIM モデルサービングプラットフォームの有効化

OpenShift AI 管理者は、Red Hat OpenShift AI ダッシュボードを使用して、NVIDIA NIM モデルサービスプラットフォームを有効にできます。

前提条件

  • OpenShift AI 管理者権限を持つユーザーとして OpenShift AI にログインしている。
  • シングルモデルサービングプラットフォームを有効にした。プリインストールされているランタイムを有効にする必要はありません。シングルモデルサービングプラットフォームを有効にする方法の詳細は、シングルモデルサービングプラットフォームの有効化 を参照してください。
  • ダッシュボード設定オプションの disableNIMModelServingfalse に設定されている。

    ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。

  • OpenShift AI で GPU サポートを有効にした。これには、Node Feature Discovery Operator と NVIDIA GPU Operator のインストールが含まれます。詳細は、Node Feature Discovery Operator のインストールNVIDIA GPU の有効化 を参照してください。
  • NVIDIA Cloud Account (NCA) をお持ちで、NVIDIA GPU Cloud (NGC) ポータルにアクセスできる。詳細は、NVIDIA GPU Cloud user guide を参照してください。
  • お使いの NCA アカウントが NVIDIA AI Enterprise Viewer ロールに関連付けられている。
  • NGC ポータルで NGC API キーを生成した。詳細は、NGC API keys を参照してください。

手順

  1. OpenShift AI ダッシュボードの左側のメニューで、ApplicationsExplore をクリックします。
  2. Explore ページで、NVIDIA NIM タイルを見つけます。
  3. アプリケーションタイルで Enable をクリックします。
  4. NGC API キーを入力し、Submit をクリックします。

検証

  • 有効にした NVIDIA NIM アプリケーションが Enabled ページに表示されます。

2.18.2. NVIDIA NIM モデルサービングプラットフォームにモデルをデプロイする

NVIDIA NIM モデルサービングプラットフォーム を有効にすると、プラットフォーム上で NVIDIA 向けに最適化されたモデルのデプロイを開始できます。

前提条件

  • Red Hat OpenShift AI にログインしている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。
  • NVIDIA NIM モデルサービングプラットフォーム を有効にした。
  • データサイエンスプロジェクトを作成した。
  • OpenShift AI でグラフィックプロセッシングユニット (GPU) のサポートを有効にした。これには、Node Feature Discovery Operator と NVIDIA GPU Operator のインストールが含まれます。詳細は、Node Feature Discovery Operator のインストールNVIDIA GPU の有効化 を参照してください。

手順

  1. 左側のメニューで、Data science projects をクリックします。

    Data science projects のページが開きます。

  2. モデルをデプロイするプロジェクトの名前をクリックします。

    プロジェクトの詳細ページが開きます。

  3. Models タブをクリックします。
  4. Models セクションで、次のいずれかの操作クションを実行します。

    • NVIDIA NIM model serving platform タイルで、タイル上の Select NVIDIA NIM をクリックし、Deploy model をクリックします。
    • 以前に NVIDIA NIM モデルサービングタイプを選択した場合は、Models ページの右上隅に NVIDIA model serving enabled が表示され、Deploy model ボタンも表示されます。続行するには、Deploy model をクリックします。

    Deploy model ダイアログが開きます。

  5. モデルをデプロイするためのプロパティーを次のように設定します。

    1. Model deployment name フィールドに、デプロイメントの一意の名前を入力します。
    2. NVIDIA NIM リストから、デプロイする NVIDIA NIM モデルを選択します。詳細は、Supported Models を参照してください。
    3. NVIDIA NIM storage size フィールドで、NVIDIA NIM モデルを保存するために作成されるクラスターストレージインスタンスのサイズを指定します。
    4. Number of model server replicas to deploy フィールドに値を指定します。
    5. Model server size リストから値を選択します。
  6. Hardware profile リストから、ハードウェアプロファイルを選択します。

    重要

    デフォルトでは、ハードウェアプロファイルはダッシュボードのナビゲーションメニューとユーザーインターフェイスに表示されませんが、アクセラレータープロファイルは表示されます。非推奨となったアクセラレータープロファイル機能に関連付けられたユーザーインターフェイスコンポーネントは、引き続き表示されます。ハードウェアプロファイルを有効にすると、Accelerator profiles リストの代わりに Hardware profiles リストが表示されます。ダッシュボードのナビゲーションメニューの Settings → Hardware profiles オプションと、ハードウェアプロファイルに関連付けられたユーザーインターフェイスコンポーネントを表示するには、OpenShift の OdhDashboardConfig カスタムリソース (CR) で、disableHardwareProfiles 値を false に設定します。ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。

  7. オプション: Customize resource requests and limit をクリックし、次の値を更新します。

    1. CPUs requests フィールドで、モデルサーバーで使用する CPU の数を指定します。このフィールドの横にあるリストを使用して、値をコアまたはミリコアで指定します。
    2. CPU limits フィールドで、モデルサーバーで使用する CPU の最大数を指定します。このフィールドの横にあるリストを使用して、値をコアまたはミリコアで指定します。
    3. Memory requests フィールドで、モデルサーバーに要求されたメモリーをギビバイト (Gi) 単位で指定します。
    4. Memory limits フィールドに、モデルサーバーの最大メモリー制限をギビバイト (Gi) 単位で指定します。
  8. オプション: Model route セクションで、Make deployed models available through an external route チェックボックスをオンにして、デプロイされたモデルを外部クライアントが利用できるようにします。
  9. デプロイされたモデルに対する推論リクエストにトークン認証を要求するには、次のアクションを実行します。

    1. Require token authentication を選択します。
    2. Service account name フィールドに、トークンが生成されるサービスアカウント名を入力します。
    3. 追加のサービスアカウントを追加するには、Add a service account をクリックし、別のサービスアカウント名を入力します。
  10. Deploy をクリックします。

検証

  • デプロイされたモデルがプロジェクトの Models タブに表示され、ダッシュボードの Model deployments ページで Status 列にチェックマークが付いて表示されていることを確認します。

2.18.3. NVIDIA NIM モデルサービングプラットフォームのモデル選択オプションのカスタマイズ

NVIDIA NIM モデルサービスプラットフォームでは、NVIDIA GPU Cloud (NGC) から利用可能なすべての NVIDIA NIM モデルを利用できます。NIM モデルは Deploy model ダイアログの NVIDIA NIM リストから選択してデプロイできます。リストに表示されるモデルをカスタマイズするには、希望するモデルを指定して ConfigMap オブジェクトを作成します。

前提条件

  • OpenShift クラスターのクラスター管理者権限を持っている。
  • NVIDIA Cloud Account (NCA) をお持ちで、NVIDIA GPU Cloud (NGC) ポータルにアクセスできる。
  • NVIDIA NIM モデルサービスプラットフォームで選択できる NVIDIA NIM モデルの ID を知っている。

    注記
    • モデル ID は NGC Catalog で確認できます。ID は通常 URL パスの一部です。
    • モデル ID は、NGC CLI を使用して検索することもできます。詳細は、NGC CLI リファレンス を参照してください。
  • アカウント のカスタムリソース (CR) の名前と namespace を知っている。

手順

  1. ターミナルウィンドウで、以下の例のように、クラスター管理者として OpenShift CLI にログインします。

    oc login <openshift_cluster_url> -u <admin_username> -p <password>
    Copy to Clipboard Toggle word wrap
  2. 次の例のような、NVIDIA NIM モデルサービスプラットフォームで選択できるようにするモデル ID を含む ConfigMap オブジェクトを YAML ファイルで定義します。

    apiVersion: v1
    kind: ConfigMap
    metadata:
     name: nvidia-nim-enabled-models
    data:
     models: |-
        [
        "mistral-nemo-12b-instruct",
        "llama3-70b-instruct",
        "phind-codellama-34b-v2-instruct",
        "deepseek-r1",
        "qwen-2.5-72b-instruct"
        ]
    Copy to Clipboard Toggle word wrap
  3. Account CR の名前および namespace を確認します。

    oc get account -A
    Copy to Clipboard Toggle word wrap

    次の例のような出力が表示されます。

    NAMESPACE         NAME       TEMPLATE  CONFIGMAP  SECRET
    redhat-ods-applications  odh-nim-account
    Copy to Clipboard Toggle word wrap
  4. ConfigMap オブジェクトを Account CR と同じ namespace にデプロイします。

    oc apply -f <configmap-name> -n <namespace>
    Copy to Clipboard Toggle word wrap

    <configmap-name> は YAML ファイルの名前に、<namespace>Account CR の namespace に置き換えます。

  5. 以前に作成した ConfigMap オブジェクトを、Account CR の spec.modelListConfig セクションに追加します。

    oc patch account <account-name> \
      --type='merge' \
      	-p '{"spec": {"modelListConfig": {"name": "<configmap-name>"}}}'
    Copy to Clipboard Toggle word wrap

    <account-name>Account CR の名前に、<configmap-name>ConfigMap オブジェクトに置き換えます。

  6. ConfigMap オブジェクトが Account CR に追加されたことを確認します。

    oc get account <account-name> -o yaml
    Copy to Clipboard Toggle word wrap

    以下の出力のように、Account CR の spec.modelListConfig セクションに ConfigMap オブジェクトが表示されます。

    spec:
     enabledModelsConfig:
     modelListConfig:
      name: <configmap-name>
    Copy to Clipboard Toggle word wrap

検証

2.18.4. 既存の NIM デプロイメントの NVIDIA NIM メトリクスの有効化

以前に OpenShift AI に NIM モデルをデプロイし、その後、最新バージョンにアップグレードした場合は、メトリクスの収集とグラフの生成を有効にするアノテーションを追加して、既存のデプロイメントに対して NIM メトリクスを手動で有効にする必要があります。

注記

最新バージョンの OpenShift AI では、新しいデプロイメントに対して NIM メトリクスとグラフが自動的に有効になります。

2.18.4.1. 既存の既存の NIM デプロイメントのグラフ生成の有効化

次の手順では、既存の NIM デプロイメントでグラフ生成を有効にする方法を説明します。

前提条件

  • OpenShift クラスターのクラスター管理者権限を持っている。
  • OpenShift コマンドラインインターフェイス (CLI) をダウンロードしてインストールした。詳細は、OpenShift CLI のインストール (Red Hat OpenShift Dedicated) または OpenShift CLI のインストール (Red Hat OpenShift Service on AWS) を参照してください。
  • OpenShift AI に既存の NIM デプロイメントがある。

手順

  1. ターミナルウィンドウで、クラスター管理者として OpenShift クラスターにまだログインしていない場合は、OpenShift CLI にログインします。
  2. NIM デプロイメントに関連付けられている ServingRuntime の名前を確認します。

    oc get servingruntime -n <namespace>
    Copy to Clipboard Toggle word wrap

    <namespace> は、NIM モデルがデプロイされているプロジェクトの namespace に置き換えます。

  3. ServingRuntime 設定に既存の metadata.annotations セクションがあるかどうかを確認します。

    oc get servingruntime -n  <namespace> <servingruntime-name> -o json | jq '.metadata.annotations'
    Copy to Clipboard Toggle word wrap

    <servingruntime-name> は、前の手順の ServingRuntime の名前に置き換えます。

  4. 次のいずれかの操作を実行します。

    1. 設定に metadata.annotations セクションが存在しない場合は、必要なアノテーションを含むセクションを追加します。

      oc patch servingruntime -n <namespace> <servingruntime-name> --type json --patch \
       '[{"op": "add", "path": "/metadata/annotations", "value": {"runtimes.opendatahub.io/nvidia-nim": "true"}}]'
      Copy to Clipboard Toggle word wrap

      以下のような出力が表示されます。

      servingruntime.serving.kserve.io/nim-serving-runtime patched
      Copy to Clipboard Toggle word wrap
    2. 既存の metadata.annotations セクションがある場合は、必要なアノテーションをセクションに追加します。

      oc patch servingruntime -n <project-namespace> <runtime-name> --type json --patch \
       '[{"op": "add", "path": "/metadata/annotations/runtimes.opendatahub.io~1nvidia-nim", "value": "true"}]'
      Copy to Clipboard Toggle word wrap

      以下のような出力が表示されます。

      servingruntime.serving.kserve.io/nim-serving-runtime patched
      Copy to Clipboard Toggle word wrap

検証

  • アノテーションが既存の NIM デプロイメントの ServingRuntime に追加されていることを確認します。

    oc get servingruntime -n <namespace> <servingruntime-name> -o json | jq '.metadata.annotations'
    Copy to Clipboard Toggle word wrap

    追加したアノテーションが出力に表示されます。

    ...
    "runtimes.opendatahub.io/nvidia-nim": "true"
    Copy to Clipboard Toggle word wrap
    注記

    メトリクスをグラフ生成に使用できるようにするには、デプロイメントでメトリクスの収集も有効にする必要があります。既存の NIM デプロイメントのメトリクス収集の有効化 を参照してください。

2.18.4.2. 既存の NIM デプロイメントのメトリクス収集を有効にする

既存の NIM デプロイメントのメトリクス収集を有効にするには、デプロイメントの InferenceService に Prometheus エンドポイントとポートアノテーションを手動で追加する必要があります。

次の手順では、NIM デプロイメントの InferenceService に必要な Prometheus アノテーションを追加する方法を説明します。

前提条件

  • OpenShift クラスターのクラスター管理者権限を持っている。
  • OpenShift コマンドラインインターフェイス (CLI) をダウンロードしてインストールした。詳細は、OpenShift CLI のインストール (Red Hat OpenShift Dedicated) または OpenShift CLI のインストール (Red Hat OpenShift Service on AWS) を参照してください。
  • OpenShift AI に既存の NIM デプロイメントがある。

手順

  1. ターミナルウィンドウで、クラスター管理者として OpenShift クラスターにまだログインしていない場合は、OpenShift CLI にログインします。
  2. NIM デプロイメントに関連付けられている InferenceService の名前を確認します。

    oc get inferenceservice -n <namespace>
    Copy to Clipboard Toggle word wrap

    <namespace> は、NIM モデルがデプロイされているプロジェクトの namespace に置き換えます。

  3. InferenceService 設定に spec.predictor.annotations セクションが存在するかどうかを確認します。

    oc get inferenceservice -n <namespace> <inferenceservice-name> -o json | jq '.spec.predictor.annotations'
    Copy to Clipboard Toggle word wrap

    <inferenceservice-name> は、前の手順の InferenceService の名前に置き換えます。

  4. 次のいずれかの操作を実行します。

    1. 設定に spec.predictor.annotations セクションが存在しない場合は、そのセクションと必要なアノテーションを追加します。

      oc patch inferenceservice -n <namespace> <inference-name> --type json --patch \
       '[{"op": "add", "path": "/spec/predictor/annotations", "value": {"prometheus.io/path": "/metrics", "prometheus.io/port": "8000"}}]'
      Copy to Clipboard Toggle word wrap

      追加したアノテーションが出力に表示されます。

      inferenceservice.serving.kserve.io/nim-serving-runtime patched
      Copy to Clipboard Toggle word wrap
    2. 既存の spec.predictor.annotations セクションがある場合は、そのセクションに Prometheus アノテーションを追加します。

      oc patch inferenceservice -n <namespace> <inference-service-name> --type json --patch \
       '[{"op": "add", "path": "/spec/predictor/annotations/prometheus.io~1path", "value": "/metrics"},
       {"op": "add", "path": "/spec/predictor/annotations/prometheus.io~1port", "value": "8000"}]'
      Copy to Clipboard Toggle word wrap

      追加したアノテーションは出力に表示されます。

      inferenceservice.serving.kserve.io/nim-serving-runtime patched
      Copy to Clipboard Toggle word wrap

検証

  • アノテーションが InferenceService に追加されていることを確認します。

    oc get inferenceservice -n <namespace> <inferenceservice-name> -o json | jq '.spec.predictor.annotations'
    Copy to Clipboard Toggle word wrap

    出力に追加したアノテーションが表示されます。

    {
      "prometheus.io/path": "/metrics",
      "prometheus.io/port": "8000"
    }
    Copy to Clipboard Toggle word wrap

2.18.5. NIM モデルの NVIDIA NIM メトリクスの表示

OpenShift AI では、NVIDIA NIM モデルサービスプラットフォームにデプロイされた NIM モデルの次の NVIDIA NIM メトリクスを確認できます。

  • GPU キャッシュ使用量の推移 (ミリ秒)
  • 現在実行中、待機中、および最大のリクエスト数
  • トークンの数
  • 最初のトークンまでの時間
  • 出力トークンあたりの時間
  • リクエスト結果

これらのメトリクスの時間範囲と更新間隔を指定すると、指定した時間におけるピーク使用時間やモデルのパフォーマンスなどを判断するのに役立ちます。

前提条件

  • NVIDIA NIM モデルサービングプラットフォームを有効にした。
  • NVIDIA NIM モデルサービスプラットフォームに NIM モデルがデプロイされている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。
  • disableKServeMetrics OpenShift AI ダッシュボード設定オプションは、デフォルト値の false に設定されている。

    disableKServeMetrics: false
    Copy to Clipboard Toggle word wrap

    ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。

手順

  1. OpenShift AI ダッシュボードのナビゲーションメニューから、Data science projects をクリックします。

    Data science projects のページが開きます。

  2. 監視する NIM モデルを含むプロジェクトの名前をクリックします。
  3. プロジェクトの詳細ページで、Models タブをクリックします。
  4. 確認する NIM モデルをクリックします。
  5. NIM Metrics タブで、以下のオプションを設定します。

    • 時間範囲 - メトリクスを追跡する期間を指定します。1 時間、24 時間、7 日、30 日のいずれかの値を選択できます。
    • 更新間隔 - (最新のデータを表示するために) メトリクスページのグラフを更新する頻度を指定します。15 秒、30 秒、1 分、5 分、15 分、30 分、1 時間、2 時間、1 日の値のいずれかを選択できます。
  6. NIM メトリクスのデータグラフを表示するには、下にスクロールします。

検証

NIM メトリクス タブには、デプロイされた NIM モデルの NIM メトリクスのグラフが表示されます。

2.18.6. NIM モデルのパフォーマンスメトリクスの表示

NVIDIA NIM モデルサービスプラットフォームにデプロイされた NIM モデルでは、次のパフォーマンスメトリクスを確認できます。

  • リクエスト数 - 特定のモデルに対して失敗または成功したリクエストの数。
  • 平均応答時間 (ミリ秒) - 特定のモデルがリクエストに応答するまでにかかる平均時間。
  • CPU 使用率 (%) - 特定のモデルによって現在使用されている、モデルレプリカごとの CPU 制限の割合。
  • メモリー使用率 (%) - 特定のモデルによって使用されているモデルレプリカごとのメモリー制限の割合。

これらのメトリクスの時間範囲と更新間隔を指定すると、指定した時間におけるピーク使用時間やモデルのパフォーマンスなどを判断するのに役立ちます。

前提条件

  • NVIDIA NIM モデルサービングプラットフォームを有効にした。
  • NVIDIA NIM モデルサービスプラットフォームに NIM モデルがデプロイされている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。
  • disableKServeMetrics OpenShift AI ダッシュボード設定オプションは、デフォルト値の false に設定されている。

    disableKServeMetrics: false
    Copy to Clipboard Toggle word wrap

    ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。

手順

  1. OpenShift AI ダッシュボードのナビゲーションメニューから、Data science projects をクリックします。

    Data science projects のページが開きます。

  2. 監視する NIM モデルを含むプロジェクトの名前をクリックします。
  3. プロジェクトの詳細ページで、Models タブをクリックします。
  4. 確認する NIM モデルをクリックします。
  5. Endpoint performance タブで、次のオプションを設定します。

    • 時間範囲 - メトリクスを追跡する期間を指定します。1 時間、24 時間、7 日、30 日のいずれかの値を選択できます。
    • Refresh interval - メトリクスページのグラフを更新して最新のデータを表示する頻度を指定します。15 秒、30 秒、1 分、5 分、15 分、30 分、1 時間、2 時間、1 日の値のいずれかを選択できます。
  6. 下にスクロールすると、パフォーマンスメトリクスのデータグラフが表示されます。

検証

Endpoint performance タブには、デプロイされた NIM モデルのパフォーマンスメトリクスのグラフが表示されます。

第3章 マルチモデルサービングプラットフォームへのモデルのサービング

OpenShift AI には、小規模および中規模のモデルをデプロイするために、ModelMesh コンポーネントをベースとした マルチモデルサービングプラットフォーム が組み込まれています。マルチモデルサービングプラットフォームでは、複数のモデルを同じモデルサーバーからデプロイし、サーバーリソースを共有できます。

重要

OpenShift AI バージョン 2.19 以降、ModelMesh をベースとしたマルチモデルサービングプラットフォームは非推奨になりました。引き続きモデルをマルチモデルサービングプラットフォームにデプロイできますが、シングルモデルサービングプラットフォームに移行することが推奨されます。

詳細情報やシングルモデルサービングプラットフォームの使用に関するヘルプは、アカウントマネージャーにお問い合わせください。

3.1. モデルサーバーの設定

3.1.1. マルチモデルサービングプラットフォームの有効化

マルチモデルサービングプラットフォームを使用するには、まずプラットフォームを有効にする必要があります。マルチモデルサービングプラットフォームは ModelMesh コンポーネントを使用します。

前提条件

  • OpenShift AI 管理者権限を持つユーザーとして OpenShift AI にログインしている。
  • spec.dashboardConfig.disableModelMesh ダッシュボード設定オプションが false (デフォルト) に設定されている。

    ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。

手順

  1. OpenShift AI ダッシュボードの左側のメニューで、SettingsCluster settings をクリックします。
  2. Model serving platforms セクションを見つけます。
  3. Multi-model serving platform チェックボックスをオンにします。
  4. Save changes をクリックします。

モデルサービングランタイムは、特定のモデルフレームワーク群のサポートと、それらのフレームワークでサポートされるモデル形式のサポートを追加します。デフォルトでは、マルチモデルサービングプラットフォームには OpenVINO Model Server ランタイムが含まれています。デフォルトのランタイムがニーズ (特定のモデル形式のサポートなど) を満たしていない場合は、独自のカスタムランタイムを追加することもできます。

管理者は、Red Hat OpenShift AI ダッシュボードを使用して、カスタムのモデルサービングランタイムを追加して有効にすることができます。その後、マルチモデルサービングプラットフォーム用の新しいモデルサーバーを作成する際に、カスタムランタイムを選択できます。

注記

Red Hat はカスタムランタイムのサポートを提供しません。追加したカスタムランタイムを使用するライセンスがあることを確認し、お客様の責任で正しく設定および保守するようにしてください。

前提条件

  • OpenShift AI 管理者権限を持つユーザーとして OpenShift AI にログインしている。
  • プロジェクトにモデルサーバーを追加する 方法を理解している。カスタムのモデルサービングランタイムを追加した場合は、そのランタイムを使用するように新しいモデルサーバーを設定する必要があります。
  • kserve/modelmesh-serving リポジトリー内のサンプルランタイムを確認している。これらの例を開始点として使用できます。ただし、各ランタイムを OpenShift AI にデプロイするには、さらにいくつかの変更が必要です。必要な変更は、次の手順で説明します。

    注記

    OpenShift AI には、デフォルトで OpenVINO Model Server ランタイムが含まれています。このランタイムを OpenShift AI に追加する必要はありません。

手順

  1. OpenShift AI ダッシュボードから、SettingsServing runtimes をクリックします。

    Serving runtimes ページが開き、すでにインストールされ有効になっているモデルサービングランタイムが表示されます。

  2. カスタムランタイムを追加するには、次のオプションのいずれかを選択します。

    • 既存のランタイム (OpenVINO Model Server ランタイムなど) で開始するには、既存のランタイムの横にあるアクションメニュー (⋮) をクリックしてから、Duplicate をクリックします。
    • 新しいカスタムランタイムを追加するには、Add serving runtime をクリックします。
  3. Select the model serving platforms this runtime supports リストで、Multi-model serving platform を選択します。

    注記

    マルチモデルサービングプラットフォームは、REST プロトコルのみサポートします。つまり、Select the API protocol this runtime supports リスト内のデフォルト値は変更できません。

  4. オプション: (既存のランタイムを複製するのではなく) 新しいランタイムを開始した場合は、次のオプションのいずれかを選択してコードを追加します。

    • YAML ファイルをアップロードする

      1. Upload files をクリックします。
      2. ファイルブラウザーで、コンピューター上の YAML ファイルを選択します。このファイルは、kserve/modelmesh-serving リポジトリーからダウンロードしたサンプルランタイムの 1 つである可能性があります。

        埋め込み YAML エディターが開き、アップロードしたファイルの内容が表示されます。

    • エディターに YAML コードを直接入力する

      1. Start from scratch をクリックします。
      2. 埋め込みエディターに YAML コードを直接入力または貼り付けます。貼り付ける YAML は、kserve/modelmesh-serving リポジトリー内のサンプルランタイムの 1 つからコピーされる場合があります。
  5. オプション: kserve/modelmesh-serving リポジトリーにサンプルランタイムの 1 つを追加する場合は、次の変更を実行します。

    1. YAML エディターで、ランタイムの kind フィールドを見つけます。このフィールドの値を ServingRuntime に更新します。
    2. kserve/modelmesh-serving リポジトリーの kustomization.yaml ファイルで、追加するランタイムの newNamenewTag の値をメモします。これらの値は後の手順で指定します。
    3. カスタムランタイムの YAML エディターで、containers.image フィールドを見つけます。
    4. kustomization.yaml ファイルで前にメモした値に基づいて、containers.image フィールドの値を newName:newTag 形式で更新します。以下に例を示します。

      Nvidia Triton Inference Server
      image: nvcr.io/nvidia/tritonserver:23.04-py3
      Seldon Python MLServer
      image: seldonio/mlserver:1.3.2
      TorchServe
      image: pytorch/torchserve:0.7.1-cpu
  6. metadata.name フィールドで、追加するランタイムの値が一意であることを確認します (つまり、値がすでに追加されているランタイムと一致しない)。
  7. オプション: 追加するランタイムのカスタム表示名を設定するには、次の例に示すように、metadata.annotations.openshift.io/display-name フィールドを追加し、値を指定します。

    apiVersion: serving.kserve.io/v1alpha1
    kind: ServingRuntime
    metadata:
      name: mlserver-0.x
      annotations:
        openshift.io/display-name: MLServer
    Copy to Clipboard Toggle word wrap
    注記

    ランタイムのカスタム表示名を設定しないと、OpenShift AI には metadata.name フィールドの値が表示されます。

  8. Add をクリックします。

    Serving runtimes ページが開き、インストールされているランタイムの更新されたリストが表示されます。追加したランタイムが自動的に有効になることを確認します。

  9. オプション: カスタムランタイムを編集するには、アクションメニュー (⋮) をクリックし、Edit を選択します。

検証

  • 追加したカスタムモデルサービングランタイムは、Serving runtimes ページに有効な状態で表示されます。

プリインストールされたカスタムのモデルサービングランタイムに加えて、NVIDIA Triton Inference Server などの Red Hat でテストおよび検証されたモデルサービングランタイムを使用して要件に対応することもできます。Red Hat のテスト済みおよび検証済みのランタイムの詳細は、Red Hat OpenShift AI のテスト済みおよび検証済みのランタイム を参照してください。

Red Hat OpenShift AI ダッシュボードを使用して、NVIDIA Triton Inference Server ランタイムを追加して有効にし、マルチモデルサービングプラットフォーム用の新しいモデルサーバーを作成するときにランタイムを選択できます。

前提条件

  • OpenShift AI 管理者権限を持つユーザーとして OpenShift AI にログインしている。
  • プロジェクトにモデルサーバーを追加する 方法を理解している。テストおよび検証済みのモデルサービングランタイムを追加したら、そのランタイムを使用するように新しいモデルサーバーを設定する必要があります。

手順

  1. OpenShift AI ダッシュボードから、SettingsServing runtimes をクリックします。

    Serving runtimes ページが開き、すでにインストールされ有効になっているモデルサービングランタイムが表示されます。

  2. テスト済みおよび検証済みのランタイムを追加するには、Add serving runtime をクリックします。
  3. Select the model serving platforms this runtime supports リストで、Multi-model serving platform を選択します。

    注記

    マルチモデルサービングプラットフォームは、REST プロトコルのみサポートします。つまり、Select the API protocol this runtime supports リスト内のデフォルト値は変更できません。

  4. Start from scratch をクリックします。
  5. 次の YAML コードを埋め込みエディターに直接入力または貼り付けます。

    apiVersion: serving.kserve.io/v1alpha1
    kind: ServingRuntime
    metadata:
      annotations:
        enable-route: "true"
      name: modelmesh-triton
      labels:
        opendatahub.io/dashboard: "true"
    spec:
      annotations:
        opendatahub.io/modelServingSupport: '["multi"x`x`]'
        prometheus.kserve.io/path: /metrics
        prometheus.kserve.io/port: "8002"
      builtInAdapter:
        env:
          - name: CONTAINER_MEM_REQ_BYTES
            value: "268435456"
          - name: USE_EMBEDDED_PULLER
            value: "true"
        memBufferBytes: 134217728
        modelLoadingTimeoutMillis: 90000
        runtimeManagementPort: 8001
        serverType: triton
      containers:
        - args:
            - -c
            - 'mkdir -p /models/_triton_models;  chmod 777
              /models/_triton_models;  exec
              tritonserver "--model-repository=/models/_triton_models" "--model-control-mode=explicit" "--strict-model-config=false" "--strict-readiness=false" "--allow-http=true" "--allow-grpc=true"  '
          command:
            - /bin/sh
          image: nvcr.io/nvidia/tritonserver@sha256:xxxxx
          name: triton
          resources:
            limits:
              cpu: "1"
              memory: 2Gi
            requests:
              cpu: "1"
              memory: 2Gi
      grpcDataEndpoint: port:8001
      grpcEndpoint: port:8085
      multiModel: true
      protocolVersions:
        - grpc-v2
        - v2
      supportedModelFormats:
        - autoSelect: true
          name: onnx
          version: "1"
        - autoSelect: true
          name: pytorch
          version: "1"
        - autoSelect: true
          name: tensorflow
          version: "1"
        - autoSelect: true
          name: tensorflow
          version: "2"
        - autoSelect: true
          name: tensorrt
          version: "7"
        - autoSelect: false
          name: xgboost
          version: "1"
        - autoSelect: true
          name: python
          version: "1"
    Copy to Clipboard Toggle word wrap
  6. metadata.name フィールドで、追加するランタイムの値が、すでに追加されているランタイムと一致していないことを確認してください。
  7. オプション: 追加するランタイムのカスタム表示名を使用するには、次の例に示すように、metadata.annotations.openshift.io/display-name フィールドを追加し、値を指定します。

    apiVersion: serving.kserve.io/v1alpha1
    kind: ServingRuntime
    metadata:
      name: modelmesh-triton
      annotations:
        openshift.io/display-name: Triton ServingRuntime
    Copy to Clipboard Toggle word wrap
    注記

    ランタイムのカスタム表示名を設定しないと、OpenShift AI には metadata.name フィールドの値が表示されます。

  8. Create をクリックします。

    Serving runtimes ページが開き、インストールされているランタイムの更新されたリストが表示されます。追加したランタイムが自動的に有効になることを確認します。

  9. オプション: ランタイムを編集するには、アクションメニュー (⋮) をクリックし、Edit を選択します。

検証

  • 追加したモデルサービスランタイムは、Serving runtimes ページに有効な状態で表示されます。

3.1.4. マルチモデルサービングプラットフォーム用のモデルサーバーの追加

マルチモデルサービングプラットフォームを有効にした場合は、モデルをデプロイするようにモデルサーバーを設定する必要があります。大規模なデータセットを使用するために追加のコンピューティング能力が必要な場合は、モデルサーバーにアクセラレーターを割り当てることができます。

注記

OpenShift AI では、Red Hat はモデルサービング用に NVIDIA および AMD GPU アクセラレーターのみをサポートしています。

前提条件

  • Red Hat OpenShift AI にログインしている。
  • OpenShift AI グループを使用する場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。
  • モデルサーバーを追加できるデータサイエンスプロジェクトを作成している。
  • マルチモデルサービングプラットフォームを有効化している。
  • モデルサーバーにカスタムのモデルサービングランタイムを使用する場合は、ランタイムを追加して有効にしている。カスタムモデルサービングランタイムの追加 を参照してください。
  • モデルサーバーでグラフィックスプロセッシングユニット (GPU) を使用する場合は、OpenShift AI で GPU サポートを有効にした。NVIDIA GPU を使用する場合は、NVIDIA GPU の有効化 を参照してください。AMD GPU を使用する場合は、AMD GPU の統合 を参照してください。

手順

  1. OpenShift AI ダッシュボードの左側のメニューで、Data science projects をクリックします。

    Data science projects のページが開きます。

  2. モデルサーバーを設定するプロジェクトの名前をクリックします。

    プロジェクトの詳細ページが開きます。

  3. Models タブをクリックします。
  4. 次のいずれかの操作を実行します。

    • ​Multi-model serving platform タイルが表示された場合は、タイル上の Add model server をクリックします。
    • タイルが表示されない場合は、Add model server ボタンをクリックします。

    Add model server ダイアログが開きます。

  5. Model server name フィールドに、モデルサーバーの一意の名前を入力します。
  6. Serving runtime リストから、OpenShift AI デプロイメントにインストールされ有効になっているモデルサービングランタイムを選択します。

    注記

    モデルサーバーで カスタム モデルサービングランタイムを使用していて、GPU を使用したい場合は、カスタムランタイムが GPU をサポートし、GPU を使用するように適切に設定されていることを確認する必要があります。

  7. Number of model replicas to deploy フィールドに値を指定します。
  8. Accelerator profile リストから、アクセラレータープロファイルを選択します。

    重要

    デフォルトでは、ハードウェアプロファイルはダッシュボードのナビゲーションメニューとユーザーインターフェイスに表示されませんが、アクセラレータープロファイルは表示されます。非推奨となったアクセラレータープロファイル機能に関連付けられたユーザーインターフェイスコンポーネントは、引き続き表示されます。ハードウェアプロファイルを有効にすると、Accelerator profiles リストの代わりに Hardware profiles リストが表示されます。ダッシュボードのナビゲーションメニューの Settings → Hardware profiles オプションと、ハードウェアプロファイルに関連付けられたユーザーインターフェイスコンポーネントを表示するには、OpenShift の OdhDashboardConfig カスタムリソース (CR) で、disableHardwareProfiles 値を false に設定します。ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。

  9. オプション: Customize resource requests and limit をクリックし、次の値を更新します。

    1. CPUs requests フィールドで、モデルサーバーで使用する CPU の数を指定します。このフィールドの横にあるリストを使用して、値をコアまたはミリコアで指定します。
    2. CPU limits フィールドで、モデルサーバーで使用する CPU の最大数を指定します。このフィールドの横にあるリストを使用して、値をコアまたはミリコアで指定します。
    3. Memory requests フィールドで、モデルサーバーに要求されたメモリーをギビバイト (Gi) 単位で指定します。
    4. Memory limits フィールドに、モデルサーバーの最大メモリー制限をギビバイト (Gi) 単位で指定します。
  10. オプション: Model route セクションで、Make deployed models available through an external route チェックボックスをオンにして、デプロイされたモデルを外部クライアントが利用できるようにします。
  11. オプション: Token authentication セクションで、Require token authentication チェックボックスをオンにすると、モデルサーバーでトークン認証を必須にできます。トークン認証の設定を完了するには、次のアクションを実行します。

    1. Service account name フィールドに、トークンが生成されるサービスアカウント名を入力します。生成されたトークンは、モデルサーバーの設定時に作成され、Token secret フィールドに表示されます。
    2. 追加のサービスアカウントを追加するには、Add a service account をクリックし、別のサービスアカウント名を入力します。
  12. Add をクリックします。

    • 設定したモデルサーバーは、プロジェクトの Models タブの Models and model servers リストに表示されます。
  13. オプション: モデルサーバーを更新するには、モデルサーバーの横にあるアクションメニュー () をクリックし、Edit model server を選択します。

3.1.5. モデルサーバーの削除

モデルをホストするためにモデルサーバーが必要なくなった場合は、データサイエンスプロジェクトからモデルサーバーを削除できます。

注記

モデルサーバーを削除すると、そのモデルサーバーでホストされているモデルも削除されます。その結果、アプリケーションはモデルを利用できなくります。

前提条件

  • データサイエンスプロジェクトと関連するモデルサーバーを作成している。
  • モデルにアクセスするアプリケーションのユーザーに、モデルが利用できなくなることを通知している。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。

手順

  1. OpenShift AI ダッシュボードで、Data science projects をクリックします。

    Data science projects のページが開きます。

  2. モデルサーバーを削除するプロジェクトの名前をクリックします。

    プロジェクトの詳細ページが開きます。

  3. Models タブをクリックします。
  4. モデルサーバーを削除するプロジェクトの横にあるアクションメニュー () をクリックし、Delete model server をクリックします。

    Delete model server ダイアログが開きます。

  5. テキストフィールドにモデルサーバーの名前を入力して、削除することを確認します。
  6. Delete model server をクリックします。

検証

  • 削除したモデルサーバーは、プロジェクトの Models タブに表示されなくなります。

3.2. デプロイされたモデルの使用

3.2.1. マルチモデルサービングプラットフォームを使用したモデルのデプロイ

OpenShift AI にトレーニングされたモデルをデプロイし、それらをテストしてインテリジェントなアプリケーションに実装できます。モデルをデプロイすると、API を使用してアクセスできるサービスとして利用可能になります。これにより、データ入力に基づく予測を返すことができます。

マルチモデルサービングプラットフォームを有効にすると、プラットフォーム上にモデルをデプロイできます。

前提条件

  • Red Hat OpenShift AI にログインしている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループ、または、管理者グループ (rhoai-users など) に属している。
  • マルチモデルサービングプラットフォームを有効化している。
  • データサイエンスプロジェクトを作成し、モデルサーバーを追加している。
  • S3 互換オブジェクトストレージにアクセスできる。
  • デプロイするモデルについて、S3 互換オブジェクトストレージバケット内の関連フォルダーパスを把握している。

手順

  1. OpenShift AI ダッシュボードの左側のメニューで、Data science projects をクリックします。

    Data science projects のページが開きます。

  2. モデルをデプロイするプロジェクトの名前をクリックします。

    プロジェクトの詳細ページが開きます。

  3. Models タブをクリックします。
  4. Deploy model をクリックします。
  5. モデルをデプロイするためのプロパティーを次のように設定します。

    1. Model name フィールドに、デプロイするモデルの一意の名前を入力します。
    2. Model framework リストから、モデルのフレームワークを選択します。

      注記

      Model framework リストには、モデルサーバーの設定時に指定したモデルサービングランタイムによってサポートされるフレームワークのみが表示されます。

    3. S3 互換オブジェクトストレージからデプロイするモデルの場所を指定するには、次の一連のアクションのいずれかを実行します。

      • 既存の接続を使用します

        1. Existing connection を選択します。
        2. Name リストから、以前に定義した接続を選択します。
        3. Path フィールドに、指定したデータソース内のモデルを含むフォルダーパスを入力します。

          注記

          既存の S3 または URI データ接続を使用して登録済みのモデルバージョンをデプロイする場合は、接続に関する詳細の一部が自動入力されることがあります。これは、データ接続の種類と、データサイエンスプロジェクトで使用できる一致する接続の数によって異なります。たとえば、一致する接続が 1 つだけ存在する場合、パス、URI、エンドポイント、バケット、リージョンなどのフィールドが自動的に入力されることがあります。一致する接続には Recommended というラベルが付けられます。

      • 新しい接続を使用します

        1. モデルがアクセスできる新しい接続を定義するには、New connection を選択します。
        2. Add connection モーダルで、Connection type を選択します。S3 compatible object storage オプションと URI オプションは、事前にインストールされた接続タイプです。OpenShift AI 管理者が追加した場合は、追加のオプションが利用できる場合があります。

          選択した接続タイプに固有のフィールドを含む Add connection フォームが開きます。

        3. 接続の詳細フィールドに入力します。
    4. (オプション) Configuration parameters セクションでランタイムパラメーターをカスタマイズします。

      1. Additional serving runtime arguments の値を変更して、デプロイされるモデルの動作を定義します。
      2. モデルの環境内の変数を定義するには、Additional environment variables の値を変更します。
    5. Deploy をクリックします。

検証

  • デプロイされたモデルがプロジェクトの Models タブに表示され、ダッシュボードの Model deployments ページで Status 列にチェックマークが付いて表示されていることを確認します。

3.2.2. デプロイされたモデルの表示

作業の結果を分析するために、Red Hat OpenShift AI にデプロイされたモデルのリストを表示できます。デプロイされたモデルとそのエンドポイントの現在のステータスも表示できます。

前提条件

  • Red Hat OpenShift AI にログインしている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。

手順

  1. OpenShift AI ダッシュボードで、ModelsModel deployments をクリックします。

    Model deployments ページが開きます。

    このページには、モデルごとに、モデル名、モデルがデプロイされているプロジェクト、モデルが使用するモデルサービングランタイム、デプロイメントステータスなどの詳細が表示されます。

  2. オプション: 特定のモデルの場合は、Inference endpoint 列のリンクをクリックして、デプロイされたモデルの推論エンドポイントを表示します。

検証

  • 以前にデプロイされたデータサイエンスモデルのリストが Model deployments ページに表示されます。

3.2.3. デプロイされたモデルのデプロイメントプロパティーの更新

以前にデプロイされたモデルのデプロイメントプロパティーを更新できます。たとえば、モデルの接続と名前を変更できます。

前提条件

  • Red Hat OpenShift AI にログインしている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。
  • OpenShift AI にモデルをデプロイしている。

手順

  1. OpenShift AI ダッシュボードで、ModelsModel deployments をクリックします。

    Model deployments ページが開きます。

  2. 更新するデプロイメントプロパティーを持つモデルの横にあるアクションメニュー () をクリックし、Edit をクリックします。

    Edit model ダイアログが開きます。

  3. 次のようにモデルのデプロイメントプロパティーを更新します。

    1. Model name フィールドに、モデルの新しい一意の名前を入力します。
    2. Model servers リストから、モデルのモデルサーバーを選択します。
    3. Model framework リストから、モデルのフレームワークを選択します。

      注記

      Model framework リストには、モデルサーバーの設定時に指定したモデルサービングランタイムによってサポートされるフレームワークのみが表示されます。

    4. 必要に応じて、既存の接続を指定するか、新しい接続を作成して接続を更新します。
    5. Redeploy をクリックします。

検証

  • デプロイメントプロパティーを更新したモデルは、ダッシュボードの Model deployments ページに表示されます。

3.2.4. デプロイされたモデルの削除

以前にデプロイしたモデルを削除できます。これにより、不要になったデプロイ済みのモデルを削除できます。

前提条件

  • Red Hat OpenShift AI にログインしている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。
  • モデルをデプロイしている。

手順

  1. OpenShift AI ダッシュボードで、ModelsModel deployments をクリックします。

    Model deployments ページが開きます。

  2. 削除するデプロイモデルの横にあるアクションメニュー () をクリックし、Delete をクリックします。

    Delete deployed model ダイアログが開きます。

  3. テキストフィールドにデプロイしたモデルの名前を入力し、削除することを確認します。
  4. Delete deployed model をクリックします。

検証

  • 削除したモデルは Model deployments ページに表示されなくなります。

クラスター管理者がマルチモデルサービングプラットフォームの監視を設定すると、管理者以外のユーザーは OpenShift Web コンソールを使用して、ModelMesh コンポーネントのモデルサービングランタイムメトリクスを表示できます。

前提条件

手順

  1. OpenShift Web コンソールにログインします。
  2. Developer パースペクティブに切り替えます。
  3. 左側のメニューで、Observe をクリックします。
  4. Red Hat OpenShift Dedicated でのプロジェクトメトリクスのモニタリング または Red Hat OpenShift Service on AWS でのプロジェクトメトリクスのモニタリング で説明されているように、Web コンソールを使用して modelmesh_* メトリクスのクエリーを実行します。

3.4. モデルのパフォーマンスの監視

マルチモデルサービングプラットフォームでは、モデルサーバーにデプロイされたすべてのモデルと、モデルサーバーにデプロイされた特定のモデルのパフォーマンスメトリクスを表示できます。

3.4.1. モデルサーバー上のすべてのモデルのパフォーマンスメトリクスの表示

モデルサーバーにデプロイされているすべてのモデルについて、次のメトリクスを監視できます。

  • 5 分あたりの HTTP リクエスト数 - サーバー上のすべてのモデルに対して失敗または成功した HTTP リクエストの数。
  • 平均応答時間 (ミリ秒) - サーバー上のすべてのモデルについて、モデルサーバーがリクエストに応答するのにかかる平均時間。
  • CPU 使用率 (%) - サーバー上のすべてのモデルで現在使用されている CPU 容量の割合。
  • メモリー使用率 (%) - サーバー上のすべてのモデルで現在使用されているシステムメモリーの割合。

これらのメトリクスの時間範囲と更新間隔を指定すると、使用量のピーク時間帯や、指定した時間におけるモデルのパフォーマンスなどを判断するのに役立ちます。

前提条件

  • Red Hat OpenShift AI がインストール済みである。
  • OpenShift AI がインストールされている OpenShift クラスターで、ユーザーのワークロードモニタリングが有効化されている。
  • Red Hat OpenShift AI にログインしている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。
  • マルチモデルサービングプラットフォームにモデルがデプロイされている。

手順

  1. OpenShift AI ダッシュボードのナビゲーションメニューから、Data science projects をクリックします。

    Data science projects のページが開きます。

  2. 監視するデータサイエンスモデルが含まれているプロジェクトの名前をクリックします。
  3. プロジェクトの詳細ページで、Models タブをクリックします。
  4. 関心のあるモデルサーバーの行で、アクションメニュー (⋮) をクリックしてから、View model server metrics を選択します。
  5. オプション: モデルサーバーのメトリクスページで、次のオプションを設定します。

    • 時間範囲 - メトリクスを追跡する期間を指定します。1 時間、24 時間、7 日、30 日のいずれかの値を選択できます。
    • 更新間隔 - (最新のデータを表示するために) メトリクスページのグラフを更新する頻度を指定します。15 秒、30 秒、1 分、5 分、15 分、30 分、1 時間、2 時間、1 日の値のいずれかを選択できます。
  6. 下にスクロールすると、5 分あたりの HTTP リクエスト、平均応答時間、CPU 使用率、メモリー使用率のデータグラフが表示されます。

検証

モデルサーバーのメトリクスページでは、グラフによってパフォーマンスメトリクスに関するデータが提供されます。

3.4.2. デプロイされたモデルの HTTP リクエストメトリクスの表示

マルチモデルサービングプラットフォームにデプロイされている特定のモデルに対し、失敗または成功した HTTP リクエストを示すグラフを表示できます。

前提条件

  • Red Hat OpenShift AI がインストール済みである。
  • OpenShift AI がインストールされている OpenShift クラスターで、ユーザーのワークロードモニタリングが有効化されている。
  • 次のダッシュボード設定オプションは、次のようにデフォルト値に設定されている。

    disablePerformanceMetrics:false
    disableKServeMetrics:false
    Copy to Clipboard Toggle word wrap

    ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。

  • Red Hat OpenShift AI にログインしている。
  • OpenShift AI グループを使用している場合は、OpenShift のユーザーグループまたは管理者グループ (rhoai-usersrhoai-admins など) に属している。
  • マルチモデルサービングプラットフォームにモデルがデプロイされている。

手順

  1. OpenShift AI ダッシュボードで、ModelsModel deployments をクリックします。
  2. Model deployments ページで、関心のあるモデルを選択します。
  3. オプション: Endpoint performance タブで、次のオプションを設定します。

    • 時間範囲 - メトリクスを追跡する期間を指定します。1 時間、24 時間、7 日、30 日のいずれかの値を選択できます。
    • 更新間隔 - (最新のデータを表示するために) メトリクスページのグラフを更新する頻度を指定します。15 秒、30 秒、1 分、5 分、15 分、30 分、1 時間、2 時間、1 日の値のいずれかを選択できます。

検証

Endpoint performance タブには、モデルの HTTP メトリクスのグラフが表示されます。

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat