修改训练配置记录

1.learning_rate:

        作用: 学习率。

        修改影响: 调整此值可以显著影响模型的训练速度和最终性能。

在train.py代码的设置训练配置中:

trainer = SFTTrainer(
    model=model,
    tokenizer=tokenizer,
    train_dataset=dataset,
    dataset_text_field="text",
    max_seq_length=max_seq_length,
    dataset_num_proc=2,
    args=TrainingArguments(
        per_device_train_batch_size=4,
        gradient_accumulation_steps=8,
        warmup_steps=20,
        max_steps=2000,
        learning_rate=5e-5,
        fp16=not is_bfloat16_supported(),
        bf16=is_bfloat16_supported(),
        logging_steps=1,
        optim="adamw_8bit",
        weight_decay=0.01,
        lr_scheduler_type="linear",
        seed=3407,
        output_dir="outputs",
        #save_strategy="no"
    ),
)

尝试过将learning_rate=5e-5,这一配置项修改为3e-4以及比5e-5更大的学习率如:6e-5,7e-5等

2.r:

        r: LoRA 的秩(rank),控制低秩适配的维度。选择大于0的数(如8, 16, 32等)会影响模型的表现和训练效率。更大的值可能会捕捉更多的特征,但会增加训练时间和内存消耗。

        作用:增加 r 可以使模型更好地适应复杂数据,但可能导致训练时间增加;降低 r 则可能加快训练,但风险是捕捉到的信息可能不足。

model = FastLanguageModel.get_peft_model(
    model,
    r = 16, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128
    target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
                      "gate_proj", "up_proj", "down_proj",],
    lora_alpha = 16,
    lora_dropout = 0, # Supports any, but = 0 is optimized
    bias = "none",    # Supports any, but = "none" is optimized
    # [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes!
    use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long context
    random_state = 3407,
    use_rslora = False,  # We support rank stabilized LoRA
    loftq_config = None, # And LoftQ
)

        在这里,我尝试过将r改为8和32

3.lora_alpha和lora_dropout:

        lora_alpha: LoRA 的缩放因子。它控制在训练过程中 LoRA 参数的影响程度。较大的值可能会使得适配更加灵活,但也可能导致过拟合。

         lora_dropout: LoRA 的 dropout 概率,设为0表示不使用 dropout。使用 dropout 可以提高模型的泛化能力,但过高的 dropout 可能会影响学习效果。

        在上述代码中尝试过将 lora_alpha = 16,lora_dropout = 0, 改为 lora_alpha = 32,lora_dropout = 0.05

你可能感兴趣的:(深度学习,人工智能,机器学习)