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>
如屬性檔案中所定義,存取日誌收集在 {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
對 /predictions/resnet-18
進行了成功的 POST
呼叫,完成此請求花費了 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 會擷取 backend worker 產生的日誌,並將其記錄到日誌檔中。 以下是一些日誌範例:
列印到 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