Model Management-模型管理

创建日期: 2022-06-24 16:30 | 作者: 风波 | 浏览次数: 15 | 分类: TritonServer

官方文档:https://github.com/triton-inference-server/server/blob/519a37a4ff35332bab5d129e6b04fb4da35e0fa6/docs/model_management.md

Model Management - 模型管理

triton 提供了模型管理API,作为HTTP/REST and GRPC protocols, and as part of the C API 的一部分。

triton 有三种控制模式:NONE, EXPLICIT or POLL

控制模式决定了 Triton 如何响应模型仓库(model repository)的变化,以及哪些协议和API是可用的。

Model Control Mode NONE - 模型控制模式: NONE

在启动 Triton 的时候,添加参数 --model-control-mode=none ,那么 Triton 会选择以 NONE 模式运行。如果不加 --model-control-mode 参数,Triton 会默认使用NONE模式。当 Triton正在运行的时候,修改模型仓库一定要谨慎行事,具体原因参考下面的 Modifying the Model Repository 一节。

Triton 启动时会尝试加载所以的模型,如果无法加载某个模型,Triton 会把这个模型标记为 UNAVAILABLE ,并且不会提供推理服务。

当服务正在运行时,修改了模型仓库,Triton 会忽略仓库的修改。通过模型控制协议进行加载(load)和卸载(unload)的操作请求,也会被忽略,同时会返回错误。

Model Control Mode EXPLICIT - 模型控制模式:EXPLICIT

在启动 Triton 服务时,添加 --model-control-mode=explicit 参数,则会启用 EXPLICIT 控制模式。当 Triton正在运行的时候,修改模型仓库的时候一定要谨慎行事,具体原因参考下面的 Modifying the Model Repository 一节。

启动 Triton 服务的时候,如果指定了 --load-model 参数,那么 Triton 只会加载这个参数指定的那些模型文件。如果要加载所有的模型文件,可以使用 --load-model=* 参数,并且命令中只能有一个 --load-model 参数出现。如果在命令中同时添加了 --load-model=* 和其它的 --load-model 参数,则会报错。在启动 Triton 服务时如果不指定任何 --load-model 参数,那么 Triton 就不会加载任何模型。Triton 无法加载的模型会被标记为 UNAVAILABLE 并且不会进行推理服务。

Triton 服务启动之后,所有加载模型和卸载模型的操作,都必须明确的使用模型控制协议来进行。使用模型控制协议进行操作时,可以从返回结果的状态知道加载/卸载模型的操作是成功了还是失败了。如果尝试重载一个已经加载的模型时失败了,那么已经加载的模型不会受到影响。如果重载成功,那么新加载的模型会替换掉之前加载的模型,并且不会丢失模型的可用性。

Model Control Mode POLL - 模型控制模式:POLL

在启动 Triton时,会尝试加载模型仓库中所以的模型。Triton 无法加载的模型,会被标记为 UNAVAILABLE ,并且不会进行推理服务。

对模型仓库的任何修改都会被检测到,Triton 将根据这些修改尝试加载或者卸载模型。当重载一个已经加载的模型时,如果失败了,那么之前加载的模型不会被影响;如果重载成功了,新加载的模型会替换之前加载的模型,并且模型的可用性不会受影响。

对模型仓库的修改不会被马上捕捉到,因为 Triton 服务时定期对模型仓库进行检测。你可以通过 --repository-poll-secs 参数来控制检测频率。通过终端日志或者模型准备协议,或者模型控制协议的操作索引,可以确定模型仓库的修改是否已经生效。

** WARNING **:Triton 检测模型和对模型进行修改操作这两者之间不存在同步。而结果就是,Triton 可能观察到部分以及不完整的改变,从而导致无法预料的行为。基于这个原因,不建议在生产环境环境中使用 POLL模式。

使用模型控制协议进行加载和卸载请求时,不会生效并且会返回错误信息。

在 POLL模式下,Triton 会对模型参考的如下几个改变进行响应:

Modifying the Model Repository - 修改模型仓库

在一个模型仓库中,每一个模型都放在自己的子目录中。每个模型子目录中被允许哪些活动,需要视 Triton 如何使用这个模型来确定。模型的状态可以通过 model metadata 或者 repository index API 来确定。

15 浏览
0 评论