llmcompressor.metrics
用于压缩工作流的指标日志记录和监控框架。
提供全面的指标收集、日志记录和监控能力,用于模型压缩操作。包括基础日志记录器、频率管理以及针对压缩过程中训练和推理性能的专门指标跟踪。
模块
类
-
BaseLogger–所有修饰符日志记录器都必须实现的基类。
-
LambdaLogger–处理调用 lambda 函数并传递任何日志的日志记录器。
-
LoggerManager–日志记录器的包装器,负责日志调度并将日志传递给目标
-
PythonLogger–修饰符指标,负责将值打印到 python 指标实例。
-
SparsificationGroupLogger–修饰符指标,负责将值输出到其他支持的系统。
-
TensorBoardLogger–修饰符指标,负责将值输出到 TensorBoard 日志目录
-
WANDBLogger–修饰符指标,负责将值输出到 Weights and Biases。
BaseLogger
基类:ABC
所有修饰符日志记录器都必须实现的基类。
参数
-
(名称str) –用于标识指标的名称
-
(enabledbool, 默认值:True) –为 True 时记录,为 False 时不记录
方法
-
log_hyperparams–:param params: 字典中的每个键值对都是超参数的名称
-
log_scalar–:param tag: 用于标识值的标签
-
log_scalars–:param tag: 用于标识值的标签
-
log_string–:param tag: 用于标识值的标签
-
save–:param file_path: 要保存的文件路径
属性
源代码在 llmcompressor/metrics/logger.py
log_hyperparams
参数
-
(paramsdict[str, float]) –字典中的每个键值对都是超参数的名称及其对应的值。
返回
-
bool–如果已记录,则为 True,否则为 False。
源代码在 llmcompressor/metrics/logger.py
log_scalar
log_scalar(
tag: str,
value: float,
step: int | None = None,
wall_time: float | None = None,
**kwargs,
) -> bool
参数
-
(tagstr) –用于标识值的标签
-
(值float) –要保存的值
-
(步骤int | None, 默认值:None) –记录该值时的全局步数
-
(wall_timefloat | None, 默认值:None) –记录该值时的全局墙壁时间
-
–kwargs其他日志参数,以支持 Python 和自定义日志记录器
返回
-
bool–如果已记录,则为 True,否则为 False。
源代码在 llmcompressor/metrics/logger.py
log_scalars
log_scalars(
tag: str,
values: dict[str, float],
step: int | None = None,
wall_time: float | None = None,
**kwargs,
) -> bool
参数
-
(tagstr) –用于标识值的标签
-
(值dict[str, float]) –要保存的值
-
(步骤int | None, 默认值:None) –记录这些值时的全局步数
-
(wall_timefloat | None, 默认值:None) –记录这些值时的全局墙壁时间
-
–kwargs其他日志参数,以支持 Python 和自定义日志记录器
返回
-
bool–如果已记录,则为 True,否则为 False。
源代码在 llmcompressor/metrics/logger.py
log_string
log_string(
tag: str,
string: str,
step: int | None = None,
wall_time: float | None = None,
**kwargs,
) -> bool
参数
-
(tagstr) –用于标识值的标签
-
–值要保存的值
-
(步骤int | None, 默认值:None) –记录这些值时的全局步数
-
(wall_timefloat | None, 默认值:None) –记录这些值时的全局墙壁时间
-
–kwargs其他日志参数,以支持 Python 和自定义日志记录器
返回
-
bool–如果已记录,则为 True,否则为 False。
源代码在 llmcompressor/metrics/logger.py
save
参数
-
(文件路径str) –要保存的文件路径
-
–kwargs特定指标可能使用的其他参数
返回
-
bool–如果已保存,则为 True,否则为 False
源代码在 llmcompressor/metrics/logger.py
LambdaLogger
LambdaLogger(
lambda_func: Callable[
[
str | None,
float | str | None,
dict[str, float] | None,
int | None,
float | None,
int | None,
],
bool,
],
name: str = "lambda",
enabled: bool = True,
)
Bases: BaseLogger
处理调用 lambda 函数并传递任何日志的日志记录器。
参数
-
(lambda_funcCallable[[str | None, float | str | None, dict[str, float] | None, int | None, float | None, int | None], bool]) –回调的 lambda 函数,用于传递任何日志。预期的调用序列是 (tag, value, values, step, wall_time) -> bool 返回 True 表示已记录,否则返回 False。
-
(名称str, default:'lambda') –用于标识指标的名称;默认为 lambda
-
(enabledbool, 默认值:True) –为 True 时记录,为 False 时不记录
方法
-
log_hyperparams–:param params: 字典中的每个键值对都是超参数的名称
-
log_scalar–:param tag: 用于标识值的标签
-
log_scalars–:param tag: 用于标识值的标签
属性
-
lambda_func(Callable[[str | None, float | str | None, dict[str, float] | None, int | None, float | None, int | None], bool]) –:return: 回调的 lambda 函数,用于传递任何日志。
源代码在 llmcompressor/metrics/logger.py
lambda_func property
lambda_func: Callable[
[
str | None,
float | str | None,
dict[str, float] | None,
int | None,
float | None,
int | None,
],
bool,
]
返回
-
Callable[[str | None, float | str | None, dict[str, float] | None, int | None, float | None, int | None], bool]–回调的 lambda 函数,用于传递任何日志。预期的调用序列是 (tag, value, values, step, wall_time)
log_hyperparams
参数
-
(paramsdict[str, float]) –字典中的每个键值对都是超参数的名称及其对应的值。
-
(级别int | str | None, default:None) –日志消息的最低严重级别
返回
-
bool–如果已记录,则为 True,否则为 False。
源代码在 llmcompressor/metrics/logger.py
log_scalar
log_scalar(
tag: str,
value: float,
step: int | None = None,
wall_time: float | None = None,
level: int | str | None = None,
) -> bool
参数
-
(tagstr) –用于标识值的标签
-
(值float) –要保存的值
-
(步骤int | None, 默认值:None) –记录该值时的全局步数
-
(wall_timefloat | None, 默认值:None) –记录值时的全局墙壁时间,默认为 time.time()
-
(级别int | str | None, default:None) –日志消息的最低严重级别
-
–kwargs其他日志参数,以支持 Python 和自定义日志记录器
返回
-
bool–如果已记录,则为 True,否则为 False。
源代码在 llmcompressor/metrics/logger.py
log_scalars
log_scalars(
tag: str,
values: dict[str, float],
step: int | None = None,
wall_time: float | None = None,
level: int | str | None = None,
) -> bool
参数
-
(tagstr) –用于标识值的标签
-
(值dict[str, float]) –要保存的值
-
(步骤int | None, 默认值:None) –记录这些值时的全局步数
-
(wall_timefloat | None, 默认值:None) –记录值时的全局墙壁时间,默认为 time.time()
-
(级别int | str | None, default:None) –日志消息的最低严重级别
-
–kwargs其他日志参数,以支持 Python 和自定义日志记录器
返回
-
bool–如果已记录,则为 True,否则为 False。
源代码在 llmcompressor/metrics/logger.py
LoggerManager
LoggerManager(
loggers: list[BaseLogger] | None = None,
log_frequency: float | None = 0.1,
log_python: bool = True,
name: str = "manager",
mode: LoggingModeType = "exact",
frequency_type: FrequencyType = "epoch",
)
基类:ABC
日志记录器的包装器,负责日志调度并将日志传递给目标日志记录器。
参数
-
(loggerslist[BaseLogger] | None, default:None) –分配给此管理器的日志记录器列表
-
(日志频率float | None, default:0.1) –日志之间等待的步数或步数比例
-
(模式LoggingModeType, default:'exact') –使用的日志模式,可以是“on_change”或“exact”。“on_change”将在模型自上次日志以来发生更新时记录,“exact”将根据给定频率记录,而不管模型更新。默认为“exact”
-
(频率类型FrequencyType, default:'epoch') –要使用的频率类型,可以是 "epoch"、"step" 或 "batch" 来控制频率管理器跟踪的内容,例如,如果频率类型是 "epoch",则频率管理器将跟踪自上次日志记录以来已过的 epoch 数,如果频率类型是 "step",则频率管理器将跟踪优化器步骤数
方法
-
add_logger–将 BaseLogger 实现添加到此管理器的日志记录器中
-
log_hyperparams–(注意:此方法已弃用,将在未来版本中删除;
-
log_ready–检查是否有指标已准备好接受日志
-
log_scalar–(注意:此方法已弃用,将在未来版本中删除;
-
log_scalars–(注意:此方法已弃用,将在未来版本中删除;
-
log_string–(注意:此方法已弃用,将在未来版本中删除;
-
log_written–使用上次写入的日志步数更新频率管理器
-
model_updated–使用上次模型更新步数更新频率管理器
-
save–:param file_path: 要保存的文件路径
-
time–上下文管理器,用于记录代码块运行所需的时间
属性
-
log_frequency(str | float | None) –:return: 日志之间等待的 epoch 数或 epoch 分数
-
loggers(list[BaseLogger]) –:return: 分配给此管理器的日志记录器列表
-
name(str) –:return: 用于标识指标的名称
-
wandb(ModuleType | None) –:return: 如果已初始化,则返回 wandb 模块
源代码在 llmcompressor/metrics/logger.py
log_frequency property writable
返回
-
str | float | None–日志之间等待的 epoch 数或 epoch 分数
add_logger
将 BaseLogger 实现添加到此管理器的日志记录器中
参数
-
(loggerBaseLogger) –要添加的指标对象
源代码在 llmcompressor/metrics/logger.py
log_hyperparams
log_hyperparams(
params: dict,
log_types: str | list[str] = ALL_TOKEN,
level: int | str | None = None,
)
(注意:此方法已弃用,将在未来版本中删除,请使用 LoggerManager().metric.log_hyperparams 代替)
参数
-
(paramsdict) –字典中的每个键值对都是超参数的名称及其对应的值。
源代码在 llmcompressor/metrics/logger.py
log_ready
检查是否有指标已准备好接受日志
参数
-
–当前日志步骤请求日志的当前步数
-
–上次日志步骤上次记录此对象日志的时间。(已弃用)
-
(检查模型更新bool, 默认值:False) –如果为 True,将检查模型是否已更新,如果为 False,则仅检查日志频率
返回
- –
如果指标已准备好接受日志,则为 True。
源代码在 llmcompressor/metrics/logger.py
log_scalar
log_scalar(
tag: str,
value: float,
step: int | None = None,
wall_time: float | None = None,
log_types: str | list[str] = ALL_TOKEN,
level: int | str | None = None,
)
(注意:此方法已弃用,将在未来版本中删除,请使用 LoggerManager().metric.log_scalar 代替)
参数
-
(tagstr) –用于标识值的标签
-
(值float) –要保存的值
-
(步骤int | None, 默认值:None) –记录该值时的全局步数
-
(wall_timefloat | None, 默认值:None) –记录该值时的全局墙壁时间
-
(级别int | str | None, default:None) –日志消息的最低严重级别
-
–kwargs其他日志参数,以支持 Python 和自定义日志记录器
返回
- –
如果已记录,则为 True,否则为 False。
源代码在 llmcompressor/metrics/logger.py
log_scalars
log_scalars(
tag: str,
values: dict[str, float],
step: int | None = None,
wall_time: float | None = None,
log_types: str | list[str] = ALL_TOKEN,
level: int | str | None = None,
)
(注意:此方法已弃用,将在未来版本中删除,请使用 LoggerManager().metric.log_scalars 代替)
参数
-
(tagstr) –用于标识值的标签
-
(值dict[str, float]) –要保存的值
-
(步骤int | None, 默认值:None) –记录这些值时的全局步数
-
(wall_timefloat | None, 默认值:None) –记录这些值时的全局墙壁时间
-
(级别int | str | None, default:None) –日志消息的最低严重级别
-
–kwargs其他日志参数,以支持 Python 和自定义日志记录器
返回
- –
如果已记录,则为 True,否则为 False。
源代码在 llmcompressor/metrics/logger.py
log_string
log_string(
tag: str,
string: str,
step: int | None = None,
wall_time: float | None = None,
log_types: str | list[str] = ALL_TOKEN,
level: int | str | None = None,
)
(注意:此方法已弃用,将在未来版本中删除,请使用 LoggerManager().system.log_string 代替)
参数
-
(tagstr) –用于标识值的标签
-
–值要保存的值
-
(步骤int | None, 默认值:None) –记录这些值时的全局步数
-
(wall_timefloat | None, 默认值:None) –记录这些值时的全局墙壁时间
-
–kwargs其他日志参数,以支持 Python 和自定义日志记录器
-
(级别int | str | None, default:None) –日志消息的最低严重级别
返回
- –
如果已记录,则为 True,否则为 False。
源代码在 llmcompressor/metrics/logger.py
log_written
使用上次写入的日志步数更新频率管理器
参数
-
(步骤LogStepType) –上次记录的步数
model_updated
使用上次模型更新步数更新频率管理器
参数
-
(步骤LogStepType) –上次记录的步数
save
参数
-
(文件路径str) –要保存的文件路径
-
–kwargs特定指标可能使用的其他参数
源代码在 llmcompressor/metrics/logger.py
time
上下文管理器,用于记录代码块运行所需的时间
用法
with LoggerManager().time("my_block"): time.sleep(1)
参数
-
(tagstr | None, 默认值:None) –用于标识值的标签
源代码在 llmcompressor/metrics/logger.py
PythonLogger
Bases: LambdaLogger
修饰符指标,负责将值打印到 python 指标实例。
参数
-
(名称str, default:'python') –用于标识指标的名称;默认为 python
-
(enabledbool, 默认值:True) –为 True 时记录,为 False 时不记录
方法
-
log_string–:param tag: 用于标识值的标签
源代码在 llmcompressor/metrics/logger.py
log_string
log_string(
tag: str | None,
string: str | None,
step: int | None,
wall_time: float | None = None,
level: int | str | None = None,
) -> bool
参数
-
(tagstr | None) –用于标识值的标签
-
(stringstr | None) –要记录的字符串
-
(步骤int | None) –记录这些值时的全局步数
-
(wall_timefloat | None, 默认值:None) –记录值时的全局墙壁时间,默认为 time.time()
-
(级别int | str | None, default:None) –日志消息的最低严重级别
返回
-
bool–如果已记录,则为 True,否则为 False。
源代码在 llmcompressor/metrics/logger.py
SparsificationGroupLogger
SparsificationGroupLogger(
lambda_func: Callable[
[
str | None,
float | None,
dict[str, float] | None,
int | None,
float | None,
],
bool,
]
| None = None,
python: bool = False,
python_log_level: int | str | None = "INFO",
tensorboard: bool | str | SummaryWriter = None,
wandb_: bool | dict | None = None,
name: str = "sparsification",
enabled: bool = True,
)
Bases: BaseLogger
修饰符指标,负责将值输出到其他支持的系统。支持的系统包括:- Python 日志- Tensorboard- Weights and Biases- Lambda 回调
所有这些都是可选的,可以由此根对象批量禁用和启用。
参数
-
(lambda_funcCallable[[str | None, float | None, dict[str, float] | None, int | None, float | None], bool] | None, default:None) –可选的 lambda 函数,用于回调并传递任何日志。预期的调用序列是 (tag, value, values, step, wall_time) -> bool 返回 True 表示已记录,否则返回 False。
-
(pythonbool, 默认值:False) –用于日志记录到 python 指标的布尔参数。如果为 True,则创建指标实例;如果为 False,则不记录任何内容
-
(python_log_levelint | str | None, default:'INFO') –如果 python 为 True,则在 loguru.logger 实例上记录任何传入数据的级别
-
(tensorboardbool | str | SummaryWriter, default:None) –用于日志记录到 tensorboard 编写器的可选参数。可以是用于日志记录的 SummaryWriter 实例、表示创建新 SummaryWriter 以用于日志记录的目录的字符串、True(创建新 SummaryWriter),或非真值(False、None)以不记录任何内容
-
(wandb_bool | dict | None, default:None) –用于日志记录到 wandb 的可选参数。可以是传递给 wandb.init 的字典、True(用于日志记录到 wandb,不会调用 init),或非真值(False、None)以不记录任何内容
-
(名称str, default:'sparsification') –用于标识指标的名称;默认为 sparsification
-
(enabledbool, 默认值:True) –为 True 时记录,为 False 时不记录
方法
-
enabled–:param value: 为 True 时记录,为 False 时不记录
-
log_hyperparams–:param params: 字典中的每个键值对都是超参数的名称
-
log_scalar–:param tag: 用于标识值的标签
-
log_scalars–:param tag: 用于标识值的标签
属性
-
loggers(list[BaseLogger]) –:return: 为此指标创建的指标子实例
源代码在 llmcompressor/metrics/logger.py
enabled
log_hyperparams
参数
-
(paramsdict) –字典中的每个键值对都是超参数的名称及其对应的值。
源代码在 llmcompressor/metrics/logger.py
log_scalar
log_scalar(
tag: str,
value: float,
step: int | None = None,
wall_time: float | None = None,
level: int | str | None = None,
)
参数
-
(tagstr) –用于标识值的标签
-
(值float) –要保存的值
-
(步骤int | None, 默认值:None) –记录该值时的全局步数
-
(wall_timefloat | None, 默认值:None) –记录值时的全局墙壁时间,默认为 time.time()
-
(级别int | str | None, default:None) –日志消息的最低严重级别
源代码在 llmcompressor/metrics/logger.py
log_scalars
log_scalars(
tag: str,
values: dict[str, float],
step: int | None = None,
wall_time: float | None = None,
level: int | str | None = None,
)
参数
-
(tagstr) –用于标识值的标签
-
(值dict[str, float]) –要保存的值
-
(步骤int | None, 默认值:None) –记录这些值时的全局步数
-
(wall_timefloat | None, 默认值:None) –记录值时的全局墙壁时间,默认为 time.time()
-
(级别int | str | None, default:None) –日志消息的最低严重级别
源代码在 llmcompressor/metrics/logger.py
TensorBoardLogger
TensorBoardLogger(
log_path: str = None,
writer: SummaryWriter = None,
name: str = "tensorboard",
enabled: bool = True,
)
Bases: LambdaLogger
修饰符指标,负责将值输出到 TensorBoard 日志目录,以便在 TensorBoard 中查看。
参数
-
(log_pathstr, default:None) –创建 SummaryWriter 的路径。如果未提供,则必须将 writer 设置为 None(如果 writer 为 None),将将在当前工作目录中创建一个 TensorBoard 目录。
-
(writerSummaryWriter, default:None) –用于记录结果的编写器;如果未提供,则将在 log_path 处创建一个新的编写器。
-
(名称str, default:'tensorboard') –用于标识指标的名称;默认为 tensorboard
-
(enabledbool, 默认值:True) –为 True 时记录,为 False 时不记录
方法
-
available–:return: 如果 tensorboard 可用且已安装,则返回 True;否则返回 False。
属性
-
writer(SummaryWriter) –:return: 用于记录结果的编写器。
源代码在 llmcompressor/metrics/logger.py
available staticmethod
WANDBLogger
WANDBLogger(
init_kwargs: dict | None = None,
name: str = "wandb",
enabled: bool = True,
wandb_err: Exception | None = wandb_err,
)
Bases: LambdaLogger
修饰符指标,负责将值输出到 Weights and Biases。
参数
-
(init_kwargsdict | None, default:None) –传递给 wandb.init 的参数;例如:wandb.init(**init_kwargs)。如果未提供,则不会调用 init。
-
(名称str, default:'wandb') –用于标识指标的名称;默认为 wandb
-
(enabledbool, 默认值:True) –为 True 时记录,为 False 时不记录
方法