Link Search Menu Expand Document Documentation Menu

创建或更新控制器

2.12 版本引入

使用此 API 为模型创建或更新控制器。一个模型可以由多个用户共享。控制器为用户对模型发出的 预测 API 调用数量设置速率限制。控制器由一组针对不同用户的速率限制器组成。

只有在注册模型并收到模型 ID 后,才能为模型创建控制器。

POST 方法创建新控制器。PUT 方法更新现有控制器。

要了解如何为所有用户在模型级别设置速率限制,请参阅更新模型 API。速率限制将设置为模型级别限制或用户级别限制中更严格的一个。例如,如果模型级别限制为每分钟 2 个请求,用户级别限制为每分钟 4 个请求,则总限制将设置为每分钟 2 个请求。

端点

POST /_plugins/_ml/controllers/<model_id>
PUT /_plugins/_ml/controllers/<model_id>

路径参数

下表列出了可用的路径参数。

参数 数据类型 描述
model_id 字符串 您要设置速率限制的模型的模型 ID。必填项。

请求正文字段

下表列出了可用的请求字段。

字段 数据类型 必需/可选 描述
user_rate_limiter 对象 必需 限制用户对模型调用预测 API 的次数。有关更多信息,请参阅推理调用速率限制

user_rate_limiter 对象包含一个针对每个用户(由用户名指定)的对象。用户对象包含以下字段:

字段 数据类型 描述
limit 整数 在每个 unit 时间内,用户可以对模型调用预测 API 的最大次数。默认情况下,对预测 API 调用次数没有限制。一旦设置了限制,就无法将其重置为无限制。作为替代,您可以指定一个较高的限制值和较小的时间单位,例如,每纳秒 1 个请求。
unit 字符串 速率限制器的时间单位。有效值为 DAYS(天)、HOURS(小时)、MICROSECONDS(微秒)、MILLISECONDS(毫秒)、MINUTES(分钟)、NANOSECONDS(纳秒)和 SECONDS(秒)。

示例请求:创建控制器

POST _plugins/_ml/controllers/mtw-ZI0B_1JGmyB068C0
{
  "user_rate_limiter": {
    "user1": {
      "limit": 4,
      "unit": "MINUTES"
    },
    "user2": {
      "limit": 4,
      "unit": "MINUTES"
    }
  }
}

示例响应

{
  "model_id": "mtw-ZI0B_1JGmyB068C0",
  "status": "CREATED"
}

示例请求:更新单个用户的速率限制

要更新 user1 的限制,请发送 PUT 请求并指定更新后的信息

PUT _plugins/_ml/controllers/mtw-ZI0B_1JGmyB068C0
{
  "user_rate_limiter": {
    "user1": {
      "limit": 6,
      "unit": "MINUTES"
    }
  }
}

这将仅更新 user1 对象,而保留所有其他用户限制不变

{
  "model_id": "mtw-ZI0B_1JGmyB068C0",
  "user_rate_limiter": {
    "user1": {
      "limit": "6",
      "unit": "MINUTES"
    },
    "user2": {
      "limit": "4",
      "unit": "MINUTES"
    }
  }
}

示例响应

{
  "_index": ".plugins-ml-controller",
  "_id": "mtw-ZI0B_1JGmyB068C0",
  "_version": 2,
  "result": "updated",
  "forced_refresh": true,
  "_shards": {
    "total": 2,
    "successful": 2,
    "failed": 0
  },
  "_seq_no": 1,
  "_primary_term": 1
}

示例请求:删除单个用户的速率限制

要删除 user2 的限制,请发送包含所有其他用户限制的 POST 请求

POST _plugins/_ml/controllers/mtw-ZI0B_1JGmyB068C0
{
  "user_rate_limiter": {
    "user1": {
      "limit": 6,
      "unit": "MINUTES"
    }
  }
}

这将用新信息覆盖控制器

{
  "model_id": "mtw-ZI0B_1JGmyB068C0",
  "user_rate_limiter": {
    "user1": {
      "limit": "6",
      "unit": "MINUTES"
    }
  }
}

示例响应

{
  "_index": ".plugins-ml-controller",
  "_id": "mtw-ZI0B_1JGmyB068C0",
  "_version": 2,
  "result": "updated",
  "forced_refresh": true,
  "_shards": {
    "total": 2,
    "successful": 2,
    "failed": 0
  },
  "_seq_no": 1,
  "_primary_term": 1
}

所需权限

如果您使用安全插件,请确保您拥有适当的权限:cluster:admin/opensearch/ml/controllers/createcluster:admin/opensearch/ml/controllers/update