【Hugging Face】transformers 库中的 logging: 日志管理模块

Hugging Face transformers 库中的 logging

transformers.logging 是 Hugging Face transformers 库提供的 日志管理模块,用于 控制日志级别、调试信息、抑制冗余输出,适用于 模型加载、训练、推理等场景


1. 为什么使用 transformers.logging

在使用 transformers 进行模型训练和推理时,控制日志输出有助于:

  • 调试模型加载、训练问题
  • 减少不必要的日志输出,提高可读性
  • 调整日志级别,获取更多或更少的信息
  • 兼容 logging 模块,统一管理日志

2. logging 的基本用法

2.1. 导入 logging

from transformers import logging

2.2. 设置日志级别

logging.set_verbosity_info()  # 设置信息级别(默认)

或者:

logging.set_verbosity_debug()  # 设置调试级别(详细日志)
logging.set_verbosity_warning()  # 仅显示警告及以上日志
logging.set_verbosity_error()  # 仅显示错误及以上日志

2.3. 禁用日志

如果你不想打印任何日志:

logging.set_verbosity_error()  # 仅保留错误信息
logging.disable_default_handler()  # 禁用默认日志

3. 日志级别对比

级别方法作用
调试logging.set_verbosity_debug()显示所有日志(详细信息)
信息logging.set_verbosity_info()显示关键加载信息(默认)
警告logging.set_verbosity_warning()仅显示警告及以上日志
错误logging.set_verbosity_error()仅显示错误信息
禁用logging.disable_default_handler()关闭所有 transformers 日志

4. 示例:调整日志级别

from transformers import logging

# 设置信息级别(默认)
logging.set_verbosity_info()

# 加载模型时观察日志
from transformers import AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")

输出示例

Some weights of the model checkpoint at bert-base-uncased were not used when initializing BertForSequenceClassification...

如果改为 调试级别

logging.set_verbosity_debug()

输出示例(更多细节)

loading configuration file config.json from cache at ...
loading weights file pytorch_model.bin from cache at ...

5. 结合 logging 进行调试

如果想要 记录 transformers 日志到文件

import logging
from transformers import logging as hf_logging

# 配置 Python logging
logging.basicConfig(
    filename="transformers_debug.log",
    filemode="w",
    format="%(asctime)s - %(levelname)s - %(message)s",
    level=logging.DEBUG
)

# 让 transformers 也使用这个 logging
hf_logging.set_verbosity_debug()
hf_logging.enable_default_handler()
hf_logging.enable_explicit_format()

6. loggingTrainer 训练中的应用

当使用 Trainer 训练时,可以调整日志级别:

from transformers import TrainingArguments

training_args = TrainingArguments(
    output_dir="./results",
    logging_dir="./logs",
    logging_strategy="steps",  # 每隔几步记录日志
    logging_steps=10,  # 每 10 步记录一次日志
)

# 设置信息级别
from transformers import logging
logging.set_verbosity_info()

这样可以在训练过程中 减少冗余日志,或在调试时 增加日志输出


7. transformers.logging vs Python logging

功能transformers.loggingPython logging
适用于 transformers
控制 transformers 日志级别
记录到日志文件✅(使用 logging.basicConfig
统一管理整个项目日志

如果你的 项目中有多个日志系统,建议:

  1. transformers.logging 控制 transformers 相关日志
  2. 用 Python logging 进行全局日志管理

8. 总结

  1. transformers.logging 用于控制 transformers 库的日志级别,适用于 模型加载、训练、推理 等场景。
  2. 支持 debuginfowarningerror 等日志级别,可以 减少不必要的日志输出
  3. 可与 Python logging 结合使用,实现 日志管理和文件存储
  4. Trainer 训练时,可以设置 logging_steps 控制日志频率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值