跳到内容

llmcompressor.core.helpers

核心压缩操作的辅助函数。

为压缩工作流程中的日志记录模型信息和状态管理提供实用函数。包括条件日志记录和参数跟踪功能。

函数

log_model_info

log_model_info(state: State, current_log_step)

将模型信息记录到指标中。依赖于 state.model 具有一个 loggable_items 方法,该方法返回一个可记录项名称和值的元组生成器。还依赖于 state.loggers 是一个 LoggerManager 实例。

参数

  • state

    (State) –

    稀疏化的当前状态

  • 当前日志步骤

    当前要记录模型信息的日志步

源代码在 llmcompressor/core/helpers.py
def log_model_info(state: State, current_log_step):
    """
    Log model level info to the metrics
    Relies on `state.model` having a `loggable_items` method
    that returns a generator of tuples of the loggable item
    name and value. Also relies on `state.loggers` being a
    `LoggerManager` instance.

    :param state: The current state of sparsification
    :param current_log_step: The current log step to log
        model info at
    """
    _log_current_step(logger_manager=state.loggers, current_log_step=current_log_step)
    _log_model_loggable_items(
        logger_manager=state.loggers,
        loggable_items=state.model.loggable_items(),
        epoch=current_log_step,
    )

should_log_model_info

should_log_model_info(
    model: Any,
    loggers: LoggerManager,
    current_log_step: float,
    last_log_step: float | None = None,
) -> bool

检查我们是否应该记录模型信息 标准: - model 具有 loggable_items 方法 - state 具有 metrics manager - metrics manager 根据周期和上次记录的 epoch 准备好进行日志记录

参数

  • model

    (Any) –

    我们想要记录信息的模型

  • loggers

    (LoggerManager) –

    要记录到的指标管理器

  • 当前日志步骤

    (float) –

    当前 epoch

  • 上次日志步骤

    (float | None, 默认值: None ) –

    上次记录模型信息到的步

返回

  • bool

    如果应该记录模型信息,则为 True,否则为 False

源代码在 llmcompressor/core/helpers.py
def should_log_model_info(
    model: Any,
    loggers: LoggerManager,
    current_log_step: float,
    last_log_step: float | None = None,
) -> bool:
    """
    Check if we should log model level info
    Criteria:
        - model has a loggable_items method
        - state has a metrics manager
        - metrics manager is ready to log based on cadence and last log epoch

    :param model: The model whose info we want to log
    :param loggers: The metrics manager to log to
    :param current_log_step: The current epoch
    :param last_log_step: The last step we logged model info at
    :return: True if we should log model level info, False otherwise
    """
    return (
        hasattr(model, "loggable_items")
        and isinstance(loggers, LoggerManager)
        and loggers.log_ready(
            current_log_step=current_log_step, last_log_step=last_log_step
        )
    )