🌟LLM的预训练tricks
- 使用“base”模型进行继续预训练(而不是“chat”模型),“base”模型的能力是最好的,因为还没有进行人类价值观的对齐训练。
- 缩放定律(Scaling law)是非常重要的,Scaling law不仅适用于LLM的预训练,也适用于有监督微调阶段的训练。
- 对于预训练过程的超参数设置(Batch size / 学习率)应当参考来自其他论文或者先前工作的一些设置。
- 继续预训练需要百万,千万甚至上亿的tokens训练语料,过少的训练语料不支持进行预训练工作。
- 多阶段的继续预训练可能是非常有用的,具体可参考Ziya2的工作。
- 词表扩充通常是不必要的,除非你的语种真的属于小语种或者语种发生了与原tokenizer模型发生了根本性改变。
- 继续预训练 LLM 会导致遗忘原有的知识,为了避免这种灾难性遗忘,有一些简单的8. 小技巧: 在训练语料中加入通用知识相关的语料;模型筛选或早停,选择新旧知识的平衡点;
🌟LLM的监督微调tricks
- 数据质量非常重要,GPT-4是一个很好的数据标注工具。制造数据应当有现实的数据支持,全部的生成数据将促使“幻觉”问题的出现。
- 如果你的微调数据很小(例如几百条),可以使用“chat”模型进行监督微调,较大的微调数据可以使用“base”模型进行监督微调。
- 为了保持模型的一些原有能力,在监督微调阶段仍然需要融入一些通用的监督数据,而且通常情况下,通用监督数据数量是多于领域监督数据的(例如在训练医疗LLM时需要混合比医疗数据更多的通用监督数据)。
- QLoRA有时候表现比LoRA的微调效果表现更好。
- 监督微调过程通常不是为了给LLM注入更多知识,而是激活模型的对话能力,学习新知识通常在预训练阶段完成。如果不得不在监督微调阶段注入新知识,那么对于一条知识,则需要对应几十条不同的监督数据构造才能注入到LLM这条知识。
- 监督微调阶段没有最好的参数设置,这个过程需要多次的实验设置最好的参数。
不要相信跑分,这个很重要。跑分目前无法准确的判断大模型的逻辑能力,上下文整理能力,目前开源的测试方式,是需要优化升级的。 - qwen1.5系列,在微调的时候,请尽量用单次样本8k及以上的 tokens进行微调,数据不符合的,可以自己整理。经过实战,短文(低于单次8k)微调会严重破坏qwen原生的逻辑整理能力。也不要完全相信微调后的跑分,本人测试多次跑分提示都提高了,困惑度也降低了,实际使用能力会下降。
- SFT模型的能力的上限是PT阶段决定的,所以针对特别具体的垂直领域还是要进行PT。
- 对应人类多维度的偏好,对应多步骤的RL微调,可以显著降低偏好冲突。
🌟什么时候监督微调?
- 对于对回答准确度要求不高的客户,例如情感类、咨询类或陪聊类客户,可以选择只进行Lora微调。
- 当您对回答的语言风格不满意时,例如通用大模型的回答缺乏个性,而您需要一个特定的人设时。
- 当您的领域是一个细分领域,并且有许多专业名词时,Lora微调可以让回答更加专业。
- 当您需要对问答库进行总结和润色,而不是原封不动地返回正确答案时。