趋近智
观察模型的学习过程是训练环节的核心部分。运行训练脚本而不观察其内部状态,就像是蒙着眼睛开车。你需要持续的反馈流来验证模型是否真正学会了目标任务,而不仅仅是背下了数据集。
微调 (fine-tuning)过程中的主要信号是损失函数 (loss function)。对于因果语言模型(Causal Language Models),这通常是交叉熵损失(Cross-Entropy Loss)。它衡量模型预测的标记 (token)概率与数据集中实际下一个标记之间的差异。损失越低,意味着模型的预测与预期文本越接近。
为了准确了解模型性能,我们会跟踪两个不同的损失值:训练损失和验证损失。训练损失是在模型正在学习的数据上计算的;验证损失则是在模型从未用于权重 (weight)更新的独立保留数据集上计算的。这两个指标之间的关系直接反映了模型对未见指令的泛化效果。
损失曲线显示了在第 600 步左右,模型从良性学习转变为死记硬背的状态。
解读这两条曲线之间的差距是机器学习 (machine learning)中的必备技能。在训练过程中,你通常会观察到以下三个阶段之一:
虽然损失提供了原始的优化信号,但语言建模通常依靠困惑度(Perplexity)来提高人类可读性。困惑度是交叉熵损失的指数形式:
其中 是交叉熵损失。困惑度越低,表示模型对评估数据的“惊讶”程度越低。如果你的验证损失是 1.72,那么验证困惑度大约是 5.58。跟踪困惑度可以直观地感受模型生成文本时的自信程度。
要实现这种监控,你必须在训练脚本中配置日志参数 (parameter)。当在 TrainingArguments 中提供正确参数时,Hugging Face 的 Trainer 类会自动处理这些工作。你需要通过评估策略指定计算这些指标的频率。
from transformers import TrainingArguments
# 配置训练参数
training_args = TrainingArguments(
output_dir="./slm-outputs",
eval_strategy="steps", # 评估策略设为按步数
eval_steps=100, # 每 100 步评估一次
logging_strategy="steps", # 日志策略设为按步数
logging_steps=50, # 每 50 步记录一次日志
report_to="tensorboard", # 上报至 TensorBoard
per_device_train_batch_size=4,
per_device_eval_batch_size=4
)
在此配置中,logging_steps=50 指示训练器每 50 步记录一次训练损失。eval_steps=100 参数规定训练器每 100 步会暂停优化,在验证数据集上运行一次完整的正向传播并计算验证损失。
日志记录过于频繁会因为不断读写数据而减慢训练速度;记录太少则可能错过过拟合开始的确切时间点。通用的做法是每个周期(epoch)计算 10 到 20 次评估指标。
请注意配置中的 report_to 参数。在长时间的训练运行中,将指标输出到标准终端会变得难以阅读。Hugging Face 原生支持 TensorBoard 和 Weights & Biases 等外部跟踪工具。这些工具可以捕获数值日志并渲染出交互式仪表盘,让你能够实时观察曲线变化。
通过持续观察这些指标,你将从被动地运行脚本转变为主动管理模型优化过程。这种监控设置能直接告诉你何时该停止训练,并确保你在测试生成质量之前,提取出微调权重中性能最出色的版本。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•