1.11. AI モデルのクエリーについて


API を介してモデルをクエリーすることは、モデル推論とも呼ばれます。モデル推論は、情報の取得、タスクの自動化、予測の作成、データの洞察の提供、アクションの実行に最もよく使用されます。

一般に、クエリーは、使用されている AI モデルと互換性のある形式を使用して構築する必要があります。モデルサービングランタイムは、クエリーを自動的にフォーマットします。モデルは、基礎となるトレーニングとデータに従ってクエリーを処理し、出力を提供します。出力は、回答を提供すること、予測を行うこと、またはタスクを実行することなど、モデル自体の目的と一致することが期待されます。

次の例では、モデルが推論の準備ができていることを確認するための一般的な手順と、サービスランタイムからのクエリー出力に何が期待できるかを説明します。

1.11.1. AI モデルがアクセス可能であることを確認する

API を介してモデルをクエリーする前に、モデルがアクセス可能であり、接続されたデータに基づいて回答を提供する準備ができていることを確認できます。次の例は、OpenVINO Model Server を引き続き使用します。

前提条件

  • AI モデルサービングランタイムを設定している。
  • AI モデルを MicroShift にアップロードしている。
  • MicroShift が実行されています。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. MicroShift ノードの IP アドレスを取得し、それを IP 変数に割り当てます。以下に例を示します。

    $ IP=$(oc get nodes -o json | jq -r '.items[0].status.addresses[0].address')
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、作成したルートの名前を特定します。

    $ oc get route -n ai-test <route_name> -o yaml 
    1
    Copy to Clipboard Toggle word wrap
    1
    <route_name> は、実際のルートの名前に置き換えます。
  3. 次のコマンドを実行して、ルートの HOST 値を抽出し、DOMAIN 変数に割り当てます。

    DOMAIN=$(oc get route -n ai-test <route_name> -o=jsonpath="{ .status.ingress[0].host }") 
    1
    Copy to Clipboard Toggle word wrap
    1
    <route_name> は、実際のルートの名前に置き換えます。
  4. 次のコマンドを実行して、ルートから MicroShift IP アドレスへのデータ転送を有効にします。

    $ curl -i "${DOMAIN}/v2/models/ovms-resnet50/ready" --connect-to "${DOMAIN}::${IP}:" 
    1
    Copy to Clipboard Toggle word wrap
    1
    --connect-to "${DOMAIN}::${IP}:" フラグを使用する代わりに、実際の DNS を使用することも、IP アドレスとドメインを /etc/hosts ファイルに追加することもできます。

    出力例

    HTTP/1.1 200 OK
    content-type: application/json
    date: Wed, 12 Mar 2025 16:01:32 GMT
    content-length: 0
    set-cookie: 56bb4b6df4f80f0b59f56aa0a5a91c1a=4af1408b4a1c40925456f73033d4a7d1; path=/; HttpOnly
    Copy to Clipboard Toggle word wrap

  5. 次のコマンドを実行して、モデルのメタデータをクエリーします。

    $ curl "${DOMAIN}/v2/models/ovms-resnet50" --connect-to "${DOMAIN}::${IP}:"
    Copy to Clipboard Toggle word wrap

    出力例

    {"name":"ovms-resnet50","versions":["1"],"platform":"OpenVINO","inputs":[{"name":"0","datatype":"FP32","shape":[1,224,224,3]}],"outputs":[{"name":"1463","datatype":"FP32","shape":[1,1000]}]
    Copy to Clipboard Toggle word wrap

次のステップ

  • モデルが推論の準備ができていることを確認します。
  • モデルをクエリーします。
  • モデルの応答を検証します。
  • オプション: モデルサーバーのメトリクスを取得します。

1.11.2. AI モデルを推論用に準備する

API を介して AI モデルをクエリーする前に、トレーニングデータに基づいて回答を提供できるようにモデルを準備します。次の例は、OVMS モデルを引き続き使用します。

前提条件

  • MicroShift が実行されています。
  • vim-common パッケージの一部である xxd ユーティリティーがある。
  • モデルサービングランタイムを設定している。
  • AI モデルを MicroShift にアップロードしている。

手順

  1. 次のコマンドを実行して、OpenVINO Model Server の例からハチのイメージをダウンロードします。

    $ curl -O https://raw.githubusercontent.com/openvinotoolkit/model_server/main/demos/common/static/images/bee.jpeg
    Copy to Clipboard Toggle word wrap
  2. 次のスクリプトを実行して、リクエストデータを作成します。

    IMAGE=./bee.jpeg
    REQ=./request.json
    
    # Add an inference header
    echo -n '{"inputs" : [{"name": "0", "shape": [1], "datatype": "BYTES"}]}' > "${REQ}"
    # Get the size of the inference header 
    1
    
    HEADER_LEN="$(stat -c %s "${REQ}")"
    # Add size of the data (image) in binary format (4 bytes, little endian) 
    2
    
    printf "%08X" $(stat --format=%s "${IMAGE}") | sed 's/\(..\)/\1\n/g' | tac | tr -d '\n' | xxd -r -p >> "${REQ}"
    # Add the data, that is, append the image to the request file
    cat "${IMAGE}" >> "${REQ}"
    Copy to Clipboard Toggle word wrap
    1
    推論ヘッダーサイズは、後で HTTP ヘッダーの形式で OpenVINO Model Server に渡す必要があります。
    2
    OpenVINO Model Server は、リトルエンディアンのバイト順で 4 バイト必要です。

1.11.3. AI モデルのクエリー

ovms-resnet50 モデルを使用している AI モデルサーバーに対して推論リクエストを行います。

前提条件

  • MicroShift が実行されています。
  • モデルサービングランタイムを設定している。
  • AI モデルを MicroShift にアップロードしている。

手順

  • 次のコマンドを実行して、ovms-resnet50 モデルを使用しているモデルサーバーに対して推論リクエストを行います。

    $ curl \
        --data-binary "@./request.json" \
        --header "Inference-Header-Content-Length: ${HEADER_LEN}" \
        "${DOMAIN}/v2/models/ovms-resnet50/infer" \
        --connect-to "${DOMAIN}::${IP}:" > response.json
    Copy to Clipboard Toggle word wrap

    response.json に保存された推論出力の例

    {
        "model_name": "ovms-resnet50",
        "model_version": "1",
        "outputs": [{
                "name": "1463",
                "shape": [1, 1000],
                "datatype": "FP32",
                "data": [ ....... ] 
    1
    
            }]
    }
    Copy to Clipboard Toggle word wrap

    1
    簡潔にするために、.outputs[0].data の内容は例では省略されています。

検証

  1. モデルの予測を決定するには、次の Python スクリプトを使用して、.outputs[0].data 内の最高要素のインデックスを取得し、モデルの予測値を決定します。

    import json
    with open('response.json') as f:
        response = json.load(f)
    data = response["outputs"][0]["data"]
    argmax = data.index(max(data))
    print(argmax)
    Copy to Clipboard Toggle word wrap

    出力例

    309 
    1
    Copy to Clipboard Toggle word wrap

    1
    この例では、309 というラベルの付いた要素がモデルの応答です。
  2. 出力を resnet 入力データ に対して検証します。以下に例を示します。

    ../../../../demos/common/static/images/bee.jpeg 309
    Copy to Clipboard Toggle word wrap

次のステップ

  • オプション: resnet 入力データで利用可能な他のイメージを使用して AI モデルをクエリーします。

1.11.4. モデルサーバーのメトリクスを取得する

クエリーを実行した後、モデルサーバーのメトリクスを取得して、ボトルネックの特定、リソース割り当ての最適化、そして効率的なインフラ利用の確保を行うことができます。

注記

または、MicroShift の Open Telemetry を設定して、モデルサーバーのメトリクスを取得することもできます。詳細は、「InferenceService カスタムリソースへの Open Telemetry の追加」を参照してください。

前提条件

  • MicroShift が実行されています。
  • 表示したいメトリクスデータを提供するのに十分なクエリーが行われました。

手順

  • 次のコマンドを実行して、/metrics エンドポイントにリクエストを送信し、モデルサーバーの Prometheus 形式のメトリクスを取得します。

    $ curl "${DOMAIN}/metrics" --connect-to "${DOMAIN}::${IP}:"
    Copy to Clipboard Toggle word wrap

    部分的な出力例

    # HELP ovms_requests_success Number of successful requests to a model or a DAG.
    # TYPE ovms_requests_success counter
    ovms_requests_success{api="KServe",interface="REST",method="ModelReady",name="ovms-resnet50"} 4
    ovms_requests_success{api="KServe",interface="REST",method="ModelMetadata",name="ovms-resnet50",version="1"} 1
    Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat