Qwen2.5:模型训练和推理核心参数介绍

详细介绍:https://mp.weixin.qq.com/s/0zLHA_VQkD3tf0BSzjd7Ag

一、 remove_columns 删除选定的列

作用:去掉原始数据集里面的字段以及对应的数据。

原因:如果不去掉,在进行微调时,模型就会将数据集原始字段和新加的字段一起输入到模型,导致格式与期望的不一致。

二、 TrainingArguments 核心参数

2.1 基础训练设置

参数

介绍

output_dir (str)

模型和日志的输出目录(必需参数)

max_steps (int)

训练总步数(默认 -1)

num_train_epochs (int)

训练的总轮数(默认 3)

per_device_train_batch_size (int)

每个设备的训练批次大小(如 8)

learning_rate (float)

初始学习率(默认 5e-5

weight_decay (float)

权重衰减系数(L2 正则化,默认 0.0)

gradient_accumulation_steps (int)

梯度累积步数(用于小显存场景,默认 1)

参数关系与计算

  • 有效批次大小公式

  • Effective Batch Size = per_device_train_batch_size * num_devices * gradient_accumulation_steps

  • GPU场景num_devices=1,有效批次仅由前两个参数决定。

  • GPU分布式训练:例如,--nproc_per_node=4(4个GPU)时,全局有效批次为单卡批次的4倍。

  • 实例

    # 示例1:单卡训练,有效批次=8*1*2=16 
    per_device_train_batch_size=8 
    gradient_accumulation_steps=2 
    
    # 示例2:4卡训练,有效批次=8*4*1=32 
    per_device_train_batch_size=8 
    gradient_accumulation_steps=1

    计算 max_steps 的方法

    数据集大小:假设数据集有 N 个样本。

    每步的样本数:per_device_train_batch_size * gradient_accumulation_steps。

    总步数:max_steps = ceil(N / (per_device_train_batch_size * gradient_accumulation_steps))。

    2.2 优化器与调度器

    参数

    含义

    optim (str)

    优化器类型(如 "adamw_torch", "adamw_hf", "sgd")

    lr_scheduler_type (str)

    学习率调度策略(如 "linear", "cosine", "constant")

    warmup_ratio (float)

    学习率预热的比例(如 0.1,即前 10% 的步数预热)

    warmup_steps (int)

    直接指定预热步数(与 warmup_ratio 二选一)

    2.3 硬件与性能

    参数

    介绍

    fp16 (bool)

    是否启用混合精度训练(适用于 NVIDIA GPU,默认 False)

    bf16 (bool)

    是否启用 BFloat16 混合精度(适用于 Ampere+ GPU 或 TPU,默认 False)

    gradient_checkpointing (bool)

    是否使用梯度检查点节省显存(默认 False)

    torch_compile (bool)

    是否启用 PyTorch 2.0 的模型编译加速(默认 False)

    group_by_length (bool

    是否将训练数据集中长度大致相同的样本分组在一起(以最大限度地减少所应用的填充并提高效率)(默认 False)

    2.4 日志与保存

    参数

    介绍

    logging_dir (str)

    日志保存目录(默认与 output_dir 一致)

    logging_steps (int)

    每隔多少步记录一次日志(如 100)

    save_total_limit (int)

    最多保留的模型检查点数量(默认 None,即全部保留)

    2.5 分布式训练

    参数

    介绍

    ddp_find_unused_parameters (bool)

    是否检测未使用的参数(分布式训练专用)

    deepspeed (str)

    DeepSpeed 配置文件路径(用于启用 DeepSpeed 优化)

    2.6 评估与测试

    参数

    介绍

    eval_accumulation_steps (int)

    将评估过程拆分为多个小步骤(mini-steps),通过分批次计算和累积结果,减少单次显存占用。如果未设置,则在移动到CPU之前,在GPU/NPU/TPU上累积所有预测(更快,但需要更多内存)

    per_device_eval_batch_size (int)

    每个设备的评估批次大小(如 8)

    metric_for_best_model (str)

    训练结束后是否加载最佳模型(默认 False)

    eval_strategy (str)

    控制训练过程中何时在验证集上评估模型性能(默认 no)

    save_strategy (str)

    训练期间采用的检查点保存策略(默认 no)

    eval_steps (int)

    每隔多少步评估一次(需 evaluation_strategy="steps")

    save_steps (str)

    指定模型每间隔多少步骤进行保存(默认 500)

    greater_is_better (bool)

    判断评估指标越大还是越小来表示模型性能越好还是越差,该指标的True与Fasle必须与metric_for_best_model中指定的参数对应

    显存优化机制: 假设评估批次大小为 eval_batch_size,设置 eval_accumulation_steps=2 时,实际会将每个批次的评估拆分为 2 个子步骤:

    • 通过分步累积,显存峰值降低为原来的 1/N。

    原始批次显存需求 → [eval_batch_size, seq_len, hidden_size]
    分步后显存需求 → [eval_batch_size/2, seq_len, hidden_size]
    from transformers import TrainingArguments
    
    training_args = TrainingArguments(
        output_dir="output",
        eval_accumulation_steps=2,
        eval_strategy="steps",       # 启用基于步骤的评估
        eval_steps=500,              # 每500步评估一次
        save_strategy="steps",       # 保存策略与评估对齐
        save_steps=500,              # 保存间隔=评估间隔
        load_best_model_at_end=True, # 训练结束时加载最佳模型
        metric_for_best_model="eval_loss",
        greater_is_better=False,     # 损失越低越好
    )

    三、 generate 核心参数

    3.1 控制生成长度

    参数

    介绍

    max_length (int)

    生成文本的最大总长度(包括输入上下文)

    max_new_tokens (int)

    生成的新 token 的最大数量(不包含输入长度)

    min_length (int)

    生成文本的最小长度

    early_stopping (bool)

    是否在达到 num_beams 束后提前停止生成

    repetition_penalty (float)

    对重复 token 的惩罚系数(>1 降低重复,<1 增加重复)

    3.2 采样策略

    参数

    介绍

    do_sample (bool)

    是否使用采样贪婪搜索(Greedy Search)或束搜索(Beam Search)(默认 False,即贪婪搜索)

    temperature (float)

    调整采样随机性(值越大越随机,值小则更确定)

    top_k (int)

    仅从概率最高的前 k 个 token 中采样

    top_p (float)

    核采样(nucleus sampling),仅从累积概率超过 p 的最小 token 集合中采样

    num_return_sequences (int)

    返回的独立生成序列数量(需配合采样或束搜索使用)

    3.3 束搜索(Beam Search)

    参数

    介绍

    num_beams (int)

    束搜索的束宽(默认 1,即贪婪搜索)

    no_repeat_ngram_size (int)

    禁止重复的 n-gram 长度(如设为 2 则不会重复出现相同的二元组)

    length_penalty (float)

    长度惩罚系数(>1 鼓励长文本,<1 鼓励短文本)

    3.4 高级控制

    参数

    介绍

    pad_token_id

    指定填充符的 ID

    eos_token_id

    指定结束符的 ID

    output_scores (bool)

    是否返回每个步骤的预测分数

    return_dict_in_generate (bool)

    是否以字典形式返回完整生成信息

    • pad_token_id, eos_token_id: 指定填充符和结束符的 ID。

    • output_scores (bool): 是否返回每个步骤的预测分数。

    • return_dict_in_generate (bool): 是否以字典形式返回完整生成信息。

    四、 Trainer 核心参数

    4.1 核心组件配置

    参数

    介绍

    model

    待训练/评估的模型

    args

    训练超参数配置

    callbacks

    训练过程回调函数,如添加早停(EarlyStoppingCallback)、日志上传回调

    compute_loss

    自定义损失计算函数

    optimizers

    自定义优化器和调度器

    compute_metrics

    自定义评估指标计算

    preprocess_logits_for_metrics

    Logits 预处理函数(显存优化),以降低显存占用

    4.2 数据集配置

    参数

    介绍

    train_dataset

    训练数据集

    eval_dataset

    评估数据集(支持多数据集)

    data_collator

    批次数据整合器

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值