NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix Enterprise AI 2.6 をデプロイしてみる。Part-08:NAI の動作確認

NKP の Kubernetes クラスタに、Nutanix Enterprise AI(NAI)2.6 を展開してみます。今回は、NAI の動作確認として、モデルのインポートとエンドポイントの作成を実施してみます。なお、今回は簡易的に動作確認するため、Hugging Face Hub からトークンなしでダウンロードできるモデルを利用します。

なお、NAI のライセンス キーを追加していない場合、一定時間が経過すると、ライセンス不足によりエンドポイント起動ができなくなります。そのため動作確認は、NAI インストール直後に実施するか、NAI のライセンス キーを登録してからあらためて実施することになります。

 

前回はこちら。

 

今回の内容です。

 

1. Emmbeding モデルによる推論サービスの作成

まずは、動作確認もかねて、Emmbeding モデルの推論サービスを作成してみます。

ここでは、Hugging Face Hub からトークンなしでダウンロードできる「granite-embedding-107m-multilingual」モデルを利用します。このモデルによる推論サービス エンドポイントは、CPU のみでも動作します。

 

1-1. モデルのインポート

NAI UI で、「モデル」を開き、「Hugging Face モデル ハブからインポートする」をクリックします。

 

モデル名で検索、もしくは「>」ボタンをクリックしてページを進めて、下記のモデルを選択して「インポート」をクリックします。

ちなみに、これはテキスト生成ではなく、テキストをベクトル化(Embedding)するモデルです。

 

モデル インスタンスの名前を入力して、「インポート」をクリックします。これは、インポートしたモデルを NAI で管理するための名前です。

  • モデル インスタンス名:granite-embed

 

モデルのダウンロード・インポートが完了すると、ステータスが「準備完了」になります。まだ NAI でモデルへのアクセスを許可していないため、モデル インスタンス名のとなりに「!」マークが表示されています。

 

1-2. モデルのアクセス許可

「モデル」画面で「モデル アクセス制御」タブを開き、「Hugging Face モデル ハブ」の行にある「許可リストを変更」をクリックします。

 

「granite」などの文字列で検索し、さきほどインポートしたモデルのチェック ボックスを ON にして「保存」をクリックします。

 

これで、Hugging Face モデル ハブのモデルが、1件のみアクセス許可されました。

 

「リスト」タブに戻ると、モデル インスタンス名のとなりにあった「!」マークが消えています。

 

1-3. エンドポイントの作成

この環境では、まだ Kubernetes クラスタに GPU ノードを追加していません。そして今回のモデルは GPU を必須としていないので、CPU のみを利用した推論サービス エンドポイントとして起動します。

 

「モデル」画面の「リスト」タブで、インポートしたモデルを選択して、「アクション」→「エンドポイントの作成」をクリックします。

 

エンドポイントを起動するためのパラメータを入力します。

  • エンドポイント名:granite-embed-ep
  • モデル機能:Embedding
  • モデル インスタンス名:granite-embed
  • アクセラレーション タイプ:CPU

そして、「新規 API キーを作成」をクリックします。

 

キーの名前を入力して、「作成」をクリックします。

  • キーの名前:demo-kay-01

 

API キーが作成されるので、「キーをコピー」ボタンなどを利用して、テキスト ファイルなどに保存しておきます。そして、「閉じる」ボタンをクリックして画面を閉じます。

この画面を閉じると API キーを再確認できないので、キーを紛失した場合は、新規のキーを作成することになります。

 

作成した API キーを選択し、「次へ」をクリックします。

  • API キー:demo-kay-01

 

推論エンジンなどのパラメータを指定して、「次へ」をクリックします。

  • 推論エンジン:vLLM
  • インスタンス数:1
  • vCPUs:8
  • メモリー:10

なお、ここで指定されている vCPU と メモリーの値は、デフォルト値であり、最小値です。推論サービスを提供する Pod を起動するには、Kubernetes の Worker ノードに、このリソースの空きが必要です。

 

パラメータを確認して、「作成」をクリックすると、推論サービスの Pod が起動されます。

 

起動が完了すると、下記のように、「推論」→「ローカル エンドポイント」画面で、エンドポイントのステータスが「アクティブ」になります。

 

NAI のエンドポイントは、Kubernetes 側では KServe の InferenceService(isvc)リソースとして起動されます。そして、admin ユーザーによって作成されたエンドポイントは、nai-admin Namespace で起動されます。

gowatana@nkp-work-02:~$ kubectl get inferenceservices.serving.kserve.io -n nai-admin
NAME               URL                                             READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION   AGE
granite-embed-ep   http://granite-embed-ep-nai-admin.example.com   True                                                                  2m32s

 

Pod も起動できています。

gowatana@nkp-work-02:~$ kubectl get pods -n nai-admin
NAME                                          READY   STATUS    RESTARTS   AGE
granite-embed-ep-predictor-57668dfcbb-t2dmw   1/1     Running   0          2m40s

 

1-4. エンドポイントのテスト

作成したエンドポイントの名前をクリックします。

 

エンドポイントの動作確認をするため、「テスト」をクリックします。

 

テスト用のリクエストを選択して、「テスト」をクリックします。

 

画面の右側に、リクエストの文字列が、推論サービスによってベクトル化されたものが表示されます。

これで、エンドポイントが動作していることが確認できたので、「完了」をクリックして画面を閉じます。

 

このエンドポイントを利用するサンプル リクエストを入手するため、「エンドポイント アクセス」ボタンをクリックします。

 

curl によるサンプル リクエストが表示されます。

 

表示されたスクリプトは下記です。

gist.github.com

 

エンドポイントの起動・テストが完了したら、アプリケーション担当には、エンドポイントの URL、API キー、そしてサンプル スクリプトを提供することになるはずです。

 

1-5. エンドポイントのハイバネート

エンドポイントを一時的に停止して、CPU / メモリ / GPU リソースを開放したい場合は、エンドポイントを削除せずに一時的に停止(ハイバネート)できます。

ここでは、ほかのモデルのエンドポイントを起動するために、granite-embed-ep エンドポイントをハイバネートしてみます。

 

「推論」→「ローカル エンドポイント」を開き、停止するエンドポイント(granite-embed-ep)を選択して、「アクション」→「ハイバネート」をクリックします。

 

確認のため、「hibernate」と入力して、「ハイバネート」をクリックします。

 

これで、エンドポイントがハイバネートされて、ステータスが「休止状態」になりました。

 

2. Reranker モデルによる推論サービスの作成

ここまでと同様の手順で、Reranker モデルのエンドポイントも作成してみます。 これは、RAG システムで検索結果の並べ替え(Reranking)を行うことで、LLM に渡す情報の精度向上させるために用いられます。

 

2-1. モデルのインポート

Hugging Face の Reranker モデルは、NAI v2.6 には ms-marco-MiniLM-L6-v2 のみが登録されています。このモデルも、Hugging Face Token 登録なしでダウンロードできます。

 

「モデル」→「リスト」タブを開き、「モデルをインポートする」→「Hugging Face モデル ハブから」をクリックします。

 

「機能でフィルタリング」→「Reranker」を選択して、「フィルターを適用」をクリックします。

 

モデルを選択して、「インポート」をクリックします。

 

モデル インスタンス名を入力して、「インポート」をクリックします。

  • モデル インスタンス名:minilm-rerank

 

モデルのダウンロード・インポートが完了すると、ステータスが「準備完了」になります。

 

2-2. モデルのアクセス許可

「モデル」→「モデル アクセス制御」タブを開き、「Hugging Face モデル ハブ」の行にある「許可リストを変更」をクリックします。

 

「機能でフィルタリング」→「Reranker」を選択して、「フィルターを適用」をクリックします。

 

モデルを選択して、「保存」をクリックします。このとき、すでに選択されていたモデルのチェックボックスを OFF にしないように注意してください。

  • モデル:minilm-rerank

 

「Hugging Face モデル ハブ」の許可されたモデルが、2件(2 / 43)になったことを確認します。

 

2-3. エンドポイントの作成

「モデル」画面の「リスト」タブで、インポートしたモデルを選択して、「アクション」→「エンドポイントの作成」をクリックします。

  • モデル インスタンス名:minilm-rerank

 

エンドポイントの基本パラメータを入力て「次へ」をクリックします。このモデルも、CPU で利用可能です。

  • エンドポイント名:minilm-rerank-ep
  • モデル機能:Reranker
  • モデル インスタンス名:minilm-rerank
  • アクセラレーション タイプ:CPU
  • API キー:demo-key-01

 

推論エンジンなどのパラメータは、デフォルトのまま「次へ」をクリックします。

  • 推論エンジン:vLLM
  • インスタンス数:1
  • vCPUs:8
  • メモリー:10

 

確認画面で「作成」をクリックすると、推論サービスの Pod が起動されます。

 

しばらく待つと、作成したエンドポイントが「アクティブ」になります。Worker ノードのリソースに空きがないと Pod が起動できないので、利用していないエンドポイントは「ハイバネート」などで停止しておきます。

 

2-4. エンドポイントのテスト

エンドポイントの動作確認を実施します。アクティブになったエンドポイントの名前をクリックします。

  • エンドポイント名:minilm-rerank-ep

 

エンドポイントの「概要」タブが表示されるので、「テスト」をクリックします。

 

リクエストと、並べ替え対象のテキストが3件用意されているので(内容は固定)、「テスト」をクリックします。

 

3件のテキストの(Reranking(並べ替え)が実施されれました。「完了」をクリックしてテスト画面を閉じます。

 

「エンドポイント アクセス」をクリックすると、このエンドポイントを利用するサンプル リクエストが入手できます。

 

下記のように、curl のサンプル リクエストが表示されます。

 

表示されたスクリプトは下記です。

gist.github.com

 

つづく。

 

©2026 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。