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

Container Service for Kubernetes:Serverless モードで KServe モデル推論サービスをデプロイする

最終更新日:Nov 09, 2025

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

前提条件

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

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

1. NAS ファイルシステムのマウントポイントの取得

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

  2. [ファイルシステムリスト] ページで、ターゲットファイルシステムの ID をクリックして詳細ページを開きます。[マウントポイント] をクリックします。image にカーソルを合わせると、NAS ファイルシステムのマウントポイントが表示されます。後で使用するために、マウントポイントとマウントコマンドを記録します。

2. ターゲットクラスター用の PV と PVC の設定

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

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

  3. [永続ボリューム] ページの右上隅にある [作成] をクリックします。

  4. [永続ボリュームの作成] ダイアログボックスで、パラメーターを設定し、[作成] をクリックして、training-data という名前の永続ボリューム (PV) を作成します。

    次の表に、主要なパラメーターを示します。必要に応じて他のパラメーターを設定できます。詳細については、「静的にプロビジョニングされた NAS ボリュームの使用」をご参照ください。

    パラメーター

    説明

    [PV タイプ]

    NAS

    [名前]

    training-data

    [マウントポイントドメイン名]

    ステップ 1 で取得したマウントポイントを選択します。

  5. 左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリューム要求] を選択します。[永続ボリューム要求] ページで、右上隅にある [作成] をクリックします。

  6. [永続ボリューム要求の作成] ダイアログボックスで、パラメーターを設定し、[作成] をクリックして、training-data という名前の永続ボリューム要求 (PVC) を作成します。

    次の表に、主要なパラメーターを示します。必要に応じて他のパラメーターを設定できます。詳細については、「静的にプロビジョニングされた NAS ボリュームの使用」をご参照ください。

    パラメーター

    説明

    [ストレージタイプ]

    NAS

    [名前]

    training-data

    [割り当てモード]

    [既存のボリューム] を選択します。

    [既存のボリューム]

    [既存のボリュームの選択] をクリックして、作成した PV を選択します。

3. NAS ファイルシステムへのデータのダウンロード

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

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

  3. [ノード] ページで、ターゲットノードの名前をクリックしてインスタンス詳細ページを開きます。[その他] > [Workbench リモート接続] をクリックし、次に [ログオン] をクリックしてリモート接続ページを開きます。

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

  5. BLOOM モデルとトレーニングデータをダウンロードします。

    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%)

    出力は、GPU を持つ 2 つのノードが推論サービスを実行するために利用可能であることを示しています。

  2. 次のコマンドを実行して、bloom-560m という名前の推論サービスを開始します。このコマンドは、pvc training-data をコンテナー内の /mnt/models ディレクトリにマウントします。これは、ステップ 1 でモデルがダウンロードされたパスです。

    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

    いいえ

    推論サービスの環境変数。この例では、モデルを保存するために使用される PVC は training-data に設定されています。

ステップ 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

    出力は、KServe 推論サービスがデプロイされたことを示しています。モデルのエンドポイントは http://bloom-560m.default.example.com です。

  2. ASM ゲートウェイのエンドポイントを取得します。詳細については、「ASM ゲートウェイのエンドポイントの取得」をご参照ください。

  3. 取得した ASM ゲートウェイのエンドポイントを使用して、次のコマンドを実行して推論サービスにアクセスします。

     # ${ASM_GATEWAY} を ASM ゲートウェイのエンドポイントに置き換えます。
    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. 次のコマンドを実行して、KServe 推論サービスでカナリアアップデートを実行します。新しいモデルパスを bloom-560m-v2 に設定します。これにより、トラフィックの 10% が新しいバージョンに、90% が古いバージョンに割り当てられます。

    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
  4. 新しいバージョンがテストに合格したら、次のコマンドを実行して canary-traffic-percent を 100 に設定します。これにより、すべてのトラフィックが新しいバージョンに転送されます。

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

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

推論サービスを削除するには、次のコマンドを実行します。

arena serve delete bloom-560m