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

Container Compute Service:KServe を使用した推論サービスのクイックデプロイ

最終更新日:Jan 20, 2026

上で KServe を使用して、AI モデルをサーバーレスの推論サービスとしてデプロイできます。これにより、オートスケーリング、マルチバージョン管理、カナリアリリースなどの主要な機能が提供されます。

前提条件

KServe コンポーネントをデプロイする必要があります。詳細については、「KServe コンポーネントのデプロイ」をご参照ください。

ステップ1:InferenceService のデプロイ

まず、予測機能を備えた InferenceService をデプロイします。このサービスは、Iris データセットでトレーニングされた scikit-learn モデルを使用します。データセットには、Iris Setosa (インデックス:0)、Iris Versicolour (インデックス:1)、Iris Virginica (インデックス:2) の 3 つの出力クラスがあります。その後、デプロイされたモデルに推論リクエストを送信して、対応するアヤメのクラスを予測できます。

説明

Iris データセットは、3 種類のアヤメの花それぞれについて 50 のデータポイントで構成されています。各サンプルには、がく片と花びらの長さと幅という 4 つの特徴量が含まれています。

  1. 次のコマンドを実行して、sklearn-iris という名前の InferenceService を作成します。

    kubectl apply -f - <<EOF
    apiVersion: "serving.kserve.io/v1beta1"
    kind: "InferenceService"
    metadata:
      name: "sklearn-iris"
    spec:
      predictor:
        model:
          modelFormat:
            name: sklearn
          storageUri: "gs://kfserving-examples/models/sklearn/1.0/model"
    EOF
  2. 次のコマンドを実行して、サービスステータスを確認します。

    kubectl get inferenceservices sklearn-iris

    想定される出力:

    NAME           URL                                                         READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION                    AGE
    sklearn-iris   http://sklearn-iris-predictor-default.default.example.com   True           100                              sklearn-iris-predictor-default-00001   51s

ステップ2:サービスへのアクセス

IP アドレスとアクセス方法は、サービスゲートウェイによって異なります。ご利用のゲートウェイに適した方法を選択してください。

ALB

  1. 次のコマンドを実行して、Application Load Balancer (ALB) エンドポイントを取得します。

    kubectl get albconfig knative-internet                         

    想定される出力:

    NAME               ALBID                    DNSNAME                                              PORT&PROTOCOL   CERTID   AGE
    knative-internet   alb-hvd8nngl0l*******   alb-hvd8nngl0l******.cn-<region>.alb.aliyuncs.com                               2
  2. 次のコマンドを実行して、次の JSON コンテンツを ./iris-input.json ファイルに書き込み、推論リクエストの入力を準備します。

    cat <<EOF > "./iris-input.json"
    {
      "instances": [
        [6.8,  2.8,  4.8,  1.4],
        [6.0,  3.4,  4.5,  1.6]
      ]
    }
    EOF
  3. 次のコマンドを実行して、サービスにアクセスします。

    INGRESS_DOMAIN=$(kubectl get albconfig knative-internet -o jsonpath='{.status.loadBalancer.dnsname}')
    SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -o jsonpath='{.status.url}' | cut -d "/" -f 3)
    curl -v -H "Host: ${SERVICE_HOSTNAME}" "http://${INGRESS_DOMAIN}/v1/models/sklearn-iris:predict" -d @./iris-input.json

    想定される出力:

    *   Trying 120.77.XX.XX...
    * TCP_NODELAY set
    * Connected to alb-hvd8nngl0l******.cn-<region>.alb.aliyuncs.com (120.77.XX.XX) port 80 (#0)
    > POST /v1/models/sklearn-iris:predict HTTP/1.1
    > Host: sklearn-iris-predictor-default.default.example.com
    > User-Agent: curl/7.58.0
    > Accept: */*
    > Content-Length: 76
    > Content-Type: application/x-www-form-urlencoded
    > 
    * upload completely sent off: 76 out of 76 bytes
    < HTTP/1.1 200 OK
    < Date: Thu, 13 Jul 2023 01:48:44 GMT
    < Content-Type: application/json
    < Content-Length: 21
    < Connection: keep-alive
    < 
    * Connection #0 to host alb-hvd8nngl0l******.cn-<region>.alb.aliyuncs.com left intact
    {"predictions":[1,1]}

    出力は {"predictions":[1,1]} です。これは、推論のために送信された 2 つのデータポイントについて、モデルが両方の花を Iris Versicolour (インデックス 1) であると予測したことを示します。

Kourier

  1. 次のコマンドを実行して、Kourier サービスのエンドポイントを取得します。

    kubectl -n knative-serving get svc kourier

    想定される出力:

    NAME      TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)                      AGE
    kourier   LoadBalancer   192.168.XX.XX   121.40.XX.XX  80:31158/TCP,443:32491/TCP   49m

    サービスのアクセス IP アドレスは 121.40.XX.XX で、ポートは 80 (HTTP) と 443 (HTTPS) です。

  2. 次のコマンドを実行して、次の JSON コンテンツを ./iris-input.json ファイルに書き込み、推論リクエストの入力を準備します。

    cat <<EOF > "./iris-input.json"
    {
      "instances": [
        [6.8,  2.8,  4.8,  1.4],
        [6.0,  3.4,  4.5,  1.6]
      ]
    }
    EOF
  3. 次のコマンドを実行して、サービスにアクセスします。

    INGRESS_HOST=$(kubectl -n knative-serving get service kourier -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -o jsonpath='{.status.url}' | cut -d "/" -f 3)
    curl -v -H "Host: ${SERVICE_HOSTNAME}" "http://${INGRESS_HOST}/v1/models/sklearn-iris:predict" -d @./iris-input.json

    想定される出力:

    *   Trying 121.40.XX.XX...
    * TCP_NODELAY set
    * Connected to 121.40.XX.XX (121.40.XX.XX) port 80 (#0)
    > POST /v1/models/sklearn-iris:predict HTTP/1.1
    > Host: sklearn-iris-predictor-default.default.example.com
    > User-Agent: curl/7.58.0
    > Accept: */*
    > Content-Length: 76
    > Content-Type: application/x-www-form-urlencoded
    > 
    * upload completely sent off: 76 out of 76 bytes
    < HTTP/1.1 200 OK
    < content-length: 21
    < content-type: application/json
    < date: Wed, 12 Jul 2023 08:23:13 GMT
    < server: envoy
    < x-envoy-upstream-service-time: 4
    < 
    * Connection #0 to host 121.40.XX.XX left intact
    {"predictions":[1,1]}

    出力は {"predictions":[1,1]} です。これは、推論のために送信された 2 つのデータポイントについて、モデルが両方の花を Iris Versicolour (インデックス 1) であると予測したことを示します。