You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HuggingFace Transformers报logging_steps参数非零错误如何解决

HuggingFace Transformers微调TrainingArguments参数报错修复

问题复现

微调预训练模型时使用的TrainingArguments配置代码如下:

training_args = TrainingArguments(
    output_dir='./.checkpoints',
    num_train_epochs=config.n_epochs,
    per_device_train_batch_size=config.batch_size_per_device,
    per_device_eval_batch_size=config.batch_size_per_device,
    warmup_steps=n_warmup_steps,
    weight_decay=0.01,
    fp16=True,
    evaluation_strategy='epoch',
    save_strategy='epoch',
    logging_steps=n_total_iterations // 100,
    save_steps=n_total_iterations // config.n_epochs,
    load_best_model_at_end=True, 
)

运行后抛出错误栈:

File "finetune_plm_hftrainer.py", line 134, in main
    load_best_model_at_end=True,
  File "<string>", line 90, in __init__
  File "/usr/local/lib/python3.6/dist-packages/transformers/training_args.py", line 813, in __post_init__
    raise ValueError(f"logging strategy {self.logging_strategy} requires non-zero --logging_steps")
ValueError: logging strategy IntervalStrategy.STEPS requires non-zero --logging_steps

错误原因

  • TrainingArguments默认的日志记录策略为IntervalStrategy.STEPS,该策略要求传入的logging_steps参数必须为非零正整数
  • 现有代码中logging_steps取值通过n_total_iterations // 100计算得到,当训练总迭代数n_total_iterations小于100时,整数除法结果为0,触发参数校验逻辑抛出错误
  • 配置中evaluation_strategy和save_strategy均设为epoch,且开启了load_best_model_at_end=True,该部分配置符合规则,无问题。

修复方法

根据实际日志记录需求选择对应方案即可:

  • 保留原有按步记录日志、每训练1%进度打印一次日志的逻辑,给计算结果加最小值兜底,避免出现0值:
logging_steps=max(1, n_total_iterations // 100),
  • 不需要按步记录日志时,可直接将日志策略调整为按epoch触发,和现有评估、保存策略对齐,无需手动计算步数:
# 新增该配置项,可删除原logging_steps配置
logging_strategy='epoch',
  • 有固定日志间隔需求时,直接给logging_steps传入固定正整数值即可,比如每10步打印一次日志:
logging_steps=10,

修改完成后重新运行训练脚本,即可通过参数校验,正常启动训练流程。

内容的提问来源于stack exchange,提问作者UNGGI LEE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 22:54:25