3.11. KServe の raw デプロイメントモードを使用してシングルノードの OpenShift にモデルをデプロイする
シングルノードの OpenShift で KServe の raw デプロイメントモードを使用して機械学習モデルをデプロイできます。raw デプロイメントモードには、複数のボリュームをマウントする機能など、Knative に比べていくつかのメリットがあります。
シングルノード OpenShift で KServe の raw デプロイメントモードを使用して機械学習モデルをデプロイすることは、限定提供機能です。限定提供とは、Red Hat AI Business Unit からの特別な承認を得た場合にのみ、対象となる機能をインストールしてサポートを受けることができることを意味します。このような承認がない場合、この機能はサポートされません。
前提条件
- Red Hat OpenShift AI にログインしている。
- OpenShift クラスターのクラスター管理者権限を持っている。
- 少なくとも 4 つの CPU と 16 GB のメモリーを備えたノードを持つ OpenShift クラスターを作成している。
- Red Hat OpenShift AI (RHOAI) Operator がインストールされている。
- OpenShift コマンドラインインターフェイス (CLI) がインストールされている。OpenShift コマンドラインインターフェイス (CLI) のインストールに関する詳細は、OpenShift CLI のスタートガイド を参照してください。
- KServe をインストールしている。
- S3 互換オブジェクトストレージにアクセスできる。
- デプロイするモデルについて、S3 互換オブジェクトストレージバケット内の関連フォルダーパスを把握している。
- 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 の有効化 を参照してください。
手順
コマンドラインターミナルを開き、クラスター管理者として OpenShift クラスターにログインします。
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 デフォルトでは、OpenShift はネットワークトラフィック管理にサービスメッシュを使用します。KServe の raw デプロイメントモードではサービスメッシュは必要ないため、Red Hat OpenShift Service Mesh を無効にします。
Red Hat OpenShift Service Mesh を無効にするには、次のコマンドを入力します。
oc edit dsci -n redhat-ods-operator
$ oc edit dsci -n redhat-ods-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML エディターで、
serviceMesh
コンポーネントのmanagementState
の値を次のようにRemoved
に変更します。spec: components: serviceMesh: managementState: Removed
spec: components: serviceMesh: managementState: Removed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存します。
プロジェクトを作成します。
oc new-project <project_name> --description="<description>" --display-name="<display_name>"
$ oc new-project <project_name> --description="<description>" --display-name="<display_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクトの作成に関する詳細は、プロジェクトの使用 を参照してください。
データサイエンスクラスターを作成します。
-
Red Hat OpenShift Web コンソールの Administrator ビューで、Operators
Installed Operators をクリックし、Red Hat OpenShift AI Operator をクリックします。 - Data Science Cluster タブをクリックします。
- Create DataScienceCluster ボタンをクリックします。
- Configure via フィールドで、YAML view ラジオボタンをクリックします。
YAML エディターの
spec.components
セクションで、kserve
コンポーネントを次のように設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Create をクリックします。
-
Red Hat OpenShift Web コンソールの Administrator ビューで、Operators
シークレットファイルを作成します。
コマンドラインターミナルで、シークレットを格納する YAML ファイルを作成し、次の YAML コードを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要切断されたデプロイメントで機械学習モデルをデプロイする場合は、
metadata.annotations
セクションにserving.kserve.io/s3-verifyssl: '0'
を追加します。- ファイルを secret.yaml というファイル名で保存します。
secret.yaml ファイルを適用します。
oc apply -f secret.yaml -n <namespace>
$ oc apply -f secret.yaml -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
サービスアカウントを作成します。
サービスアカウントを格納する YAML ファイルを作成し、次の YAML コードを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスアカウントの詳細は、サービスアカウントの理解と作成 を参照してください。
- ファイルを serviceAccount.yaml というファイル名で保存します。
serviceAccount.yaml ファイルを適用します。
oc apply -f serviceAccount.yaml -n <namespace>
$ oc apply -f serviceAccount.yaml -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
モデルの予測を提供するコンテナーイメージを定義するために、サービングランタイム用の YAML ファイルを作成します。以下は OpenVINO Model Server の使用例です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 上記の OpenVINO Model Server の例を使用している場合は、YAML コード内のプレースホルダーに必要な正しい値を挿入していることを確認してください。
- 適切なファイル名でファイルを保存します。
サービングランタイムを含むファイルを適用します。
oc apply -f <serving run time file name> -n <namespace>
$ oc apply -f <serving run time file name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
InferenceService カスタムリソース (CR) を作成します。InferenceService CR を含むための YAML ファイルを作成します。以前使用した OpenVINO Model Server の例を使用する場合の対応する YAML コードは、次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML コードで、次の値が正しく設定されていることを確認します。
-
serving.kserve.io/deploymentMode
には、RawDeployment
の値が含まれている必要があります。 -
modelFormat
には、onnx
などのモデル形式の値が含まれている必要があります。 -
storageUri
には、モデルの s3 ストレージディレクトリーの値 (例s3://<bucket_name>/<model_directory_path>
) が含まれている必要があります。 -
runtime
には、ovms-runtime
など、サービングランタイムの名前の値が含まれている必要があります。
-
- 適切なファイル名でファイルを保存します。
InferenceService CR を含むファイルを適用します。
oc apply -f <InferenceService CR file name> -n <namespace>
$ oc apply -f <InferenceService CR file name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
クラスター内のすべての Pod が実行されていることを確認します。
oc get pods -n <namespace>
$ oc get pods -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME READY STATUS RESTARTS AGE <isvc_name>-predictor-xxxxx-2mr5l 1/1 Running 2 165m console-698d866b78-m87pm 1/1 Running 2 165m
NAME READY STATUS RESTARTS AGE <isvc_name>-predictor-xxxxx-2mr5l 1/1 Running 2 165m console-698d866b78-m87pm 1/1 Running 2 165m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべての Pod が実行中であることを確認したら、サービスポートをローカルマシンに転送します。
oc -n <namespace> port-forward pod/<pod-name> <local_port>:<remote_port>
$ oc -n <namespace> port-forward pod/<pod-name> <local_port>:<remote_port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <namespace>
、<pod-name>
、<local_port>
、<remote_port>
(これは8888
などのモデルサーバーのポート) を、デプロイメントに適した値に置き換えてください。
検証
-
好みのクライアントライブラリーまたはツールを使用して、
localhost
推論 URL にリクエストを送信します。