⚠️ 通知:有限維護
本專案不再積極維護。雖然現有版本仍然可用,但沒有計劃中的更新、錯誤修復、新功能或安全補丁。使用者應注意,漏洞可能不會得到處理。
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