來源 examples/other/logging_configuration.md。
日誌配置#
vLLM 利用 Python 的 logging.config.dictConfig
功能,以實現對 vLLM 使用的各種記錄器的強大而靈活的配置。
vLLM 提供了兩個環境變數,可用於適應從簡單且不靈活到更復雜且更靈活的各種日誌配置。
無 vLLM 日誌記錄(簡單且不靈活)
設定
VLLM_CONFIGURE_LOGGING=0
(保留VLLM_LOGGING_CONFIG_PATH
未設定)
vLLM 的預設日誌配置(簡單且不靈活)
保留
VLLM_CONFIGURE_LOGGING
未設定或設定VLLM_CONFIGURE_LOGGING=1
細粒度自定義日誌配置(更復雜,更靈活)
保留
VLLM_CONFIGURE_LOGGING
未設定或設定VLLM_CONFIGURE_LOGGING=1
並設定VLLM_LOGGING_CONFIG_PATH=<path-to-logging-config.json>
日誌配置環境變數#
VLLM_CONFIGURE_LOGGING
#
VLLM_CONFIGURE_LOGGING
控制 vLLM 是否採取任何操作來配置 vLLM 使用的記錄器。此功能預設啟用,但可以在執行 vLLM 時透過設定 VLLM_CONFIGURE_LOGGING=0
來停用。
如果 VLLM_CONFIGURE_LOGGING
啟用且未為 VLLM_LOGGING_CONFIG_PATH
提供值,則 vLLM 將使用內建的預設配置來配置根 vLLM 記錄器。預設情況下,不配置其他 vLLM 記錄器,因此,所有 vLLM 記錄器都服從根 vLLM 記錄器來做出所有日誌記錄決策。
如果 VLLM_CONFIGURE_LOGGING
停用且為 VLLM_LOGGING_CONFIG_PATH
提供值,則在啟動 vLLM 時會發生錯誤。
VLLM_LOGGING_CONFIG_PATH
#
VLLM_LOGGING_CONFIG_PATH
允許使用者指定替代的自定義日誌配置的 JSON 檔案路徑,該配置將代替 vLLM 的內建預設日誌配置使用。日誌配置應以 JSON 格式提供,並遵循 Python 的 日誌配置字典模式 指定的模式。
如果指定了 VLLM_LOGGING_CONFIG_PATH
,但停用了 VLLM_CONFIGURE_LOGGING
,則在啟動 vLLM 時會發生錯誤。
示例#
示例 1:自定義 vLLM 根記錄器#
在此示例中,我們將自定義 vLLM 根記錄器以使用 python-json-logger
(它是容器映象的一部分),以 JSON 格式記錄到控制檯的 STDOUT,日誌級別為 INFO
。
首先,建立適當的 JSON 日誌配置文件
/path/to/logging_config.json
{
"formatters": {
"json": {
"class": "pythonjsonlogger.jsonlogger.JsonFormatter"
}
},
"handlers": {
"console": {
"class" : "logging.StreamHandler",
"formatter": "json",
"level": "INFO",
"stream": "ext://sys.stdout"
}
},
"loggers": {
"vllm": {
"handlers": ["console"],
"level": "INFO",
"propagate": false
}
},
"version": 1
}
最後,使用設定為自定義日誌配置 JSON 檔案路徑的 VLLM_LOGGING_CONFIG_PATH
環境變數執行 vLLM
VLLM_LOGGING_CONFIG_PATH=/path/to/logging_config.json \
vllm serve mistralai/Mistral-7B-v0.1 --max-model-len 2048
示例 2:靜默特定的 vLLM 記錄器#
要靜默特定的 vLLM 記錄器,必須為目標記錄器提供自定義日誌配置,以配置該記錄器,使其不會將其日誌訊息傳播到根 vLLM 記錄器。
當為任何記錄器提供自定義配置時,也必須為根 vLLM 記錄器提供配置,因為任何自定義記錄器配置都會覆蓋 vLLM 使用的內建預設日誌配置。
首先,建立一個適當的 JSON 日誌配置文件,其中包括根 vLLM 記錄器和您希望靜默的記錄器的配置
/path/to/logging_config.json
{
"formatters": {
"vllm": {
"class": "vllm.logging_utils.NewLineFormatter",
"datefmt": "%m-%d %H:%M:%S",
"format": "%(levelname)s %(asctime)s %(filename)s:%(lineno)d] %(message)s"
}
},
"handlers": {
"vllm": {
"class" : "logging.StreamHandler",
"formatter": "vllm",
"level": "INFO",
"stream": "ext://sys.stdout"
}
},
"loggers": {
"vllm": {
"handlers": ["vllm"],
"level": "DEBUG",
"propagate": false
},
"vllm.example_noisy_logger": {
"propagate": false
}
},
"version": 1
}
最後,使用設定為自定義日誌配置 JSON 檔案路徑的 VLLM_LOGGING_CONFIG_PATH
環境變數執行 vLLM
VLLM_LOGGING_CONFIG_PATH=/path/to/logging_config.json \
vllm serve mistralai/Mistral-7B-v0.1 --max-model-len 2048
示例 3:停用 vLLM 預設日誌配置#
要停用 vLLM 的預設日誌配置並靜默所有 vLLM 記錄器,只需在執行 vLLM 時設定 VLLM_CONFIGURE_LOGGING=0
即可。這將阻止 vLLM 配置根 vLLM 記錄器,從而使所有其他 vLLM 記錄器靜默。
VLLM_CONFIGURE_LOGGING=0 \
vllm serve mistralai/Mistral-7B-v0.1 --max-model-len 2048