|
import logging |
|
import sys |
|
from os import getpid |
|
from typing import Dict, Literal |
|
|
|
import psutil |
|
import structlog |
|
|
|
from llm_guard.util import configure_logger as configure_llm_guard_logger |
|
|
|
LOG_LEVELS = Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] |
|
EXTERNAL_LOGGERS = { |
|
"transformers", |
|
} |
|
|
|
|
|
def configure_logger(log_level: LOG_LEVELS = "INFO"): |
|
""" |
|
Configures the logger for the package. |
|
|
|
Args: |
|
log_level: The log level to use for the logger. It should be one of the following strings: |
|
"DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL". |
|
""" |
|
logging.basicConfig( |
|
format="[%(asctime)s - %(name)s - %(levelname)s] %(message)s", |
|
level=log_level, |
|
stream=sys.stdout, |
|
) |
|
structlog.configure(logger_factory=structlog.stdlib.LoggerFactory()) |
|
for log_name in EXTERNAL_LOGGERS: |
|
logging.getLogger(log_name).setLevel(logging.WARNING) |
|
|
|
configure_llm_guard_logger(log_level) |
|
|
|
|
|
def get_resource_utilization() -> Dict: |
|
""" |
|
Returns the current resource utilization of the system. |
|
|
|
Returns: |
|
A dictionary containing the current resource utilization of the system. |
|
""" |
|
|
|
process = psutil.Process(getpid()) |
|
|
|
cpu_percent = process.cpu_percent() |
|
|
|
memory_percent = process.memory_percent() |
|
|
|
total_memory_bytes = psutil.virtual_memory().total |
|
|
|
return { |
|
"cpu_utilization_percent": cpu_percent, |
|
"memory_utilization_percent": memory_percent, |
|
"total_memory_available_bytes": total_memory_bytes, |
|
} |
|
|