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

附加资源#