Huggingface的日志系统和Python 标准日志系统的区别-模型训练论坛-模型训练-社区 | AheadAI
幻灯片-社区 | AheadAI
图标卡片
这是一个图标卡片示例
原创作品
这是一个图标卡片示例
灵感来源NEW
这是一个图标卡片示例
系统工具 GO
这是一个图标卡片示例

Huggingface的日志系统和Python 标准日志系统的区别

我们在学习或者开发大模型的时候,经常会用到Huggingface的模型和工具,甚至Huggingface有专门的log系统。那么它和传统的Python标准日志有神区别呢?

1. 什么是 Huggingface?

Huggingface 是一个专门做自然语言处理(NLP)的开源平台,提供了很多现成的模型和工具。就像一个”模型商店”,你可以直接用他们的模型来做文本生成、翻译等任务。

最常用的是他们的 transformers 库,包含了:

from transformers import AutoTokenizer, AutoModelForCausalLM  # 用于加载模型
from transformers import Trainer, TrainingArguments  # 用于训练模型

2. Python 标准日志系统 (logging)

这是 Python 自带的记录日志的工具,就像写日记一样,记录程序运行过程中的各种信息。

基础使用:

import logging
​
# 1. 最简单的使用
logging.basicConfig(filename='my_log.txt', level=logging.INFO)
logging.info("这是一条日志")  # 会写入 "这是一条日志" 到 my_log.txt
​
# 2. 详细配置
logging.basicConfig(
   filename='my_log.txt',        # 日志文件名
   level=logging.INFO,           # 日志级别
   format='%(asctime)s - %(message)s',  # 日志格式:时间 - 消息
   filemode='a'                  # a 表示追加模式,w 表示覆盖模式
)
​
# 3. 不同级别的日志
logging.debug("调试信息")    # 最低级别,记录详细的调试信息
logging.info("普通信息")     # 记录程序正常运行的信息
logging.warning("警告信息")  # 记录可能的问题
logging.error("错误信息")    # 记录错误,但程序还能运行
logging.critical("严重错误") # 记录可能导致程序崩溃的错误

实际例子:

import logging
​
# 配置日志
logging.basicConfig(
   filename='training.log',
   level=logging.INFO,
   format='%(asctime)s - %(levelname)s - %(message)s'
)
​
# 记录训练过程
logging.info("开始训练模型")
for epoch in range(3):
   loss = 0.5  # 假设这是训练损失
   logging.info(f"Epoch {epoch}, Loss: {loss}")
logging.info("训练完成")
​
# 日志文件内容会像这样:
# 2024-11-23 14:30:00 - INFO - 开始训练模型
# 2024-11-23 14:30:01 - INFO - Epoch 0, Loss: 0.5
# 2024-11-23 14:30:02 - INFO - Epoch 1, Loss: 0.5
# 2024-11-23 14:30:03 - INFO - Epoch 2, Loss: 0.5
# 2024-11-23 14:30:04 - INFO - 训练完成

3. Huggingface 的日志系统

这是专门为机器学习训练设计的日志系统,自动记录训练过程中的各种指标。

基础使用:

from transformers import TrainingArguments, Trainer
​
# 1. 配置训练参数
training_args = TrainingArguments(
   output_dir="./results",     # 输出目录
   logging_dir="./logs",       # 日志目录
   logging_steps=100,          # 每100步记录一次日志
   save_steps=500,            # 每500步保存一次模型
   num_train_epochs=3         # 训练3轮
)
​
# 2. 使用Trainer训练
trainer = Trainer(
   model=model,               # 你的模型
   args=training_args,        # 训练参数
   train_dataset=dataset      # 训练数据
)
​
# 3. 开始训练,Huggingface会自动记录日志
trainer.train()

4. 两者的主要区别:

  1. 适用场景

    • Python logging:像记日记一样,可以记录任何信息

    • Huggingface:专门记录模型训练过程中的数据(loss、准确率等)

  2. 使用难度

    • Python logging:需要自己写想记录什么

    • Huggingface:自动记录训练信息,不需要自己写

  3. 灵活性

    • Python logging:完全自由,想怎么记录都可以

    • Huggingface:格式相对固定,主要记录训练相关的数据

5. 实际使用建议:

如果你在:

  1. 写普通的Python程序:用 Python logging

  2. 训练机器学习模型:用 Huggingface 的日志系统

  3. 训练模型但想记录更多信息:两者结合使用

比如结合使用的例子:

import logging
from transformers import Trainer
​
class MyTrainer(Trainer):
   def __init__(self, *args, **kwargs):
       super().__init__(*args, **kwargs)
       # 配置Python logging
       logging.basicConfig(filename='custom_log.txt', level=logging.INFO)
       
   def train(self, *args, **kwargs):
       logging.info("开始训练")  # 用Python logging记录额外信息
       super().train(*args, **kwargs)  # Huggingface自动记录训练指标
       logging.info("训练结束")

 

请登录后发表评论

    没有回复内容