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

使用QLoRA微调Gemma2B模型时遇TrainingArguments属性错误求助

错误解决方案:AttributeError: 'TrainingArguments' object has no attribute 'model_init_kwargs'

这个错误的核心原因是**trl库版本与transformers库不兼容**——新版本的SFTTrainer要求传入的训练配置是SFTConfig而非TrainingArguments,而旧版本的TrainingArguments并没有model_init_kwargs属性。

以下是两种可行的解决方法:

方法一:改用SFTConfig配置训练参数

SFTConfig是trl库专门为SFTTrainer设计的配置类,继承自TrainingArguments,天然兼容SFTTrainer的所有需求。

  1. 首先在导入库的部分添加SFTConfig:
from trl import SFTTrainer, SFTConfig  # 新增SFTConfig导入
  1. 将原来的TrainingArguments替换为SFTConfig:
output_dir = "Gemma2B_finetune_QLoRA"
per_device_train_batch_size = 1
per_device_eval_batch_size = 1
gradient_accumulation_steps = 8
logging_steps = 5
learning_rate = 5e-4
max_grad_norm = 1.0
max_steps = 250
num_train_epochs=10
warmup_ratio = 0.1
lr_scheduler_type = "cosine"
max_seq_length = 2048

# 替换TrainingArguments为SFTConfig
training_config = SFTConfig(
    output_dir=output_dir,
    per_device_train_batch_size=per_device_train_batch_size,
    per_device_eval_batch_size=per_device_eval_batch_size,
    gradient_accumulation_steps=gradient_accumulation_steps,
    save_strategy="no",
    evaluation_strategy="epoch",
    logging_steps=logging_steps,
    learning_rate=learning_rate,
    max_grad_norm=max_grad_norm,
    weight_decay=0.1,
    warmup_ratio=warmup_ratio,
    lr_scheduler_type=lr_scheduler_type,
    fp16=True,
    report_to=["tensorboard", "wandb"],
    hub_private_repo=True,
    push_to_hub=True,
    num_train_epochs=num_train_epochs,
    gradient_checkpointing=True,
    gradient_checkpointing_kwargs={"use_reentrant": False}
)
  1. 创建SFTTrainer时传入新的training_config:
trainer = SFTTrainer(
    model=model,
    args=training_config,  # 替换为training_config
    train_dataset=dataset["train"],
    eval_dataset=dataset["test"],
    tokenizer=tokenizer,
    packing=True,
    dataset_text_field="content",
    max_seq_length=max_seq_length,
    # 注意:你已经手动将模型转为PEFT模型,这里可以不用再传peft_config
    dataset_kwargs={
        "append_concat_token": False,
        "add_special_tokens": False,
    },
)

方法二:降级trl库到兼容版本

如果你不想修改代码结构,可以将trl库降级到仍支持TrainingArguments的版本,比如0.7.10:

pip install trl==0.7.10 --force-reinstall

额外优化建议

你的代码中已经手动加载模型并应用了peft_config(通过get_peft_model),因此在创建SFTTrainer时无需重复传入peft_config,避免潜在的冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:14:57