跳至内容

来源 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=

日志配置环境变量

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_LOGGING_CONFIG_PATH环境变量为自定义日志配置JSON文件的路径来运行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
}

最后,通过设置VLLM_LOGGING_CONFIG_PATH环境变量为自定义日志配置JSON文件的路径来运行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

其他资源