来源 examples/others/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_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
}
最后,运行 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",
"propagate": 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 日志记录器。