来源 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
}
接下来,如果尚未安装,请安装 python-json-logger
包
pip install python-json-logger
最后,运行 vLLM,并将 VLLM_LOGGING_CONFIG_PATH
环境变量设置为自定义日志配置 JSON 文件的路径
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",
"propagage": false
},
"vllm.example_noisy_logger": {
"propagate": false
}
},
"version": 1
}
最后,运行 vLLM,并将 VLLM_LOGGING_CONFIG_PATH
环境变量设置为自定义日志配置 JSON 文件的路径
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