创建或更新控制器
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/create
和 cluster:admin/opensearch/ml/controllers/update
。