モデルのデプロイ
Red Hat OpenShift AI Cloud Service でモデルをデプロイする
概要
第1章 モデルの保存 リンクのコピーリンクがクリップボードにコピーされました!
モデルをデプロイする前に保存する必要があります。モデルは、S3 バケット、URI、または Open Container Initiative (OCI) コンテナーに保存できます。
1.1. モデル保存用の OCI コンテナーの使用 リンクのコピーリンクがクリップボードにコピーされました!
モデルを S3 バケットまたは URI に保存する代わりに、モデルを Open Container Initiative (OCI) コンテナーにアップロードできます。OCI コンテナーからモデルをデプロイすることは、KServe では modelcar とも呼ばれます。
モデルの保存に OCI コンテナーを使用すると、次のことが可能になります。
- 同じモデルを複数回ダウンロードすることを回避し、起動時間を短縮します。
- ローカルにダウンロードされるモデルの数を減らすことで、ディスク領域の使用量を削減します。
- 事前に取得したイメージを許可することで、モデルのパフォーマンスが向上します。
モデルの保存に OCI コンテナーを使用する場合、次のタスクを実行します。
- OCI イメージにモデルを保存します。
ユーザーインターフェイスまたはコマンドラインインターフェイスを使用して、OCI イメージからモデルをデプロイします。以下を使用してモデルをデプロイします。
- ユーザーインターフェイス (シングルモデルサービングプラットフォームへのモデルのデプロイ を参照)
- コマンドラインインターフェイス (CLI を使用して OCI イメージに保存されているモデルをデプロイする を参照)
1.2. OCI イメージへのモデルの保存 リンクのコピーリンクがクリップボードにコピーされました!
モデルを OCI イメージに保存できます。次の手順では、MobileNet v2-7 モデルを ONNX 形式で保存する例を使用します。
前提条件
- ONNX 形式のモデルがある。この手順の例では、ONNX 形式の MobileNet v2-7 モデルを使用します。
- Podman ツールがインストールされている。
手順
ローカルマシンのターミナルウィンドウで、OCI イメージの作成に必要なモデルファイルとサポートファイルの両方を保存するための一時ディレクトリーを作成します。
cd $(mktemp -d)
cd $(mktemp -d)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 一時ディレクトリー内に
modelsフォルダーを作成します。mkdir -p models/1
mkdir -p models/1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この例のコマンドでは、サブディレクトリー
1を指定します。これは、OpenVINO がモデルのバージョン管理に番号付きのサブディレクトリーを必要とするためです。OpenVINO を使用していない場合は、OCI コンテナーイメージを使用するために1サブディレクトリーを作成する必要はありません。モデルとサポートファイルをダウンロードします。
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/
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 Copied! Toggle word wrap Toggle overflow treeコマンドを使用して、モデルファイルが期待どおりにディレクトリー構造内に配置されていることを確認します。tree
treeCopy to Clipboard Copied! Toggle word wrap Toggle overflow treeコマンドで、次の例のようなディレクトリー構造が返されるはずです。. ├── Containerfile └── models └── 1 └── mobilenetv2-7.onnx. ├── Containerfile └── models └── 1 └── mobilenetv2-7.onnxCopy to Clipboard Copied! Toggle word wrap Toggle overflow Containerfileという名前の Docker ファイルを作成します。注記-
シェルを提供するベースイメージを指定してください。次の例では、
ubi9-microがベースコンテナーイメージです。scratchなどのシェルを提供しない空のイメージを指定することはできません。KServe はシェルを使用してモデルファイルがモデルサーバーにアクセス可能であることを確認するためです。 - コピーしたモデルファイルの所有権を変更し、root グループに読み取り権限を付与して、モデルサーバーがファイルにアクセスできるようにしてください。OpenShift は、ランダムなユーザー ID と root グループ ID を使用してコンテナーを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
シェルを提供するベースイメージを指定してください。次の例では、
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>
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 Copied! Toggle word wrap Toggle overflow
第2章 シングルモデルサービングプラットフォームへのモデルのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
シングルモデルサービングプラットフォームを使用して、大規模言語モデル (LLM) などの大規模なモデルをデプロイできます。このプラットフォームは、KServe コンポーネントに基づいています。モデルは、advanced または standard mode のいずれかでデプロイできます。advanced モードではサーバーレスデプロイメントに Red Hat OpenShift Serverless が使用されますが、standard モードでは KServe Raw デプロイメントが使用され、サーバーレス依存関係は必要ありません。
シングルモデルサービングプラットフォームでは、各モデルは専用のモデルサーバーからデプロイされます。これにより、より多くのリソースを必要とする大規模なモデルのデプロイ、監視、スケーリング、保守が容易になります。
2.1. 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.1.1. advanced モード リンクのコピーリンクがクリップボードにコピーされました!
メリット:
リクエスト量に基づいて自動スケーリングを有効にします。
- 着信リクエストを受信すると、リソースは自動的にスケールアップされます。
- リソースの使用を最適化し、ピーク時のパフォーマンスを維持します。
Knative を使用してゼロへのスケールダウンとゼロからのスケールダウンをサポートします。
- 着信リクエストがない場合にリソースを完全にスケールダウンできます。
- アイドル状態のリソースを実行しないことでコストを節約します。
デメリット:
カスタマイズの制限:
- Serverless は Knative によってサポートされており、複数のボリュームをマウントする場合など、同じ設計上の選択を暗黙的に継承します。
スケーリングのために Knative に依存:
- 従来のスケーリング方法と比較して、セットアップと管理がさらに複雑になります。
クラスタースコープのコンポーネント:
- クラスターに Serverless がすでに設定されている場合は、OpenShift AI で動作するようにクラスターを手動で設定する必要があります。
2.1.2. standard モード リンクのコピーリンクがクリップボードにコピーされました!
メリット:
Red Hat Serverless、Red Hat Service Mesh、Authorino などの追加の依存関係なしで、
Deployment、Service、Route、Horizontal Pod Autoscalerなどの Kubernetes リソースを使用したデプロイメントを可能にします。- 結果として得られるモデルのデプロイメントでは、advanced モードと比較してリソースフットプリントが小さくなります。
複数のボリュームのマウントなど、Knative では利用できない従来の Deployment/Pod 設定が可能になります。
- 複雑な設定や複数のストレージマウントを必要とするアプリケーションに役立ちます。
デメリット:
自動スケーリングはサポートされていません。
- アイドル時にリソースを自動的にゼロにスケールダウンすることはサポートされていません。
- トラフィックが少ない期間にはコストが高くなる可能性があります。
2.2. シングルモデルサービングプラットフォームへのモデルのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
シングルモデルサービングプラットフォームを有効にすると、プリインストールまたはカスタムのモデルサービングランタイムを有効にして、モデルをプラットフォームへデプロイできます。
プリインストールされたモデルサービングランタイムを使用すると、ランタイムを自分で変更したり定義したりすることなく、モデルの提供を開始できます。カスタムランタイムの追加は、シングルモデルサービングプラットフォーム用のカスタムモデルサービングランタイムの追加 を参照してください。
前提条件
- Red Hat OpenShift AI にログインしている。
- 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) のサポートを有効にした。これには、Gaudi Base Operator のインストールとハードウェアプロファイルの設定が含まれます。詳細は、AMD ドキュメントの Intel Gaudi Base Operator 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 互換オブジェクトストレージにアップロードした。
手順
左側のメニューで、Data science projects をクリックします。
Data science projects のページが開きます。
モデルをデプロイするプロジェクトの名前をクリックします。
プロジェクトの詳細ページが開きます。
- Models タブをクリックします。
次のいずれかの操作を実行します。
- Single-model serving platform タイルが表示された場合は、タイル上の Deploy model をクリックします。
- タイルが表示されない場合は、Deploy model ボタンをクリックします。
Deploy model ダイアログが開きます。
- Model deployment name フィールドに、デプロイするモデルの一意の名前を入力します。
- Serving runtime フィールドで、有効なランタイムを選択します。プロジェクトスコープのランタイムが存在する場合、Serving runtime リストには、グローバルランタイムとプロジェクトスコープのランタイムを区別するためのサブ見出しが含まれます。
- Model framework (name - version) リストから値を選択します。
- Deployment mode リストから、standard または advanced を選択します。デプロイメントモードの詳細は、KServe デプロイメントモードについて を参照してください。
- Number of model server replicas to deploy フィールドに値を指定します。
次のオプションは、ハードウェアプロファイルを作成した場合にのみ使用できます。
Hardware profile リストから、ハードウェアプロファイルを選択します。プロジェクトスコープのハードウェアプロファイルが存在する場合、Hardware profile リストには、グローバルハードウェアプロファイルとプロジェクトスコープのハードウェアプロファイルを区別するためのサブ見出しが含まれます。
重要デフォルトでは、ハードウェアプロファイルはダッシュボードのナビゲーションメニューとユーザーインターフェイスに表示されませんが、アクセラレータープロファイルは表示されます。非推奨となったアクセラレータープロファイル機能に関連付けられたユーザーインターフェイスコンポーネントは、引き続き表示されます。ハードウェアプロファイルを有効にすると、Accelerator profiles リストの代わりに Hardware profiles リストが表示されます。ダッシュボードのナビゲーションメニューの Settings → Hardware profiles オプションと、ハードウェアプロファイルに関連付けられたユーザーインターフェイスコンポーネントを表示するには、OpenShift の
OdhDashboardConfigカスタムリソース (CR) で、disableHardwareProfiles値をfalseに設定します。ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。- オプション: これらのデフォルト値を変更するには、Customize resource requests and limit をクリックし、新しい最小値 (要求) と最大値 (制限) を入力します。ハードウェアプロファイルは、コンテナーに割り当てられる CPU の数とメモリーの量を指定し、両方に対して保証される最小値 (要求) と最大値 (制限) を設定します。
- オプション: Model route セクションで、Make deployed models available through an external route チェックボックスをオンにして、デプロイされたモデルを外部クライアントが利用できるようにします。
デプロイされたモデルに対する推論リクエストにトークン認証を要求するには、次のアクションを実行します。
- Require token authentication を選択します。
- Service account name フィールドに、トークンが生成されるサービスアカウント名を入力します。
- 追加のサービスアカウントを追加するには、Add a service account をクリックし、別のサービスアカウント名を入力します。
モデルの場所を指定するには、次の一連のアクションのいずれかを実行します。
既存の接続を使用します。
- Existing connection を選択します。
Name リストから、以前に定義した接続を選択します。
S3 互換オブジェクトストレージの場合: Path フィールドに、指定したデータソース内のモデルが含まれるフォルダーパスを入力します。
重要OpenVINO Model Server ランタイムには、モデルパスの指定方法に関する特定の要件があります。詳細は、OpenShift AI リリースノートの既知の問題 RHOAIENG-3025 を参照してください。
Open Container Image 接続の場合: OCI storage location フィールドに、モデルが配置されているモデル URI を入力します。
注記既存の S3、URI、または OCI データ接続を使用して登録済みのモデルバージョンをデプロイする場合は、接続に関する詳細の一部が自動入力されることがあります。これは、データ接続の種類と、データサイエンスプロジェクトで使用できる一致する接続の数によって異なります。たとえば、一致する接続が 1 つだけ存在する場合、パス、URI、エンドポイント、モデル URI、バケット、リージョンなどのフィールドが自動的に入力されることがあります。一致する接続には Recommended というラベルが付けられます。
新しい接続を使用します。
モデルがアクセスできる新しい接続を定義するには、New connection を選択します。
Add connection モーダルで、Connection type を選択します。OCI-compliant registry、S3 compatible object storage、URI オプションは、事前にインストールされた接続タイプです。OpenShift AI 管理者が追加した場合は、追加のオプションが利用できる場合があります。
選択した接続タイプに固有のフィールドを含む Add connection フォームが開きます。
接続の詳細フィールドに入力します。
重要接続タイプが S3 互換オブジェクトストレージの場合は、データファイルが含まれるフォルダーパスを指定する必要があります。OpenVINO Model Server ランタイムには、モデルパスの指定方法に関する特定の要件があります。詳細は、OpenShift AI リリースノートの既知の問題 RHOAIENG-3025 を参照してください。
(オプション) Configuration parameters セクションでランタイムパラメーターをカスタマイズします。
- Additional serving runtime arguments の値を変更して、デプロイされるモデルの動作を定義します。
モデルの環境内の変数を定義するには、Additional environment variables の値を変更します。
Configuration parameters セクションに、事前定義されたサービングランタイムパラメーターが表示されます (利用可能な場合)。
注記ポートまたはモデルサービングランタイムの引数は変更しないでください。これらの引数には、特定の値を設定する必要があるためです。これらのパラメーターを上書きすると、デプロイが失敗する可能性があります。
- Deploy をクリックします。
検証
- デプロイされたモデルがプロジェクトの Models タブに表示され、ダッシュボードの Model deployments ページで Status 列にチェックマークが付いて表示されていることを確認します。
2.3. CLI を使用して OCI イメージに保存されたモデルをデプロイする リンクのコピーリンクがクリップボードにコピーされました!
OCI イメージに保存されているモデルをコマンドラインインターフェイスからデプロイできます。
次の手順では、OpenVINO モデルサーバー上の OCI イメージに保存されている ONNX 形式の MobileNet v2-7 モデルをデプロイする例を使用します。
KServe では、デフォルトでモデルはクラスター外部に公開され、認証によって保護されません。
前提条件
- OCI イメージへのモデルの保存 の説明に従って、モデルを OCI イメージに保存した。
- プライベート OCI リポジトリーに保存されているモデルをデプロイする場合は、イメージプルシークレットを設定した。イメージプルシークレットの作成の詳細は、イメージプルシークレットの使用 を参照してください。
- OpenShift クラスターにログインしている。
手順
モデルをデプロイするためのプロジェクトを作成します。
oc new-project oci-model-example
oc new-project oci-model-exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift AI アプリケーションプロジェクトの
kserve-ovmsテンプレートを使用してServingRuntimeリソースを作成し、新しいプロジェクトで OpenVINO モデルサーバーを設定します。oc process -n redhat-ods-applications -o yaml kserve-ovms | oc apply -f -
oc process -n redhat-ods-applications -o yaml kserve-ovms | oc apply -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow kserve-ovmsという名前のServingRuntimeが作成されていることを確認します。oc get servingruntimes
oc get servingruntimesCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、次のような出力を返すはずです。
NAME DISABLED MODELTYPE CONTAINERS AGE kserve-ovms openvino_ir kserve-container 1m
NAME DISABLED MODELTYPE CONTAINERS AGE kserve-ovms openvino_ir kserve-container 1mCopy to Clipboard Copied! Toggle word wrap Toggle overflow モデルがプライベート OCI リポジトリーに保存されているか、パブリック OCI リポジトリーに保存されているかに応じて、
InferenceServiceYAML リソースを作成します。パブリック OCI リポジトリーに保存されているモデルの場合は、次の値を含む
InferenceServiceYAML ファイルを作成し、<user_name>、<repository_name>、<tag_name>をお客様の環境固有の値に置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート OCI リポジトリーに保存されているモデルの場合は、次の例に示すように、
spec.predictor.imagePullSecretsフィールドにプルシークレットを指定したInferenceServiceYAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow InferenceServiceリソースを作成すると、KServe はstorageUriフィールドによって参照される OCI イメージに保存されているモデルをデプロイします。
検証
デプロイメントのステータスを確認します。
oc get inferenceservice
oc get inferenceservice
このコマンドで、デプロイしたモデルの URL やその準備状態などの情報を含む出力が返されるはずです。
2.4. シングルモデルサービングプラットフォームでのモデルの監視 リンクのコピーリンクがクリップボードにコピーされました!
シングルモデルサービングプラットフォームにデプロイされたモデルを監視して、パフォーマンスとリソース使用率のメトリクスを表示できます。
2.4.1. デプロイされたモデルのパフォーマンスメトリクスの表示 リンクのコピーリンクがクリップボードにコピーされました!
シングルモデルサービングプラットフォームにデプロイされている特定のモデルについて、次のメトリクスを監視できます。
- リクエスト数 - 特定のモデルに対して失敗または成功したリクエストの数。
- 平均応答時間 (ミリ秒) - 特定のモデルがリクエストに応答するまでにかかる平均時間。
- CPU 使用率 (%) - 特定のモデルによって現在使用されている、モデルレプリカごとの CPU 制限の割合。
- メモリー使用率 (%) - 特定のモデルによって使用されているモデルレプリカごとのメモリー制限の割合。
これらのメトリクスの時間範囲と更新間隔を指定すると、使用量のピーク時間帯や、指定した時間におけるモデルのパフォーマンスなどを判断するのに役立ちます。
前提条件
- Red Hat OpenShift AI がインストール済みである。
- Red Hat OpenShift AI にログインしている。
次のダッシュボード設定オプションは、次のようにデフォルト値に設定されている。
disablePerformanceMetrics:false disableKServeMetrics:false
disablePerformanceMetrics:false disableKServeMetrics:falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。
プリインストールされたランタイムを使用して、シングルモデルサービングプラットフォームにモデルをデプロイしている。
注記メトリクスは、プリインストールされたモデルサービングランタイム、またはプリインストールされたランタイムから複製されたカスタムランタイムを使用してデプロイされたモデルに対してのみサポートされます。
手順
OpenShift AI ダッシュボードのナビゲーションメニューから、Data science projects をクリックします。
Data science projects のページが開きます。
- 監視するデータサイエンスモデルが含まれているプロジェクトの名前をクリックします。
- プロジェクトの詳細ページで、Models タブをクリックします。
- 使用するモデルを選択します。
Endpoint performance タブで、次のオプションを設定します。
- 時間範囲 - メトリクスを追跡する期間を指定します。1 時間、24 時間、7 日、30 日のいずれかの値を選択できます。
- 更新間隔 - (最新のデータを表示するために) メトリクスページのグラフを更新する頻度を指定します。15 秒、30 秒、1 分、5 分、15 分、30 分、1 時間、2 時間、1 日の値のいずれかを選択できます。
- 下にスクロールすると、リクエスト数、平均応答時間、CPU 使用率、メモリー使用率のデータグラフが表示されます。
検証
Endpoint performance タブには、モデルのメトリクスのグラフが表示されます。
2.4.2. シングルモデルサービングプラットフォームのモデルサービングランタイムメトリクスを表示する リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、シングルモデルサービングプラットフォームの監視を設定する際に、管理者以外のユーザーは OpenShift Web コンソールを使用して、KServe コンポーネントのモデルサービングランタイムメトリクスを表示できます。
前提条件
- 開発者として、またはメトリクスで表示しているプロジェクトの表示パーミッションを持つユーザーとして OpenShift クラスターへのアクセスがある。
- ユーザー定義プロジェクトでのメトリクスのクエリーには慣れています。Red Hat OpenShift Dedicated の Developer パースペクティブを使用したプロジェクトおよびアプリケーションメトリクスの監視 または Red Hat OpenShift Service on AWS の Developer パースペクティブを使用したプロジェクトおよびアプリケーションメトリクスの監視 を参照してください。
手順
- OpenShift Web コンソールにログインします。
- Developer パースペクティブに切り替えます。
- 左側のメニューで、Observe をクリックします。
Red Hat OpenShift Dedicated でのプロジェクトメトリクスのモニタリング または Red Hat OpenShift Service on AWS でのプロジェクトメトリクスのモニタリング で説明されているように、Web コンソールを使用して、
caikit_*、tgi_*、ovms_*、およびvllm:*モデルサービングランタイムメトリクスのクエリーを実行します。OpenShift Service Mesh に関連付けられたistio_*メトリクスのクエリーも実行できます。以下に例を示します。次のクエリーは、vLLM ランタイムでデプロイされたモデルについて、一定期間内に成功した推論リクエストの数を表示します。
sum(increase(vllm:request_success_total{namespace=${namespace},model_name=${model_name}}[${rate_interval}]))sum(increase(vllm:request_success_total{namespace=${namespace},model_name=${model_name}}[${rate_interval}]))Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のクエリーは、スタンドアロン TGIS ランタイムでデプロイされたモデルについて、一定期間内に成功した推論リクエストの数を表示します。
sum(increase(tgi_request_success{namespace=${namespace}, pod=~${model_name}-predictor-.*}[${rate_interval}]))sum(increase(tgi_request_success{namespace=${namespace}, pod=~${model_name}-predictor-.*}[${rate_interval}]))Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のクエリーは、Caikit Standalone ランタイムでデプロイされたモデルについて、一定期間内に成功した推論リクエストの数を表示します。
sum(increase(predict_rpc_count_total{namespace=${namespace},code=OK,model_id=${model_name}}[${rate_interval}]))sum(increase(predict_rpc_count_total{namespace=${namespace},code=OK,model_id=${model_name}}[${rate_interval}]))Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のクエリーは、OpenVINO Model Server ランタイムでデプロイされたモデルについて、一定期間内に成功した推論リクエストの数を表示します。
sum(increase(ovms_requests_success{namespace=${namespace},name=${model_name}}[${rate_interval}]))sum(increase(ovms_requests_success{namespace=${namespace},name=${model_name}}[${rate_interval}]))Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第3章 NVIDIA NIM モデルサービングプラットフォームにモデルをデプロイする リンクのコピーリンクがクリップボードにコピーされました!
NVIDIA NIM モデルサービングプラットフォームで NVIDIA NIM 推論サービスを使用してモデルをデプロイできます。
NVIDIA AI Enterprise の一部である NVIDIA NIM は、クラウド、データセンター、ワークステーションをまたいで推論を実行する高性能 AI モデルの、セキュアで信頼性の高いデプロイメントのために設計されたマイクロサービスのセットです。
3.1. NVIDIA NIM モデルサービングプラットフォームにモデルをデプロイする リンクのコピーリンクがクリップボードにコピーされました!
NVIDIA NIM モデルサービングプラットフォーム を有効にすると、プラットフォーム上で NVIDIA 向けに最適化されたモデルのデプロイを開始できます。
前提条件
- Red Hat OpenShift AI にログインしている。
- NVIDIA NIM モデルサービングプラットフォーム を有効にした。
- データサイエンスプロジェクトを作成した。
- OpenShift AI でグラフィックプロセッシングユニット (GPU) のサポートを有効にした。これには、Node Feature Discovery Operator と NVIDIA GPU Operator のインストールが含まれます。詳細は、Node Feature Discovery Operator のインストール と NVIDIA GPU の有効化 を参照してください。
手順
左側のメニューで、Data science projects をクリックします。
Data science projects のページが開きます。
モデルをデプロイするプロジェクトの名前をクリックします。
プロジェクトの詳細ページが開きます。
- Models タブをクリックします。
Models セクションで、次のいずれかの操作クションを実行します。
- NVIDIA NIM model serving platform タイルで、タイル上の Select NVIDIA NIM をクリックし、Deploy model をクリックします。
- 以前に NVIDIA NIM モデルサービングタイプを選択した場合は、Models ページの右上隅に NVIDIA model serving enabled が表示され、Deploy model ボタンも表示されます。続行するには、Deploy model をクリックします。
Deploy model ダイアログが開きます。
モデルをデプロイするためのプロパティーを次のように設定します。
- Model deployment name フィールドに、デプロイメントの一意の名前を入力します。
- NVIDIA NIM リストから、デプロイする NVIDIA NIM モデルを選択します。詳細は、Supported Models を参照してください。
NVIDIA NIM storage size フィールドで、NVIDIA NIM モデルを保存するために作成されるクラスターストレージインスタンスのサイズを指定します。
注記OpenShift AI で Amazon EBS によってサポートされる PersistentVolumeClaim (PVC) のサイズを変更すると、
VolumeModificationRateExceeded: You've reached the maximum modification rate per volume limit.エラーが発生する場合があります。このエラーを回避するには、EBS ボリュームごとに変更の間隔を少なくとも 6 時間空けてください。クールダウンの期間が終了する前に PVC のサイズを変更すると、Amazon EBS CSI ドライバー (ebs.csi.aws.com) がこのエラーで失敗します。このエラーは、Amazon EBS サービスの制限で、EBS ベースの PVC を使用するすべてのワークロードが対象です。- Number of model server replicas to deploy フィールドに値を指定します。
- Model server size リストから値を選択します。
Hardware profile リストから、ハードウェアプロファイルを選択します。
重要デフォルトでは、ハードウェアプロファイルはダッシュボードのナビゲーションメニューとユーザーインターフェイスに表示されませんが、アクセラレータープロファイルは表示されます。非推奨となったアクセラレータープロファイル機能に関連付けられたユーザーインターフェイスコンポーネントは、引き続き表示されます。ハードウェアプロファイルを有効にすると、Accelerator profiles リストの代わりに Hardware profiles リストが表示されます。ダッシュボードのナビゲーションメニューの Settings → Hardware profiles オプションと、ハードウェアプロファイルに関連付けられたユーザーインターフェイスコンポーネントを表示するには、OpenShift の
OdhDashboardConfigカスタムリソース (CR) で、disableHardwareProfiles値をfalseに設定します。ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。オプション: Customize resource requests and limit をクリックし、次の値を更新します。
- CPUs requests フィールドで、モデルサーバーで使用する CPU の数を指定します。このフィールドの横にあるリストを使用して、値をコアまたはミリコアで指定します。
- CPU limits フィールドで、モデルサーバーで使用する CPU の最大数を指定します。このフィールドの横にあるリストを使用して、値をコアまたはミリコアで指定します。
- Memory requests フィールドで、モデルサーバーに要求されたメモリーをギビバイト (Gi) 単位で指定します。
- Memory limits フィールドに、モデルサーバーの最大メモリー制限をギビバイト (Gi) 単位で指定します。
- オプション: Model route セクションで、Make deployed models available through an external route チェックボックスをオンにして、デプロイされたモデルを外部クライアントが利用できるようにします。
デプロイされたモデルに対する推論リクエストにトークン認証を要求するには、次のアクションを実行します。
- Require token authentication を選択します。
- Service account name フィールドに、トークンが生成されるサービスアカウント名を入力します。
- 追加のサービスアカウントを追加するには、Add a service account をクリックし、別のサービスアカウント名を入力します。
- Deploy をクリックします。
検証
- デプロイされたモデルがプロジェクトの Models タブに表示され、ダッシュボードの Model deployments ページで Status 列にチェックマークが付いて表示されていることを確認します。
3.2. NIM モデルの NVIDIA NIM メトリクスの表示 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift AI では、NVIDIA NIM モデルサービスプラットフォームにデプロイされた NIM モデルの次の NVIDIA NIM メトリクスを確認できます。
- GPU キャッシュ使用量の推移 (ミリ秒)
- 現在実行中、待機中、および最大のリクエスト数
- トークンの数
- 最初のトークンまでの時間
- 出力トークンあたりの時間
- リクエスト結果
これらのメトリクスの時間範囲と更新間隔を指定すると、指定した時間におけるピーク使用時間やモデルのパフォーマンスなどを判断するのに役立ちます。
前提条件
- NVIDIA NIM モデルサービングプラットフォームを有効にした。
- NVIDIA NIM モデルサービスプラットフォームに NIM モデルがデプロイされている。
- クラスター管理者がデプロイメントのメトリクス収集とグラフ生成を有効にした。
disableKServeMetricsOpenShift AI ダッシュボード設定オプションは、デフォルト値のfalseに設定されている。disableKServeMetrics: false
disableKServeMetrics: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。
手順
OpenShift AI ダッシュボードのナビゲーションメニューから、Data science projects をクリックします。
Data science projects のページが開きます。
- 監視する NIM モデルを含むプロジェクトの名前をクリックします。
- プロジェクトの詳細ページで、Models タブをクリックします。
- 確認する NIM モデルをクリックします。
NIM Metrics タブで、以下のオプションを設定します。
- 時間範囲 - メトリクスを追跡する期間を指定します。1 時間、24 時間、7 日、30 日のいずれかの値を選択できます。
- 更新間隔 - (最新のデータを表示するために) メトリクスページのグラフを更新する頻度を指定します。15 秒、30 秒、1 分、5 分、15 分、30 分、1 時間、2 時間、1 日の値のいずれかを選択できます。
- NIM メトリクスのデータグラフを表示するには、下にスクロールします。
検証
NIM メトリクス タブには、デプロイされた NIM モデルの NIM メトリクスのグラフが表示されます。
3.3. NIM モデルのパフォーマンスメトリクスの表示 リンクのコピーリンクがクリップボードにコピーされました!
NVIDIA NIM モデルサービスプラットフォームにデプロイされた NIM モデルでは、次のパフォーマンスメトリクスを確認できます。
- リクエスト数 - 特定のモデルに対して失敗または成功したリクエストの数。
- 平均応答時間 (ミリ秒) - 特定のモデルがリクエストに応答するまでにかかる平均時間。
- CPU 使用率 (%) - 特定のモデルによって現在使用されている、モデルレプリカごとの CPU 制限の割合。
- メモリー使用率 (%) - 特定のモデルによって使用されているモデルレプリカごとのメモリー制限の割合。
これらのメトリクスの時間範囲と更新間隔を指定すると、指定した時間におけるピーク使用時間やモデルのパフォーマンスなどを判断するのに役立ちます。
前提条件
- NVIDIA NIM モデルサービングプラットフォームを有効にした。
- NVIDIA NIM モデルサービスプラットフォームに NIM モデルがデプロイされている。
- クラスター管理者がデプロイメントのメトリクス収集とグラフ生成を有効にした。
disableKServeMetricsOpenShift AI ダッシュボード設定オプションは、デフォルト値のfalseに設定されている。disableKServeMetrics: false
disableKServeMetrics: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。
手順
OpenShift AI ダッシュボードのナビゲーションメニューから、Data science projects をクリックします。
Data science projects のページが開きます。
- 監視する NIM モデルを含むプロジェクトの名前をクリックします。
- プロジェクトの詳細ページで、Models タブをクリックします。
- 確認する NIM モデルをクリックします。
Endpoint performance タブで、次のオプションを設定します。
- 時間範囲 - メトリクスを追跡する期間を指定します。1 時間、24 時間、7 日、30 日のいずれかの値を選択できます。
- Refresh interval - メトリクスページのグラフを更新して最新のデータを表示する頻度を指定します。15 秒、30 秒、1 分、5 分、15 分、30 分、1 時間、2 時間、1 日の値のいずれかを選択できます。
- 下にスクロールすると、パフォーマンスメトリクスのデータグラフが表示されます。
検証
Endpoint performance タブには、デプロイされた NIM モデルのパフォーマンスメトリクスのグラフが表示されます。
第4章 マルチモデルサービングプラットフォームへのモデルのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift AI には、小規模および中規模のモデルをデプロイするために、ModelMesh コンポーネントをベースとした マルチモデルサービングプラットフォーム が組み込まれています。マルチモデルサービングプラットフォームでは、複数のモデルを同じモデルサーバーからデプロイし、サーバーリソースを共有できます。
OpenShift AI バージョン 2.19 以降、ModelMesh をベースとしたマルチモデルサービングプラットフォームは非推奨になりました。引き続きモデルをマルチモデルサービングプラットフォームにデプロイできますが、シングルモデルサービングプラットフォームに移行することが推奨されます。
詳細情報やシングルモデルサービングプラットフォームの使用に関するヘルプは、アカウントマネージャーにお問い合わせください。
4.1. マルチモデルサービングプラットフォーム用のモデルサーバーの追加 リンクのコピーリンクがクリップボードにコピーされました!
マルチモデルサービングプラットフォームを有効にした場合は、モデルをデプロイするようにモデルサーバーを設定する必要があります。大規模なデータセットを使用するために追加のコンピューティング能力が必要な場合は、モデルサーバーにアクセラレーターを割り当てることができます。
OpenShift AI では、Red Hat はモデルサービング用に NVIDIA および AMD GPU アクセラレーターのみをサポートしています。
前提条件
- Red Hat OpenShift AI にログインしている。
- モデルサーバーを追加できるデータサイエンスプロジェクトを作成している。
- マルチモデルサービングプラットフォームを有効化している。
- モデルサーバーにカスタムのモデルサービングランタイムを使用する場合は、ランタイムを追加して有効にしている。カスタムモデルサービングランタイムの追加 を参照してください。
- モデルサーバーでグラフィックスプロセッシングユニット (GPU) を使用する場合は、OpenShift AI で GPU サポートを有効にした。NVIDIA GPU を使用する場合は、NVIDIA GPU の有効化 を参照してください。AMD GPU を使用する場合は、AMD GPU の統合 を参照してください。
手順
OpenShift AI ダッシュボードの左側のメニューで、Data science projects をクリックします。
Data science projects のページが開きます。
モデルサーバーを設定するプロジェクトの名前をクリックします。
プロジェクトの詳細ページが開きます。
- Models タブをクリックします。
次のいずれかの操作を実行します。
- Multi-model serving platform タイルが表示された場合は、タイル上の Add model server をクリックします。
- タイルが表示されない場合は、Add model server ボタンをクリックします。
Add model server ダイアログが開きます。
- Model server name フィールドに、モデルサーバーの一意の名前を入力します。
Serving runtime リストから、OpenShift AI デプロイメントにインストールされ有効になっているモデルサービングランタイムを選択します。
注記モデルサーバーで カスタム モデルサービングランタイムを使用していて、GPU を使用したい場合は、カスタムランタイムが GPU をサポートし、GPU を使用するように適切に設定されていることを確認する必要があります。
- Number of model replicas to deploy フィールドに値を指定します。
Accelerator profile リストから、アクセラレータープロファイルを選択します。
重要デフォルトでは、ハードウェアプロファイルはダッシュボードのナビゲーションメニューとユーザーインターフェイスに表示されませんが、アクセラレータープロファイルは表示されます。非推奨となったアクセラレータープロファイル機能に関連付けられたユーザーインターフェイスコンポーネントは、引き続き表示されます。ハードウェアプロファイルを有効にすると、Accelerator profiles リストの代わりに Hardware profiles リストが表示されます。ダッシュボードのナビゲーションメニューの Settings → Hardware profiles オプションと、ハードウェアプロファイルに関連付けられたユーザーインターフェイスコンポーネントを表示するには、OpenShift の
OdhDashboardConfigカスタムリソース (CR) で、disableHardwareProfiles値をfalseに設定します。ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。オプション: Customize resource requests and limit をクリックし、次の値を更新します。
- CPUs requests フィールドで、モデルサーバーで使用する CPU の数を指定します。このフィールドの横にあるリストを使用して、値をコアまたはミリコアで指定します。
- CPU limits フィールドで、モデルサーバーで使用する CPU の最大数を指定します。このフィールドの横にあるリストを使用して、値をコアまたはミリコアで指定します。
- Memory requests フィールドで、モデルサーバーに要求されたメモリーをギビバイト (Gi) 単位で指定します。
- Memory limits フィールドに、モデルサーバーの最大メモリー制限をギビバイト (Gi) 単位で指定します。
- オプション: Model route セクションで、Make deployed models available through an external route チェックボックスをオンにして、デプロイされたモデルを外部クライアントが利用できるようにします。
オプション: Token authentication セクションで、Require token authentication チェックボックスをオンにすると、モデルサーバーでトークン認証を必須にできます。トークン認証の設定を完了するには、次のアクションを実行します。
- Service account name フィールドに、トークンが生成されるサービスアカウント名を入力します。生成されたトークンは、モデルサーバーの設定時に作成され、Token secret フィールドに表示されます。
- 追加のサービスアカウントを追加するには、Add a service account をクリックし、別のサービスアカウント名を入力します。
Add をクリックします。
- 設定したモデルサーバーは、プロジェクトの Models タブの Models and model servers リストに表示されます。
- オプション: モデルサーバーを更新するには、モデルサーバーの横にあるアクションメニュー (⋮) をクリックし、Edit model server を選択します。
4.2. モデルサーバーの削除 リンクのコピーリンクがクリップボードにコピーされました!
モデルをホストするためにモデルサーバーが必要なくなった場合は、データサイエンスプロジェクトからモデルサーバーを削除できます。
モデルサーバーを削除すると、そのモデルサーバーでホストされているモデルも削除されます。その結果、アプリケーションはモデルを利用できなくります。
前提条件
- データサイエンスプロジェクトと関連するモデルサーバーを作成している。
- モデルにアクセスするアプリケーションのユーザーに、モデルが利用できなくなることを通知している。
手順
OpenShift AI ダッシュボードで、Data science projects をクリックします。
Data science projects のページが開きます。
モデルサーバーを削除するプロジェクトの名前をクリックします。
プロジェクトの詳細ページが開きます。
- Models タブをクリックします。
モデルサーバーを削除するプロジェクトの横にあるアクションメニュー (⋮) をクリックし、Delete model server をクリックします。
Delete model server ダイアログが開きます。
- テキストフィールドにモデルサーバーの名前を入力して、削除することを確認します。
- Delete model server をクリックします。
検証
- 削除したモデルサーバーは、プロジェクトの Models タブに表示されなくなります。
4.3. マルチモデルサービングプラットフォームを使用したモデルのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift AI にトレーニングされたモデルをデプロイし、それらをテストしてインテリジェントなアプリケーションに実装できます。モデルをデプロイすると、API を使用してアクセスできるサービスとして利用可能になります。これにより、データ入力に基づく予測を返すことができます。
マルチモデルサービングプラットフォームを有効にすると、プラットフォーム上にモデルをデプロイできます。
前提条件
- Red Hat OpenShift AI にログインしている。
- マルチモデルサービングプラットフォームを有効化している。
- データサイエンスプロジェクトを作成し、モデルサーバーを追加している。
- S3 互換オブジェクトストレージにアクセスできる。
- デプロイするモデルについて、S3 互換オブジェクトストレージバケット内の関連フォルダーパスを把握している。
手順
OpenShift AI ダッシュボードの左側のメニューで、Data science projects をクリックします。
Data science projects のページが開きます。
モデルをデプロイするプロジェクトの名前をクリックします。
プロジェクトの詳細ページが開きます。
- Models タブをクリックします。
- Deploy model をクリックします。
モデルをデプロイするためのプロパティーを次のように設定します。
- Model name フィールドに、デプロイするモデルの一意の名前を入力します。
Model framework リストから、モデルのフレームワークを選択します。
注記Model framework リストには、モデルサーバーの設定時に指定したモデルサービングランタイムによってサポートされるフレームワークのみが表示されます。
S3 互換オブジェクトストレージからデプロイするモデルの場所を指定するには、次の一連のアクションのいずれかを実行します。
既存の接続を使用します。
- Existing connection を選択します。
- Name リストから、以前に定義した接続を選択します。
Path フィールドに、指定したデータソース内のモデルを含むフォルダーパスを入力します。
注記既存の S3 または URI データ接続を使用して登録済みのモデルバージョンをデプロイする場合は、接続に関する詳細の一部が自動入力されることがあります。これは、データ接続の種類と、データサイエンスプロジェクトで使用できる一致する接続の数によって異なります。たとえば、一致する接続が 1 つだけ存在する場合、パス、URI、エンドポイント、バケット、リージョンなどのフィールドが自動的に入力されることがあります。一致する接続には Recommended というラベルが付けられます。
新しい接続を使用します。
- モデルがアクセスできる新しい接続を定義するには、New connection を選択します。
Add connection モーダルで、Connection type を選択します。S3 compatible object storage オプションと URI オプションは、事前にインストールされた接続タイプです。OpenShift AI 管理者が追加した場合は、追加のオプションが利用できる場合があります。
選択した接続タイプに固有のフィールドを含む Add connection フォームが開きます。
- 接続の詳細フィールドに入力します。
(オプション) Configuration parameters セクションでランタイムパラメーターをカスタマイズします。
- Additional serving runtime arguments の値を変更して、デプロイされるモデルの動作を定義します。
- モデルの環境内の変数を定義するには、Additional environment variables の値を変更します。
- Deploy をクリックします。
検証
- デプロイされたモデルがプロジェクトの Models タブに表示され、ダッシュボードの Model deployments ページで Status 列にチェックマークが付いて表示されていることを確認します。
4.4. デプロイされたモデルの表示 リンクのコピーリンクがクリップボードにコピーされました!
作業の結果を分析するために、Red Hat OpenShift AI にデプロイされたモデルのリストを表示できます。デプロイされたモデルとそのエンドポイントの現在のステータスも表示できます。
前提条件
- Red Hat OpenShift AI にログインしている。
手順
OpenShift AI ダッシュボードで、Models → Model deployments をクリックします。
Model deployments ページが開きます。
このページには、モデルごとに、モデル名、モデルがデプロイされているプロジェクト、モデルが使用するモデルサービングランタイム、デプロイメントステータスなどの詳細が表示されます。
- オプション: 特定のモデルの場合は、Inference endpoint 列のリンクをクリックして、デプロイされたモデルの推論エンドポイントを表示します。
検証
- 以前にデプロイされたデータサイエンスモデルのリストが Model deployments ページに表示されます。
4.5. デプロイされたモデルのデプロイメントプロパティーの更新 リンクのコピーリンクがクリップボードにコピーされました!
以前にデプロイされたモデルのデプロイメントプロパティーを更新できます。たとえば、モデルの接続と名前を変更できます。
前提条件
- Red Hat OpenShift AI にログインしている。
- OpenShift AI にモデルをデプロイしている。
手順
OpenShift AI ダッシュボードで、Models → Model deployments をクリックします。
Model deployments ページが開きます。
更新するデプロイメントプロパティーを持つモデルの横にあるアクションメニュー (⋮) をクリックし、Edit をクリックします。
Edit model ダイアログが開きます。
次のようにモデルのデプロイメントプロパティーを更新します。
- Model name フィールドに、モデルの新しい一意の名前を入力します。
- Model servers リストから、モデルのモデルサーバーを選択します。
Model framework リストから、モデルのフレームワークを選択します。
注記Model framework リストには、モデルサーバーの設定時に指定したモデルサービングランタイムによってサポートされるフレームワークのみが表示されます。
- 必要に応じて、既存の接続を指定するか、新しい接続を作成して接続を更新します。
- Redeploy をクリックします。
検証
- デプロイメントプロパティーを更新したモデルは、ダッシュボードの Model deployments ページに表示されます。
4.6. デプロイされたモデルの削除 リンクのコピーリンクがクリップボードにコピーされました!
以前にデプロイしたモデルを削除できます。これにより、不要になったデプロイ済みのモデルを削除できます。
前提条件
- Red Hat OpenShift AI にログインしている。
- モデルをデプロイしている。
手順
OpenShift AI ダッシュボードで、Models → Model deployments をクリックします。
Model deployments ページが開きます。
削除するデプロイモデルの横にあるアクションメニュー (⋮) をクリックし、Delete をクリックします。
Delete deployed model ダイアログが開きます。
- テキストフィールドにデプロイしたモデルの名前を入力し、削除することを確認します。
- Delete deployed model をクリックします。
検証
- 削除したモデルは Model deployments ページに表示されなくなります。
4.7. マルチモデルサービングプラットフォームの監視の設定 リンクのコピーリンクがクリップボードにコピーされました!
マルチモデルサービングプラットフォームには、ModelMesh コンポーネントのモデルおよびモデルサーバーメトリクスが含まれています。ModelMesh は独自のメトリクスセットを生成し、それらの提供に基盤となるモデルサービングランタイムに依存しません。ModelMesh が生成するメトリクスのセットには、モデルリクエスト率とタイミング、モデルのロード率とアンロード率、時間とサイズ、内部キューイング遅延、容量と使用率、キャッシュ状態、最近最も使用されていないモデルのメトリクスが含まれます。詳細は、ModelMesh メトリクス を参照してください。
監視を設定したら、ModelMesh コンポーネントのメトリクスを表示できます。
前提条件
- OpenShift クラスターのクラスター管理者権限を持っている。
- OpenShift コマンドラインインターフェイス (CLI) をダウンロードしてインストールした。OpenShift CLI のインストール を参照してください。
- ユーザー定義ワークフローのモニタリングに使用する config map の作成 を理解している。この手順でも同様のステップを実行します。
- OpenShift でユーザー定義プロジェクトの モニタリングを有効にする方法 を理解している。この手順でも同様のステップを実行します。
-
メトリクスを監視するユーザーに、
monitoring-rules-viewロールを 割り当て ている。
手順
ターミナルウィンドウで、クラスター管理者として OpenShift クラスターにまだログインしていない場合は、次の例に示すように OpenShift CLI にログインします。
oc login <openshift_cluster_url> -u <admin_username> -p <password>
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow uwm-cm-conf.yamlという YAML ファイルに次の内容のConfigMapオブジェクトを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow user-workload-monitoring-configオブジェクトは、ユーザー定義プロジェクトを監視するコンポーネントを設定します。保持時間が推奨値の 15 日に設定されていることを確認します。設定を適用して
user-workload-monitoring-configオブジェクトを作成します。oc apply -f uwm-cm-conf.yaml
$ oc apply -f uwm-cm-conf.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow uwm-cm-enable.yamlという YAML ファイルに、次の内容で、別のConfigMapオブジェクトを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-monitoring-configオブジェクトを使用して、ユーザー定義プロジェクトの監視を有効にします。設定を適用して、
cluster-monitoring-configオブジェクトを作成します。oc apply -f uwm-cm-enable.yaml
$ oc apply -f uwm-cm-enable.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8. マルチモデルサービングプラットフォームのモデルサービングランタイムメトリクスの表示 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者がマルチモデルサービングプラットフォームの監視を設定すると、管理者以外のユーザーは OpenShift Web コンソールを使用して、ModelMesh コンポーネントのモデルサービングランタイムメトリクスを表示できます。
前提条件
- 開発者として、またはメトリクスで表示しているプロジェクトの表示パーミッションを持つユーザーとして OpenShift クラスターへのアクセスがある。
- ユーザー定義プロジェクトでのメトリクスのクエリーには慣れています。Red Hat OpenShift Dedicated の Developer パースペクティブを使用したプロジェクトおよびアプリケーションメトリクスの監視 または Red Hat OpenShift Service on AWS の Developer パースペクティブを使用したプロジェクトおよびアプリケーションメトリクスの監視 を参照してください。
手順
- OpenShift Web コンソールにログインします。
- Developer パースペクティブに切り替えます。
- 左側のメニューで、Observe をクリックします。
-
Red Hat OpenShift Dedicated でのプロジェクトメトリクスのモニタリング または Red Hat OpenShift Service on AWS でのプロジェクトメトリクスのモニタリング で説明されているように、Web コンソールを使用して
modelmesh_*メトリクスのクエリーを実行します。
4.9. モデルサーバー上のすべてのモデルのパフォーマンスメトリクスの表示 リンクのコピーリンクがクリップボードにコピーされました!
モデルサーバーにデプロイされているすべてのモデルについて、次のメトリクスを監視できます。
- 5 分あたりの HTTP リクエスト数 - サーバー上のすべてのモデルに対して失敗または成功した HTTP リクエストの数。
- 平均応答時間 (ミリ秒) - サーバー上のすべてのモデルについて、モデルサーバーがリクエストに応答するのにかかる平均時間。
- CPU 使用率 (%) - サーバー上のすべてのモデルで現在使用されている CPU 容量の割合。
- メモリー使用率 (%) - サーバー上のすべてのモデルで現在使用されているシステムメモリーの割合。
これらのメトリクスの時間範囲と更新間隔を指定すると、使用量のピーク時間帯や、指定した時間におけるモデルのパフォーマンスなどを判断するのに役立ちます。
前提条件
- Red Hat OpenShift AI がインストール済みである。
- OpenShift AI がインストールされている OpenShift クラスターで、ユーザーのワークロードモニタリングが有効化されている。
- Red Hat OpenShift AI にログインしている。
- マルチモデルサービングプラットフォームにモデルがデプロイされている。
手順
OpenShift AI ダッシュボードのナビゲーションメニューから、Data science projects をクリックします。
Data science projects のページが開きます。
- 監視するデータサイエンスモデルが含まれているプロジェクトの名前をクリックします。
- プロジェクトの詳細ページで、Models タブをクリックします。
- 関心のあるモデルサーバーの行で、アクションメニュー (⋮) をクリックしてから、View model server metrics を選択します。
オプション: モデルサーバーのメトリクスページで、次のオプションを設定します。
- 時間範囲 - メトリクスを追跡する期間を指定します。1 時間、24 時間、7 日、30 日のいずれかの値を選択できます。
- 更新間隔 - (最新のデータを表示するために) メトリクスページのグラフを更新する頻度を指定します。15 秒、30 秒、1 分、5 分、15 分、30 分、1 時間、2 時間、1 日の値のいずれかを選択できます。
- 下にスクロールすると、5 分あたりの HTTP リクエスト、平均応答時間、CPU 使用率、メモリー使用率のデータグラフが表示されます。
検証
モデルサーバーのメトリクスページでは、グラフによってパフォーマンスメトリクスに関するデータが提供されます。
4.10. デプロイされたモデルの HTTP リクエストメトリクスの表示 リンクのコピーリンクがクリップボードにコピーされました!
マルチモデルサービングプラットフォームにデプロイされている特定のモデルに対し、失敗または成功した HTTP リクエストを示すグラフを表示できます。
前提条件
- Red Hat OpenShift AI がインストール済みである。
- OpenShift AI がインストールされている OpenShift クラスターで、ユーザーのワークロードモニタリングが有効化されている。
次のダッシュボード設定オプションは、次のようにデフォルト値に設定されている。
disablePerformanceMetrics:false disableKServeMetrics:false
disablePerformanceMetrics:false disableKServeMetrics:falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow ダッシュボード設定オプションの設定に関する詳細は、ダッシュボードのカスタマイズ を参照してください。
- Red Hat OpenShift AI にログインしている。
- マルチモデルサービングプラットフォームにモデルがデプロイされている。
手順
- OpenShift AI ダッシュボードで、Models → Model deployments をクリックします。
- Model deployments ページで、関心のあるモデルを選択します。
オプション: Endpoint performance タブで、次のオプションを設定します。
- 時間範囲 - メトリクスを追跡する期間を指定します。1 時間、24 時間、7 日、30 日のいずれかの値を選択できます。
- 更新間隔 - (最新のデータを表示するために) メトリクスページのグラフを更新する頻度を指定します。15 秒、30 秒、1 分、5 分、15 分、30 分、1 時間、2 時間、1 日の値のいずれかを選択できます。
検証
Endpoint performance タブには、モデルの HTTP メトリクスのグラフが表示されます。
第5章 デプロイされたモデルへの推論リクエスト リンクのコピーリンクがクリップボードにコピーされました!
モデルをデプロイすると、API リクエストでアクセスできるサービスとして利用できるようになります。これにより、リクエストで提供したデータに基づいてモデルから予測を取得できるようになります。
5.1. デプロイされたモデルの認証トークンへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
トークン認証を有効にすることでモデル推論エンドポイントを保護した場合は、推論リクエストで認証トークンを指定できるように、認証トークンへのアクセス方法を理解する必要があります。
前提条件
- Red Hat OpenShift AI にログインしている。
- シングルモデルサービングプラットフォームを使用してモデルをデプロイした。
手順
OpenShift AI ダッシュボードで、Data science projects をクリックします。
Data science projects のページが開きます。
デプロイされたモデルが含まれるプロジェクトの名前をクリックします。
プロジェクトの詳細ページが開きます。
- Models タブをクリックします。
Models and model servers リストで、モデルのセクションを展開します。
認証トークンは、Token secret フィールドの Token authentication セクションに表示されます。
-
オプション: 推論リクエストで使用する認証トークンをコピーするには、トークン値の横に表示される Copy ボタン (
) をクリックします。
5.2. デプロイされたモデルの推論エンドポイントにアクセスする リンクのコピーリンクがクリップボードにコピーされました!
デプロイされたモデルに対して推論リクエストを行うには、利用可能な推論エンドポイントへのアクセス方法を知っておく必要があります。
サポートされているランタイムとコマンド例で使用するパスのリストは、推論エンドポイント を参照してください。
前提条件
- Red Hat OpenShift AI にログインしている。
- シングルモデルサービングプラットフォームを使用してモデルをデプロイした。
- デプロイされたモデルに対してトークン認証を有効にしている場合は、関連付けられたトークン値があります。
手順
OpenShift AI ダッシュボードで、Models → Model deployments をクリックします。
モデルの推論エンドポイントは、Inference endpoint フィールドに表示されます。
- モデルで実行するアクション (およびモデルがそのアクションをサポートしているかどうか) に応じて、表示されている推論エンドポイントをコピーし、URL の末尾にパスを追加します。
- エンドポイントを使用して、デプロイされたモデルに API リクエストを送信します。
5.3. シングルモデルサービングプラットフォームにデプロイされたモデルに対する推論リクエストの実行 リンクのコピーリンクがクリップボードにコピーされました!
シングルモデルサービングプラットフォームを使用してモデルをデプロイすると、そのモデルは、API リクエストを使用してアクセスできるサービスとして利用できます。これにより、データ入力に基づく予測を返すことができます。API リクエストを使用してデプロイされたモデルと対話するには、モデルの推論エンドポイントを知っておく必要があります。
さらに、トークン認証を有効にすることで推論エンドポイントを保護した場合は、推論リクエストで認証トークンを指定できるように、認証トークンへのアクセス方法を理解する必要があります。
5.4. 推論エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
これらの例は、推論エンドポイントを使用してモデルをクエリーする方法を示しています。
モデルのデプロイ時にトークン認証を有効にした場合は、Authorization ヘッダーを追加してトークン値を指定します。
5.4.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>'
curl --json '{"model_id": "<model_name__>", "inputs": "<text>"}' https://<inference_endpoint_url>:443/api/v1/task/server-streaming-text-generation -H 'Authorization: Bearer <token>'
5.4.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>'
curl -H 'Content-Type: application/json' -d '{"inputs": "<text>", "model_id": "<model_id>"}' <inference_endpoint_url>/api/v1/task/embedding -H 'Authorization: Bearer <token>'
gRPC
grpcurl -d '{"text": "<text>"}' -H \"mm-model-id: <model_id>\" <inference_endpoint_url>:443 caikit.runtime.Nlp.NlpService/EmbeddingTaskPredict -H 'Authorization: Bearer <token>'
grpcurl -d '{"text": "<text>"}' -H \"mm-model-id: <model_id>\" <inference_endpoint_url>:443 caikit.runtime.Nlp.NlpService/EmbeddingTaskPredict -H 'Authorization: Bearer <token>'
5.4.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
grpcurl -proto text-generation-inference/proto/generation.proto -d '{"requests": [{"text":"<text>"}]}' -H 'Authorization: Bearer <token>' -insecure <inference_endpoint_url>:443 fmaas.GenerationService/Generate
5.4.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>'
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>'
5.4.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>containers: - args: - --chat-template=<CHAT_TEMPLATE>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 利用可能なチャットテンプレートは、こちら にある
.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>'
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>'
5.4.6. vLLM Intel Gaudi Accelerator ServingRuntime for KServe リンクのコピーリンクがクリップボードにコピーされました!
vLLM NVIDIA GPU ServingRuntime for KServe を参照してください。
5.4.7. vLLM AMD GPU ServingRuntime for KServe リンクのコピーリンクがクリップボードにコピーされました!
vLLM NVIDIA GPU ServingRuntime for KServe を参照してください。
5.4.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>'
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>'
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
grpcurl -cacert ./openshift_ca_istio_knative.crt -proto ./grpc_predict_v2.proto -d @ -H "Authorization: Bearer <token>" <inference_endpoint_url>:443 inference.GRPCInferenceService/ModelMetadata
5.4.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>'
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>'
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
grpcurl -cacert ./openshift_ca_istio_knative.crt -proto ./grpc_predict_v2.proto -d @ -H "Authorization: Bearer <token>" <inference_endpoint_url>:443 inference.GRPCInferenceService/ModelMetadata