stage: sft # 定义本次运行处于哪一训练流程，取值 `sft` 表示监督式微调流程
model_name_or_path: ./Qwen2.5-1.5B # 模型路径，需要关注相对路径和绝对路径
template: qwen #  对齐 Qwen 聊天模板与特殊 token，避免提示词不兼容导致的训练/推理偏差。
do_train: true #  控制是否执行训练流程。取 `true` 开启训练，不触发纯推理路径。

finetuning_type: lora # 决定更新哪些参数。取 `lora` 仅训练 LoRA 适配器，显著降低显存与计算开销。
lora_target: all # 指定 LoRA 注入哪些投影层。取 `all` 覆盖注意力/MLP 关键层，在 1.5B 上额外显存可接受，泛化更好。若显存紧张，可考虑仅 q_proj,v_proj。
lora_rank: 16 # LoRA秩，控制适配器容量与表达力，16 在小模型/小显存下是常用稳点
lora_alpha: 32 # LoRA缩放系数，通常设为约 2×rank，有助于稳定与收敛速度。 scale = lora_alpha / lora_rank = 2
lora_dropout: 0.1 # 仅作用于 LoRA 路径的正则，小规模数据（如 SST-2）易过拟合，取 `0.1` 可抑制小数据集过拟合。

dataset_dir: ./data/sst2 # 明确数据来源与子集，便于快速切换不同规模数据。
dataset: sst2_train_small # 小规模数据集，用于快速验证
cutoff_len: 512 # 控制输入文本的截断长度，避免过长序列的显存浪费

output_dir: /root/autodl-tmp/output/sft_qwen_lora # 模型权重的输出目录

num_train_epochs: 1 # 训练轮数，同火山微调。此处与 `max_steps=10` 搭配用于快速连通性验证，不追求收敛。
max_steps: 10 # 最大训练步数，取 `10` 迅速验证算子/显存/日志是否正常。
per_device_train_batch_size: 1 # 每个设备上训练的批次大小，直接决定显存峰值，减少批次大小可以显著降低显存消耗，但是会延长训练时间
gradient_accumulation_steps: 1 # 梯度累积步数，放大有效批大小。取 `1` 以最快速反馈；正式训练可调大以稳梯度。
learning_rate: 0.00003 # 学习率，同火山微调
warmup_ratio: 0.0 # 预热比例，同火山微调
lr_scheduler_type: linear # 学习率随步数的变化策略，取 `linear` 线性退火，是通用稳健默认。

save_steps: 5 # 多少步保存一次检查点，取 `5` 便于观察早期训练动态。
save_total_limit: 2 # 最多保留的检查点数量。取 `2` 控制磁盘占用。
logging_steps: 1 # 多少步打印一次日志。取 `1` 以便第一时间发现异常。
logging_first_step: true # 是否在第 1 步打印日志。取 `true` 立即校验配置/数据路径。
report_to: none # 日志上报，关闭外部追踪（如 W&B），减少依赖与开销。

# 关键稳定项，避免卡死/排序耗时
fp16: true # 开启FP16 
bf16: false
dataloader_num_workers: 0 # DataLoader 进程数加载并发，某些容器/远程盘环境多进程易死锁，先保守设定确保稳定。
preprocessing_num_workers: 4 # 预处理并发，分词/预处理并行度。适度并行预处理，加速数据读写与分词
group_by_length: false # 同长样本分桶，关闭长度分组可减少前期排序开销，启动更快。正式可置 `true` 提升吞吐/降显存。
gradient_checkpointing: false #  梯度检查点，以算换存。LoRA 显存占用低，关闭以换取更高吞吐。
remove_unused_columns: false # 是否丢弃数据集中未被模型用到的字段，false 保留数据集全部字段，避免 HF 管道误删导致的对齐问题。
seed: 42 # 随机种子，固定随机性，便于复现实验结果。
