Post-pretrain最佳实践
本内容为您提供了Post-pretrain的支持文档,引导并指引当前聚焦问题,使得您方便并快速应用Post-pretrain。
流程大纲
一、识别应用场景
什么时候我们考虑使用Post-pretrain?有以下几点:
1.有大量高质量(Billion级tokens)的行业预训练语料;
2.有少量指令集(千条数据),或有自主构建指令集的能力;
3.了解post-pretrain全流程(垂直领域Post-pretrain、通用SFT、垂直领域SFT),且接受平台计费。
希望能在大模型中注入领域知识,增强模型领域专业性,可推荐使用Post-pretrain。
若仅有少量高质量语料或费用敏感用户,建议考虑知识库管理方法,学习领域知识。
垂类场景(部分场景、仅供参考)
在以上的垂类场景中,Post-pretrain能做到:
1.提升领域专业性:垂类领域有其独特的专业术语、上下文和特定问题。利用这些领域语料进行 post-pretrain,可以使模型更好地理解和生成与该领域相关的内容;
2.提高模型性能:通过在相关领域的数据上进行Post-pretrain,模型可以更好地捕捉领域特定的语义和语境,提高在特定领域的性能和效果。
3.降低误解的风险:领域专业性的微调有助于降低模型对特定术语或上下文的误解,更好地确保模型输出的准确性。
注意:特定领域的数据质量和多样性是关键因素,需要确保模型不会因为特定数据的过度拟合而失去泛化能力。
二、数据准备
要在特定领域使用post-pretrain方法训练一个大模型,关键是准备与该领域相关的高质量语料。以下是一些关于语料的指导原则:
- 数据质量方面:
a. 语义高质量:
i. 清洗和去重: 通过数据清洗和去重,消除噪声、冗余、无关和潜在有害的数据,是pretrain/post-pretrain语料的一般要求。
b. 内容高质量:
i. 领域专业性数据: 包含领域内常见的专业术语和词汇,以确保模型能够正确理解和使用这些术语。例如,在金融领域,包括金融教材、公司公告、研究报告等;在医疗领域,包括临床文献、病历记录、药品说明书等。
ii. 多样性和广泛性: 确保语料库涵盖特定领域内的各种场景、主题和任务。这有助于模型更全面地理解领域内的多样性。
iii. 合规性和隐私: 确保数据的收集和使用符合法规和伦理标准。特别是在医疗领域,需要格外谨慎处理患者数据,并确保遵循相关隐私法规。 - 数据规模方面:
建议至少10亿 tokens 语料。但post-pretrain所需的语料库量是一个复杂的问题,因为它受到多个因素的影响,包括任务的复杂性、领域的专业性、模型的规模等,因此在实际应用中,可以根据模型的表现调整语料规模。
在准备与领域相关的高质量语料,本平台提供了全面、易用的工具链帮助用户快速构建高质量数据:
1. 预置数据集
预置数据集使用场景:
- 若希望增强模型的通用能力,可在自有领域语料的基础上,结合实际需求添加平台预置通用预训练语料(注:【混合语料】包含部分通用语料,不建议重复选择);
- 若希望增加模型的领域能力,可在自有领域语料的基础上,结合实际需求添加平台预置的领域预训练语料(计划中);
2. 数据分析
对于用户的领域相关语料,平台提供了数据分析的功能,可以对文本数据进行分布统计和质量检查,输出领域语料的整体分布和质量情况。
3. 数据清洗
在数据分析的过程中,如果发现一些低质量的文本,可以在数据清洗pipeline中选择对应的清洗算子,修复或者去除低质量的语料,提高数据质量。
一些常见问题与解答
提问:可不可以复制数据进行训练? |
答:不可以,重复的数据对模型训练没有额外增益,甚至是有害的,而且复制的数据会耗费额外的计算资源,导致训练速度变慢,因此在准备数据的时候需要去除重复的数据。
提问:1B tokens的语料大概是多少条?B与字数的关系是什么? |
答:B指Billion,1B tokens即10亿 tokens,约等于13.3亿个汉字。
三、配置项
1 配置超参数
pretrain/post-pretrain阶段,Epoch默认为1。
一些常见问题与解答
提问:Epoch大于1有风险么? |
答:Epoch等价于数据重复的次数。目前的实验表明,post-pretrain阶段重复的数据对模型训练没有额外增益,甚至是有害的,而且复制的数据会耗费额外的计算资源,导致训练速度变慢,故平台默认值为1。
提问:学习率需要如何调整? |
答:学习率(LearningRate)是在梯度下降的过程中更新权重时的超参数,学习率过高会导致模型难以收敛,并且会加快遗忘,同时增加训练的不稳定性。学习率过低则会导致模型收敛速度过慢,平台已给出默认推荐值,如果没有专业的调优经验,推荐使用默认值。
2 数据配置相关
关于混合训练:仅用单一领域数据进行模型训练,模型很容易出现灾难性遗忘现象,其他领域的能力出现下降。在领域训练过程中加入通用数据进行混合训练,在增强用户垂类场景能力的同时,保持其原本的通用能力。
使用建议:
- 若用户仅需要使用指定垂类场景下的能力,可以直接进行训练。
- 若用户需要模型保持通用能力的同时,提升垂类场景的能力,可以选择数据配比进行混合训练。
默认配比为1:5,即1份领域数据: 5份通用语料。
关于预置数据集信息:预置了100Billion tokens的通用语料,广泛地搜集了不同来源的各类中英文公开数据,包括书籍、网页、论文、代码、传统的NLP数据集等不同类型,并进行了深度清洗,保证了数据的多样性和高质量。
一些常见问题与解答
提问:我们为什么推荐1:5的数据配⽐⽅式完成训练? |
答:百度专家在多个领域场景的验证,确认1:5的配比效果相对而言比较好.
提问:如何根据训练场景选择数据配比的比例? |
答:不同的场景以及不同的数据量的数据配比存在差异,建议先选择一个占比训练模型,根据模型效果调整配比,若通用能力弱,提升通用语料占比;若垂类领域能力弱,提升领域语料占比。
四、训练结果优化
通过训练过程可视化观察Training loss的收敛曲线,成功的训练一般有明显的收敛过程。
图(a)loss明显下降,训练收敛;
图(b)loss有尖峰,但很快恢复,可不进行特别的干预,但需注意数据质量或者学习率;
图(c)loss发散,训练未收敛,需着重检查数据质量和超参配置。
五、后续应用与持续迭代
- 完成垂直领域Post-pretrain之后,可以进行benchmark测评(暂未上线),在测评集上对比Base模型的效果差异。
- 领域Post-pretrain后进行通用SFT训练,提升模型对通用的指令理解和语言跟随能力。
- 通用SFT后进行垂直领域SFT训练,提升模型在垂类领域中的指令理解和语言跟随能力。