跳到內容

來源 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 日誌記錄器。

VLLM_CONFIGURE_LOGGING=0 \
    vllm serve mistralai/Mistral-7B-v0.1 --max-model-len 2048

額外資源