⚠️ 通知:有限维护
本项目不再积极维护。虽然现有版本仍然可用,但没有计划中的更新、错误修复、新功能或安全补丁。用户应注意,漏洞可能不会得到处理。
TorchServe 中的日志记录¶
本文档将解释 TorchServe 中的日志记录。我们还将解释如何修改模型服务器中日志记录的行为。TorchServe 中的日志记录还包括指标,因为指标会被记录到文件中。要进一步了解如何自定义指标或定义自定义日志布局,请参见TorchServe 上的指标
先决条件¶
熟悉 log4j2 配置。有关如何配置 log4j 参数的信息,请参见日志服务。
熟悉 TorchServe 使用的默认log4j2.xml。
日志类型¶
TorchServe 目前提供以下日志类型
访问日志
TorchServe 日志
访问日志¶
这些日志收集对 TorchServe 的访问模式。访问日志的配置如下
<RollingFile
name="access_log"
fileName="${env:LOG_LOCATION:-logs}/access_log.log"
filePattern="${env:LOG_LOCATION:-logs}/access_log.%d{dd-MMM}.log.gz">
<PatternLayout pattern="%d{ISO8601} - %m%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="100 MB"/>
<TimeBasedTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy max="5"/>
</RollingFile>
如 properties 文件中所定义,访问日志收集在 {LOG_LOCATION}/access_log.log 文件中。当您使用模型加载 TorchServe 并对服务器运行推理时,以下日志会被收集到 access_log.log 中
2018-10-15 13:56:18,976 [INFO ] BackendWorker-9000 ACCESS_LOG - /127.0.0.1:64003 "POST /predictions/resnet-18 HTTP/1.1" 200 118
上述日志告诉我们,远程主机127.0.0.1:64003
成功地进行了POST
调用/predictions/resnet-18
,耗时118
毫秒完成此请求。
这些日志对于确定模型服务器的当前性能以及了解模型服务器接收到的请求非常有用。
TorchServe 日志¶
这些日志收集来自 TorchServe 和后端工作程序(自定义模型代码)的所有日志。有关 TorchServe 日志的默认配置如下
<RollingFile
name="ts_log"
fileName="${env:LOG_LOCATION:-logs}/ts_log.log"
filePattern="${env:LOG_LOCATION:-logs}/ts_log.%d{dd-MMM}.log.gz">
<PatternLayout pattern="%d{ISO8601} [%-5p] %t %c - %m%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="100 MB"/>
<TimeBasedTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy max="5"/>
</RollingFile>
此配置默认转储所有高于DEBUG
级别的日志。
生成自定义日志¶
您可能想要生成自定义日志。这可能是出于调试目的或记录任何错误。为此,请将所需的日志打印到stdout/stderr
。TorchServe 会捕获后端工作程序生成的日志并将其记录到日志文件中。日志的一些示例如下
打印到 stderr 的消息
2018-10-14 16:46:51,656 [WARN ] W-9000-stderr org.pytorch.serve.wlm.WorkerLifeCycle - [16:46:51] src/nnvm/legacy_json_util.cc:209: Loading symbol saved by previous version v0.8.0. Attempting to upgrad\
e...
2018-10-14 16:46:51,657 [WARN ] W-9000-stderr org.pytorch.serve.wlm.WorkerLifeCycle - [16:46:51] src/nnvm/legacy_json_util.cc:217: Symbol successfully upgraded!
打印到 stdout 的消息
2018-10-14 16:59:59,926 [INFO ] W-9000-stdout org.pytorch.serve.wlm.WorkerLifeCycle - preprocess time: 3.60
2018-10-14 16:59:59,926 [INFO ] W-9000-stdout org.pytorch.serve.wlm.WorkerLifeCycle - inference time: 117.31
2018-10-14 16:59:59,926 [INFO ] W-9000-stdout org.pytorch.serve.wlm.WorkerLifeCycle - postprocess time: 8.52
修改日志行为¶
要修改默认日志记录行为,请定义一个log4j2.xml
文件。有两种使用自定义日志启动 TorchServe 的方法
通过 config.properties 提供¶
定义自定义log4j2.xml
文件后,将以下内容添加到config.properties
文件中
vmargs=-Dlog4j.configurationFile=file:///path/to/custom/log4j2.xml
然后如下启动 TorchServe
$ torchserve --start --ts-config /path/to/config.properties
或者
$ torchserve --start --log-config /path/to/custom/log4j2.xml
启用异步日志记录¶
如果您的模型非常轻量级且您想要高吞吐量,请考虑启用异步日志记录。日志输出可能会延迟,如果 TorchServe 意外终止,最新的日志可能会丢失。默认情况下,异步日志记录是禁用的。要启用异步日志记录,请在config.properties
文件中添加以下属性
async_logging=true