すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:サーバーレスモードでの KServe モデル推論サービスのデプロイ

最終更新日:Mar 26, 2026

KServe(旧称:KFServing)は、クラウドネイティブ環境向けのモデルサービスおよび推論エンジンです。自動スケーリング、スケールトゥーゼロ、カナリーデプロイをサポートしています。本トピックでは、Service Mesh (ASM) および Arena を使用して、KServe モデルをサーバーレスモードで推論サービスとしてデプロイする方法について説明します。

前提条件

作業を開始する前に、以下の要件を満たしていることを確認してください。

ステップ 1:モデルデータの準備

モデルデータは NAS または Object Storage Service (OSS) に保存します。詳細については、「静的にプロビジョニングされた NAS ボリュームのマウント」および「ossfs 1.0 静的プロビジョニングボリュームの使用」をご参照ください。本トピックでは、NAS を例として使用します。

1.1 NAS のマウントポイントの取得

  1. File Storage NAS コンソール にログインします。左側のナビゲーションウィンドウで、ファイルシステム > ファイルシステム一覧 を選択します。ページ上部で、NAS ファイルシステムが配置されているリージョンを選択します。

  2. [ファイルシステムリスト] ページで、管理するファイルシステムの ID をクリックします。 詳細ページで、[マウントポイント] をクリックします。 [マウントポイント] 列の image にポインターを移動して、マウントポイントを表示します。 後で使用するために、マウントポイントとマウントコマンドを記録します。

1.2 PV および PVC の設定

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、クラスター をクリックします。

  2. クラスター ページで、目的のクラスターを検索し、その名前をクリックします。左側のナビゲーションウィンドウで、ボリューム > 永続ボリューム を選択します。

  3. 永続ボリューム ページの右上隅で、作成 をクリックします。

  4. PV の作成 ダイアログボックスで、以下のパラメーターを設定し、作成 をクリックして、training-data という名前の永続ボリューム (PV) を作成します。その他のパラメーターについては、「静的にプロビジョニングされた NAS ボリュームのマウント」をご参照ください。

    パラメーター
    PV タイプNAS
    ボリューム名training-data
    マウントターゲットドメイン名ステップ 1.1 で取得したマウントポイントを選択します
  5. 左側のナビゲーションウィンドウで、ボリューム > 永続ボリューム要求 を選択します。永続ボリューム要求 ページで、右上隅の 作成 をクリックします。

  6. PVC の作成 ダイアログボックスで、以下のパラメーターを設定し、作成 をクリックして、training-data という名前の永続ボリューム要求 (PVC) を作成します。その他のパラメーターについては、「静的にプロビジョニングされた NAS ボリュームのマウント」をご参照ください。

    パラメーター
    PVC タイプNAS
    名前training-data
    割り当てモード既存のボリューム
    既存のボリュームPV の選択 をクリックして、作成した PV を選択します

1.3 モデルデータを NAS ファイルシステムにダウンロード

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、クラスター をクリックします。

  2. クラスター ページで、目的のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、ノード > ノード を選択します。

  3. ノード ページで、管理対象のノードのインスタンス ID をクリックします。インスタンスの詳細 ページで、その他 > ワークベンチリモートアクセス をクリックし、ログイン をクリックします。

  4. ステップ 1.1 で取得したマウントコマンドを実行して、NAS ファイルシステムをマウントします。

  5. Hugging Face から bloom-560m モデルをダウンロードし、PVC 内のパス pvc://training-data/bloom-560m に保存します。

ステップ 2:推論サービスのデプロイ

  1. クラスター内で利用可能な GPU リソースを照会します。

    arena top node

    期待される出力:

    NAME                       IPADDRESS      ROLE    STATUS  GPU(Total)  GPU(Allocated)
    cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   0           0
    cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   0           0
    cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   0           0
    cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   1           0
    cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   1           0
    ---------------------------------------------------------------------------------------------------
    Allocated/Total GPUs In Cluster:
    0/2 (0.0%)

    この出力により、2 つの GPU アクセラレーションノードが利用可能であることが確認できます。

  2. bloom-560m という名前の推論サービスを起動します。PVC training-data はコンテナ内の /mnt/models にマウントされ、ステップ 1.3 でモデルがダウンロードされた場所になります。

    arena serve kserve \
        --name=bloom-560m \
        --image=ghcr.io/huggingface/text-generation-inference:1.0.2 \
        --gpus=1 \
        --cpu=6 \
        --memory=20Gi \
        --port=8080 \
        --env=STORAGE_URI=pvc://training-data \
        "text-generation-launcher --disable-custom-kernels --model-id /mnt/models/bloom-560m --num-shard 1 -p 8080"

    期待される出力:

    inferenceservice.serving.kserve.io/bloom-560m created
    INFO[0013] The Job bloom-560m has been submitted successfully
    INFO[0013] You can run `arena serve get bloom-560m --type kserve -n default` to check the job status

    以下の表は、パラメーターの説明です。

    パラメーター必須説明
    --nameはい送信されたタスクの名前です。グローバルに一意である必要があります。
    --imageはい推論サービスのコンテナイメージアドレスです。
    --gpusいいえ必要な GPU 数です。デフォルト値は 0 です。
    --cpuいいえ必要な CPU 数です。
    --memoryいいえ必要なメモリ量です。
    --portいいえ外部アクセス用に公開するポートです。
    --envいいえキーと値のペア形式の環境変数です。この例では、STORAGE_URI がモデルを保存している PVC を指すように設定されています。

ステップ 3:推論サービスの検証

  1. KServe 推論サービスのデプロイ状況を確認します。

    arena serve get bloom-560m

    期待される出力:

    Name:       bloom-560m
    Namespace:  default
    Type:       KServe
    Version:    00001
    Desired:    1
    Available:  1
    Age:        9m
    Address:    http://bloom-560m.default.example.com
    Port:       :80
    GPU:        1
    
    LatestRevision:     bloom-560m-predictor-00001
    LatestPrecent:      100
    
    Instances:
      NAME                                                   STATUS   AGE  READY  RESTARTS  GPU  NODE
      ----                                                   ------   ---  -----  --------  ---  ----
      bloom-560m-predictor-00001-deployment-ff4c49bf6-twrlp  Running  9m   2/2    0         1    cn-hongkong.192.1xx.x.xxx

    この出力により、推論サービスが正常にデプロイされたことが確認できます。モデルのアクセスアドレスは http://bloom-560m.default.example.com です。

  2. ASM イングレスゲートウェイの IP アドレスを取得します。詳細については、「ステップ 2:ASM イングレスゲートウェイの IP アドレスの取得」をご参照ください。

  3. ASM イングレスゲートウェイの IP アドレスを使用して、推論サービスにテストリクエストを送信します。

    # ${ASM_GATEWAY} は ASM イングレスゲートウェイの IP アドレスに置き換えてください。
    curl -H "Host: bloom-560m.default.example.com" http://${ASM_GATEWAY}:80/generate \
        -X POST \
        -d '{"inputs":"What is Deep Learning?","parameters":{"max_new_tokens":17}}' \
        -H 'Content-Type: application/json'

    期待される出力:

    {"generated_text":" Deep Learning is a new type of machine learning that is used to solve complex problems."}

ステップ 4:推論サービスの更新

カナリーデプロイを使用して、完全切り替え前に新しいモデルバージョンにトラフィックを徐々にシフトします。

  1. 新しいバージョンのモデルを作成し、PVC 内のモデルファイルを新しいパス bloom-560m-v2 にコピーします。

  2. 新しいバージョンをデプロイし、そのバージョンに 10% のトラフィックをルーティングします。

    arena serve update kserve \
        --name bloom-560m \
        --canary-traffic-percent=10 \
        "text-generation-launcher --disable-custom-kernels --model-id /mnt/models/bloom-560m-v2 --num-shard 1 -p 8080"
  3. 推論サービスのステータスを確認します。

    arena serve get bloom-560m

    期待される出力:

    Name:       bloom-560m
    Namespace:  default
    Type:       KServe
    Version:    00002
    Desired:    2
    Available:  2
    Age:        36m
    Address:    http://bloom-560m.default.example.com
    Port:       :80
    GPU:        2
    
    LatestRevision:     bloom-560m-predictor-00002
    LatestPrecent:      10
    PrevRevision:       bloom-560m-predictor-00001
    PrevPrecent:        90
    
    Instances:
      NAME                                                    STATUS   AGE  READY  RESTARTS  GPU  NODE
      ----                                                    ------   ---  -----  --------  ---  ----
      bloom-560m-predictor-00001-deployment-ff4c49bf6-twrlp   Running  36m  2/2    0         1    cn-hongkong.192.1xx.x.xxx
      bloom-560m-predictor-00002-deployment-5b7bb66cfb-nqprp  Running  6m   2/2    0         1    cn-hongkong.192.1xx.x.xxx

    この出力により、10% のトラフィックが bloom-560m-predictor-00002(新しいバージョン)に、90% が bloom-560m-predictor-00001(以前のバージョン)にそれぞれルーティングされていることが確認できます。

  4. 新しいバージョンのテストが完了したら、すべてのトラフィックを新しいバージョンにシフトします。

    arena serve update kserve \
        --name bloom-560m \
        --canary-traffic-percent=100

(オプション)ステップ 5:推論サービスの削除

推論サービスを削除して、すべての GPU および計算リソースを解放します。

arena serve delete bloom-560m