为专用 GPU 上的自定义基础模型创建部署

安装并注册定制基础模型以与 watsonx.ai配合使用后,可以为该模型创建部署。

上载定制基础模型并向 watsonx.ai注册后,您可以部署该模型以使其可用于推断。 使用其中一种方法:

开始之前

在创建部署之前,请规划部署所需的硬件规格。 在大多数情况下,您可以选择预定义的硬件规范。 如果您正在部署量化模型或有其他需要自定义硬件规格的规格,请在开始部署流程前使用Python客户端watsonx.aiAPI创建硬件规格。 如果要部署使用自定义硬件规格的模型,必须以编程方式进行部署。 有关详细信息,请参阅 以编程方式创建部署

要获取更多信息,请参阅:

注:

如果使用的硬件规格没有足够的部署资源,则部署会失败,并显示以下信息:

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. 单击创建

注:
  • 如果使用 "watsonx-cfm-caikit-1.1软件规范来部署模型,则不会使用 "max_concurrent_requests参数的值。
  • 时间序列模型不需要任何参数。 部署自定义时间序列模型时,请勿提供任何参数。 如果您在部署自定义时间序列模型时提供参数,这些参数将不起作用。
  • 使用自定义推理运行时映像的模型会忽略在部署创建阶段设置的参数。 MLOps 工程师必须在创建运行时定义或模型注册时设置参数。 此外,可接受的参数列表可能与使用标准推理运行时间的模型所使用的参数列表不同。
  • 模型任务下:
    • 若未选择任何任务:
    • 如果模型未包含聊天模板,则默认任务为文本生成。
    • 如果模型包含聊天模板,则默认任务为:文本生成和文本聊天。
  • 在部署模型时选择的任务将覆盖模型创建阶段设置的任务。

以编程方式创建部署

要以编程方式创建部署,必须首先获取模型资产标识,然后创建部署。

列出可部署的自定义基础模型

运行以下代码以使用 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
}
注:

如果您以编程方式访问模型列表,那么可以访问可以为所选模型设置的所有参数。 对于通过用户界面部署的模型,参数可在在线部署创建阶段获取。 请参见自定义基础模型参数描述

创建基础模型资产

您可以在两个上下文中创建模型资产: 项目上下文和空间上下文。

  • 如果在项目上下文中创建模型资产,就可以将模型导入项目,然后在 Jupyter 笔记本中评估模型,最后将其推广到空间。
  • 如果在空间上下文中创建了模型资产,则可以导入模型,然后在线部署。 已部署的模型可从 Prompt Lab 获取。

要在空间上下文中为自定义基础模型创建模型资产,请运行此代码:

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>"
            },
            "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>"
            },
            "type": "custom foundation model 1.0",
            "software_spec": {
            "name": "<software specification>"
            }
        }'
注:
  • 模型类型必须为 custom_foundation_model_1.0
  • 软件规格名称必须为 watsonx-cfm-caikit-1.1、或 watsonx-tsfm-runtime-1.0
  • 您不能自定义软件规格。

创建联机部署

本示例代码显示了一个重载了部分参数的部署示例。

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 个字符。
  • 在定期使用自定义基础模型的工作流中,考虑在每次部署时为模型分配相同的服务名称。 这样,在删除并重新部署模型后,就可以在代码中继续使用相同的端点。
  • 时间序列模型不需要任何参数。 部署自定义时间序列模型时,请勿提供任何参数。 如果您在部署自定义时间序列模型时提供参数,这些参数将不起作用。
    • 若未选择任何功能:
    • 如果模型未包含聊天模板,则默认任务为文本生成。
    • 如果模型包含聊天模板,则默认功能为:文本生成和文本聊天。
  • 在部署模型时选择的功能将覆盖管理员在模型创建阶段设置的功能。
  • :如果模型支持嵌入或重新排序功能(您可以通过查看模型卡片进行验证),可以在 数组 functions 中指定 embeddingrerank 或 ,以启用该功能。

查看部署状态

要获取现有部署的状态,请使用此命令:

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"
注:

该值 deployed_asset_type 被返回为 custom_foundation_model

后续步骤

推理部署自定义基础模型