専用GPU上でカスタム基盤モデルのデプロイメントを作成する

カスタム・基盤モデルがインストールされ、 watsonx.aiで使用するために登録された後、モデルのデプロイメントを作成できます。

カスタム・基盤モデルがアップロードされ、 watsonx.aiに登録されたら、そのモデルをデプロイして推論に使用できるようにすることができます。 以下のいずれかの方法を使用してください:

始める前に

デプロイメントを作成する前に、そのデプロイメントに必要なハードウェア仕様を計画してください。 ほとんどの場合、事前定義されたハードウェア仕様を選択できます。 量子化モデルをデプロイする場合、またはカスタム ハードウェア仕様を必要とするその他の仕様がある場合は、デプロイ プロセスを開始する前に、Python クライアントまたは watsonx.ai API を使用してハードウェア仕様を作成してください。 カスタム・ハードウェア仕様を使用するモデルをデプロイしたい場合は、プログラムによってデプロイする必要があります。 詳細は、プログラムで配置を作成するを参照してください。

詳しくは、以下を参照してください。

注。

デプロイメント用のリソースが不足しているハードウェア仕様を使用すると、デプロイメントは失敗し、以下のメッセージが表示されます。

Failed to deploy the custom foundation model due to an internal error. The runtime failed to start due to 'insufficient resources'. Retry the operation. Contact IBM support if the problem persists.

また、利用可能なソフトウェアの仕様が、ご使用のモデルアーキテクチャと適合しているか確認してください。 詳細については、 「カスタム基盤モデルのデプロイ要件」 を参照してください。

スペースからのデプロイメントの作成

スペースからカスタム・基盤モデルのデプロイメントを作成するには、まずモデル資産をスペースに追加します。 次に、デプロイを作成します。

スペースへのモデル資産のインポート

カスタム・基盤モデル資産をデプロイメント・スペースにインポートするには、以下のようにします。

  1. デプロイメント・スペースから 「アセット」 タブを選択し、 「アセットのインポート」をクリックします。

  2. 「資産のインポート」 カタログで、 「カスタム基盤モデル」 をクリックし、インポートするモデルを選択します。

    カスタム・基盤モデル資産のインポート

  3. モデルの詳細を入力し、 「追加」 をクリックしてください。

    注: カスタム・基盤モデル資産がプロジェクトに保存されている場合、モデル資産をインポートする代わりに、そのモデルをプロジェクトからスペースにプロモートできます。

デプロイメント・スペースからのカスタム・基盤モデルのデプロイ

デプロイメント・スペースからカスタム・基盤モデルのオンライン・デプロイメントを作成するには、以下の手順を実行します。

  1. 「デプロイメントの詳細」ページで、 「新規デプロイメント」をクリックします。

  2. デプロイメントの名前を入力し、オプションでサービス名、説明、およびタグを入力します。

    注。
    • サービング名 」フィールドを使用して、デプロイメント ID の代わりにデプロイメントの名前を指定します。
    • サービス名は、名前空間内で一意である必要があります。
    • サーバー名には、[ a-z,0-9,_] の文字のみを含める必要があり、最大36文字までです。
    • カスタム基盤モデルを定期的に使用するワークフローでは、デプロイするたびにモデルに同じサービング名を割り当てることを検討してください。 こうすることで、モデルを削除して再デプロイした後も、コード内で同じエンドポイントを使い続けることができます。

  3. ハードウェア仕様とソフトウェア仕様を選択してください。

    制約事項:

    デプロイメント・スペースのユーザー・インターフェースからカスタム・ハードウェア仕様を作成することはできません。 ハードウェア仕様を作成および選択する方法について詳しくは、 デプロイメントのためのハードウェア仕様の管理を参照してください。 カスタム・ハードウェア仕様を作成した後、それをプログラマチックに選択するか、カスタム・基盤モデルのユーザー・インターフェースから選択することができます。

  4. (任意): 基本モデルのパラメータの一部を上書きしたい場合は、新しいパラメータ値を入力してください。 利用可能なモデルパラメータの詳細については、 「カスタム基礎モデルのプロパティとパラメータ」 を参照してください。

  5. 「Create」をクリックします。

注。
  • watsonx-cfm-caikit-1.1 ソフトウェア仕様を使用してモデルをデプロイする場合、パラメータの値は max_concurrent_requests 使用されません。
  • 時系列モデルにはパラメータは一切含まれません。 カスタム時系列モデルをデプロイする際は、パラメータを指定しないでください。 カスタム時系列モデルをデプロイする際にパラメータを指定しても、それらは反映されません。
  • カスタム推論ランタイムイメージを使用するモデルでは、デプロイ作成時に設定されたパラメータは無視されます。 MLOpsエンジニアは、ランタイム定義の作成時、またはモデルの登録時にパラメータを設定する必要があります。 また、許可されているパラメータの一覧は、標準的な推論ランタイムを使用するモデルで用いられるパラメータの一覧とは異なる場合があります。
  • 「モデル」タスクの下:
    • タスクを何も選択しない場合:
    • モデルにチャットテンプレートが含まれていない場合、デフォルトのタスクはテキスト生成となります。
    • モデルにチャットテンプレートが含まれている場合、デフォルトのタスクは「テキスト生成」と「テキストチャット」です。
  • モデルをデプロイする際に選択したタスクは、モデル作成時に設定したタスクよりも優先されます。

プログラムによるデプロイメントの作成

プログラムでデプロイメントを作成するには、まずモデル資産 ID を取得してから、デプロイメントを作成する必要があります。

デプロイ可能なカスタム・基盤モデルのリスト

以下のコードを実行し、 watsonx APIを使用して、使用可能なカスタム・基盤モデルのリストを表示します。

curl --location 'https://<cluster_url>/ml/v4/custom_foundation_models' \
--header 'Authorization: Bearer $TOKEN'

出力例:

{
    "first": {
        "href": "/ml/v4/custom_foundation_models?limit=100"
    },
    "limit": 100,
    "resources": [
        {
            "model_id": "example_model_13b",
            "parameters": [
               {
                    "default": 16,
                    "display_name": "Max Number of Sequences",
                    "max": 256,
                    "min": 1,
                    "name": "max_num_seqs",
                    "type": "number"
                },
                {
                    "default": 2048,
                    "display_name": "Max Model Length",
                    "max": 8192,
                    "min": 256,
                    "name": "max_model_length",
                    "type": "number"
                }
            ]
        },
        {
            "model_id": "example_model_70b",
            "parameters": [
                {
                    "default": 16,
                    "display_name": "Max Number of Sequences",
                    "max": 256,
                    "min": 1,
                    "name": "max_num_seqs",
                    "type": "number"
                },
                {
                    "default": 2048,
                    "display_name": "Max Model Length",
                    "max": 8192,
                    "min": 256,
                    "name": "max_model_length",
                    "type": "number"
                }
            ],
            "tags": [
                "example_model",
                "70b"
            ]
        }
    ],
    "total_count": 2
}
注。

プログラムでモデル・リストにアクセスすると、選択したモデルに設定できるすべてのパラメーターにアクセスできます。 UI を通じてデプロイされるモデルについては、オンラインデプロイの作成段階でパラメータを利用できます。 カスタム基礎モデルのパラメータについては、「パラメータの説明」を参照してください。

基盤モデル資産の作成

モデル資産は、プロジェクト・コンテキストとスペース・コンテキストの 2 つのコンテキストで作成できます。

  • プロジェクト・コンテキストでモデル資産を作成する場合、そのモデルをプロジェクトにインポートし、Jupyter ノートブックでそのモデルを評価し、最後にそれをスペースにプロモートすることができます。
  • スペース・コンテキストでモデル資産を作成する場合、そのモデルをインポートしてからオンラインでデプロイすることができます。 デプロイされたモデルには、Prompt Labからアクセスできます。

スペース・コンテキストでカスタム・基盤モデルのモデル資産を作成するには、以下のコードを実行します。

注。

この functions 項目は任意です。 これは、モデルがやり取りできるすべてのモードを定義します。

curl -X POST "https://<cluster_url>/ml/v4/models?version=2024-01-29" \
-H "Authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
--data '{
            "name": "<a meaningful name>",
            "space_id": "<your space id>",
            "foundation_model": {
            "model_id": "<your model id>",
            "functions": ["text_generation", "text_chat", "image_chat", "audio_chat", "video_chat"],
            },
            "type": "custom foundation model 1.0",
            "software_spec": {
            "name": "<software specification>"
            }
        }'

プロジェクト・コンテキストでカスタム・基盤モデルのモデル資産を作成するには、以下のコードを使用します。

curl -X POST "https://<cluster_url>/ml/v4/models?version=2024-01-29" \
-H "Authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
--data '{
            "name": "<a meaningful name>",
            "project_id": "<your project id>",
            "foundation_model": {
            "model_id": "<your model id>",
            "functions": ["text_generation", "text_chat", "image_chat", "audio_chat", "video_chat"],
            },
            "type": "custom foundation model 1.0",
            "software_spec": {
            "name": "<software specification>"
            }
        }'
注。
  • モデル・タイプは custom_foundation_model_1.0でなければなりません。
  • watsonx-tsfm-runtime-1.0watsonx-cfm-caikit-1.1ソフトウェア仕様の名称は、、またはのいずれかでなければなりません。
  • ソフトウェアの仕様はカスタマイズできません。

オンライン・デプロイメントの作成

このサンプル・コードは、いくつかのパラメーターがオーバーライドされたサンプル・デプロイメントを示しています。

curl -X POST "https://<cluster_url>/ml/v4/deployments?version=2024-01-29" \
-H "Authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
--data '{
  "asset":{
    "id":<your custom foundation model id>
  },
  "online":{
    "parameters":{
      "serving_name":"test_custom_fm",
      "foundation_model": {
            "max_model_length": 2048,
            "max_num_seqs": 16,
            "functions": [
            "text_generation",
            "text_chat",
            "image_chat",
            "embedding",
            "rerank"
        ],
      }
    }
  },
  "hardware_spec": {                        // Only one, of "id" or "name" must be set.
    "id": "<your custom hardware spec id>",
    "num_nodes": 1
  },
  "description": "Testing deployment using custom foundation model",
  "name":"custom_fm_deployment",
  "project_id":<your project id>
}'
注。
  • ソフトウェア仕様 watsonx-cfm-caikit-1.1 を使用してモデルをデプロイする場合、この max_concurrent_requests パラメータは使用されません。
  • [ serving_name フィールド] を使用して、デプロイメント ID の代わりにデプロイメントの名前を指定します。
  • サービス名は、名前空間内で一意である必要があります。
  • サーバー名には、[ a-z,0-9,_] の文字のみを含める必要があり、最大36文字までです。
  • カスタム基盤モデルを定期的に使用するワークフローでは、デプロイするたびにモデルに同じサービング名を割り当てることを検討してください。 こうすることで、モデルを削除して再デプロイした後も、コード内で同じエンドポイントを使い続けることができます。
  • 時系列モデルにはパラメータは一切含まれません。 カスタム時系列モデルをデプロイする際は、パラメータを指定しないでください。 カスタム時系列モデルをデプロイする際にパラメータを指定しても、それらは反映されません。
    • 機能を選択しない場合:
    • モデルにチャットテンプレートが含まれていない場合、デフォルトのタスクはテキスト生成となります。
    • モデルにチャットテンプレートが含まれている場合、デフォルトの関数は text_generation と text_chat です。
  • モデルをデプロイする際に選択した関数は、モデル作成時に管理者が設定した関数を上書きします。
  • モデルが埋め込み機能または再ランク付け機能をサポートしている場合(モデルカードで確認できます)、配列 functions 内で または rerank を指定 embedding することで、その機能を有効にできます。

デプロイメントのステータスを確認する

既存のデプロイメントの状態を確認するには、次のコマンドを使用してください:

curl -X GET "https://<cluster_url>/ml/v4/deployments/<your deployment ID>?version=2024-01-29&project_id=<your project ID>" \
-H "Authorization: Bearer $TOKEN"
注。

custom_foundation_modeldeployed_asset_type として返されます。

次のステップ

デプロイ済みのカスタム基盤モデルの推論