HTTPとモデルおよび拡張オプションを使用したインストール

このチュートリアルは、'HTTPと構成ファイル'チュートリアルの上位版で、コンテナに同梱されていないベクトル埋込みモデルを定義できます。より高度な構成の場合は、必要に応じてHTTPポート、コンテナ・バージョンまたはコンテナ名を指定することも可能です。

APIキーおよびSSLは、このチュートリアルでは構成も使用もされません。

デフォルトの構成がHTTPポート8080で使用されます。

ONNXパイプライン・モデルの選択

使用可能な埋込みモデルは多数あります。コンテナに同梱されているモデルとあわせて、コンテナと連携して動作することが確認されている埋込みモデルのより詳細なリストについては、「使用可能な埋込みモデル」を参照してください。

目的のONNXパイプライン・モデルを選択し、Oracle Machine Learning Client 2.1を使用して構築したら(事前構築済オプション以外のモデルを選択した場合)、そのONNXファイルをコンテナが実行されるホスト・マシン上のディレクトリにコピーする必要があります。

また、コンテナで使用する目的のONNXパイプライン・モデルをリストしたJSON構成ファイルも必要です。

このチュートリアルでは、ONNXモデルと構成ファイルはいずれも、それぞれのディレクトリにコピーされ、最小権限を持つコンテナ・ユーザーとして実行されます。

  1. JSON構成ファイルを設定します。

    この例では、目的のONNXパイプライン・モデルは/home/opc/modelsにあり、構成ファイルは/home/opc/config/config.jsonです。サンプル・ファイルconfig.jsonの内容は次のとおりです:

    {
        "environment":{
           "PRIVATE_AI_LOG_LEVEL":"INFO"
        },
        "ratelimiter": {
           "service_requests_per_min": 3000,
           "monitor_requests_per_min": 60
      },
        "models": [
            {
                "modelname":"tinybert",
                "modelfile":"tinybert.onnx",
                "modelfunction":"EMBEDDING",
                "cache_on_startup":true
            },
            {
                "modelname":"snowflake-arctic-embed-s",
                "modelfile":"snowflake-arctic-embed-s.onnx",
                "modelfunction":"EMBEDDING",
                "cache_on_startup":true
            },
            {
                "modelname":"all-MiniLM-L12-v2",
                "modelfile":"all-MiniLM-L12-v2.onnx",
                "modelfunction":"EMBEDDING",
                "cache_on_startup":true
            }
        ]
    }

    この構成ファイルでは、2つの新しいONNXパイプライン埋込みモデルのmodelfile (ファイル名)およびmodelnameが定義されています。modelnameはONNXファイル名と関連付ける必要はありませんが、埋込みモデルが多数ある場合は、同じ名前にしておくと管理しやすくなります。modelnameは識別子であり、.onnx.zipなどのファイル拡張子を持つことはできません。

    コンテナに同梱されている既存のモデルも定義されます。config.jsonファイルを使用しない場合は、コンテナに同梱されているすべてのモデルがロードされます。config.jsonファイルを使用する場合は、ファイルに明示的に定義されているモデルのみがロードされます。各モデルをメモリーにロードする必要があるため、明示的に定義されるモデルの数を最小限に抑えることで、コンテナに必要なメモリーを削減できます。

  2. 構成ファイルに指定されている3つのモデルを使用してコンテナを構成し、起動します。
    mkdir /home/opc/privateai
    mkdir /home/opc/models
    mkdir /home/opc/config
    export PRIVATE_DIR=/home/opc/privateai
    ./configSetup.sh -d $PRIVATE_DIR -m /home/opc/models -c /home/opc/config/config.json
    ./containerSetup.sh -d $PRIVATE_DIR --http
    podman ps

    コンテナの起動にかかる時間は、modelsディレクトリにあるONNXパイプライン・モデルの数とサイズによって決まります。ONNXファイルが多数ある場合は、数分かかることがあります。

  3. 必要に応じて、コンテナ・バージョンを指定します。

    複数のバージョンのコンテナが使用可能である場合、デフォルトでは最新バージョンが実行されます。古いバージョンを実行する場合は、目的のバージョン(25.1.2.0.0など)を指定できます。

    export PRIVATE_DIR=/home/opc/privateai
    ./configSetup.sh -d $PRIVATE_DIR -m /home/opc/models -c /home/opc/config/config.json 
    ./containerSetup.sh -d $PRIVATE_DIR --http -v 25.1.2.0.0
  4. 必要に応じて、コンテナ・インスタンスに名前を付けます。

    コンテナを停止するには、コンテナIDまたはコンテナ名を使用します。たとえば、podman stop privateaiです。

    コンテナ・インスタンスに特定の名前を付ける場合は、-nパラメータを使用します。この例では、container5が使用されています:

    export PRIVATE_DIR=/home/opc/privateai
    ./configSetup.sh -d $PRIVATE_DIR -m /home/opc/models -c /home/opc/config/config.json 
    ./containerSetup.sh -d $PRIVATE_DIR --http -n container5
  5. 複数のパラメータを指定するには、これまでのステップを組み合せます。

    まず、コンテナの実行を停止します:

    podman stop container5

    このステップのコマンドは、ポート、コンテナ・バージョンおよびコンテナ名を指定します:

    export PRIVATE_DIR=/home/opc/privateai
    ./configSetup.sh -d $PRIVATE_DIR -m /home/opc/models -c /home/opc/config/config.json 
    ./containerSetup.sh -d $PRIVATE_DIR --http -p 9000 -v 25.1.2.0.0  -n container5
  6. ベクトルの作成と、/health/modelsおよび/metricsのチェックを実行するcurlコマンドは、HTTPと構成ファイルを使用するインストールの場合と同じです。

    違いは、/modelsエンドポイントで構成した4つの新しいモデルがここでは表示される点です。

    ノート:

    HTTPポート8080ではなく9000が使用されますが、これは、コンテナがそのように構成されているためです。
    curl http://localhost:9000/v1/models
  7. 埋込みモデルを指定します。

    この例では、snowflake-arctic-embed-s埋込みモデルで2つの入力文字列をベクトル化します。

    curl -X POST -H "Content-Type: application/json" -d '{"model": "snowflake-arctic-embed-s", "input":["A siamese cat","Standard Poodle running"]}' http://localhost:9000/v1/embeddings

    この例では、tinybert埋込みモデルで単一の入力文字列をベクトル化します。

    curl -X POST -H "Content-Type: application/json" -d '{"model": "tinybert", "input":["Standard Poodle running"]}' http://localhost:9000/v1/embeddings