# 04. 模型加载策略
Triton提供了API来进行模型的生命周期管理,主要包括模型的状态查询、模型加载、模型卸载。
模型加载策略主要有3种:
- NONDE(默认策略)
- EXPLICIT (显示加载策略)
- POLL (轮询策略或者动态策略)
- None模式
参数控制 --model-control-mode=none Triton启动阶段自动加载所有的模型。当服务已经启动好,模型的文件变更不会触发模型的再次加载。即使通过(API)[https://github.com/triton-inference-server/server/blob/main/docs/protocol/extension_model_repository.md] 也不能触发模型加载、卸载,同时接口会返回错误。
加载模型会返回如下错误:
{
"error": "explicit model load / unload is not allowed if polling is enabled"
}
2
3
- EXPLICIT
参数控制 --model-control-mode=explicit
比如:
tritonserver --model-repository=/models --model-control-mode=explicit
#output
I1112 14:52:24.147965 643 server.cc:626]
+-------+---------+--------+
| Model | Version | Status |
+-------+---------+--------+
+-------+---------+--------+
2
3
4
5
6
7
8
Triton启动,可以通过参数 --load-model=* 来主动加载模型,否则默认没有模型加载。 命令:tritonserver --model-repository=/models --model-control-mode=explicit --load-model=* 如下图:
I1112 14:51:20.738282 549 server.cc:626]
+------------------+---------+--------+
| Model | Version | Status |
+------------------+---------+--------+
| text_detection | 1 | READY |
| text_recognition | 1 | READY |
+------------------+---------+--------+
2
3
4
5
6
7
- POLL
Triton试图在启动时加载模型存储库中的所有模型。Triton无法加载的模型将被标记为UNAVAILABLE,并且不能用于推理。
对模型文件的更改将被自动检测到,Triton将根据这些更改尝试加载和卸载模型。当尝试重新加载已加载的模型时,如果由于任何原因重新加载失败,则已加载的模型将保持不变并保持加载状态。如果重新加载成功,新加载的模型将替换已经加载的模型,而不会损失模型的可用性。
对模型文件的更改可能不会立即检测到,因为Triton会定期轮询存储库。可以使用——repository-poll-secs选项控制轮询间隔。可以使用控制台日志或模型准备协议或模型控制协议的索引操作来确定模型存储库更改何时生效。
参数: --model-control-mode=poll
- Triton模型管理API
# | 接口 | 功能 | 示例 |
---|---|---|---|
1 | v2/repository/index | 模型状态 | curl -XPOST http://localhost:8000/v2/repository/index |
2 | v2/repository/models/${MODEL_NAME}/load | 加载模型 | curl -XPOST http://localhost:8000/v2/repository/models/text_recognition/load |
3 | v2/repository/models/${MODEL_NAME}/unload | 卸载模型 | curl -XPOST http://localhost:8000/v2/repository/models/text_recognition/unload |
#index
curl -XPOST http://localhost:8000/v2/repository/index |jq
[
{
"name": "text_detection",
"version": "1",
"state": "READY"
},
{
"name": "text_recognition",
"version": "1",
"state": "READY"
}
]
#load
curl -XPOST http://localhost:8000/v2/repository/models/text_recognition/load
[
{
"name": "text_detection"
},
{
"name": "text_recognition",
"version": "1",
"state": "READY"
}
]
#unload
curl -XPOST http://localhost:8000/v2/repository/models/text_recognition/unload
[
{
"name": "text_detection"
},
{
"name": "text_recognition",
"version": "1",
"state": "UNAVAILABLE",
"reason": "unloaded"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Triton 也提供了GRPC方式管理模型。详见下边文档:
Model Repository Extension (opens new window)