赞
踩
内容概要:
论文:《Self-Instruct: Aligning Language Model with Self Generated Instructions》
self-instruct构造数据:指令生成;实例生成;过滤和后处理(原self-instruct方法在第一步后有分类任务识别,但现在主流方法都是省略这步)。
(1)生成指令:
# seed data
{"id": "seed_task_0", "name": "breakfast_suggestion", "instruction": "Is there anything I can eat for a breakfast that doesn't include eggs, yet includes protein, and has roughly 700-1000 calories?", "instances": [{"input": "", "output": "Yes, you can have 1 oatmeal banana protein shake and 4 strips of bacon. The oatmeal banana protein shake may contain 1/2 cup oatmeal, 60 grams whey protein powder, 1/2 medium banana, 1tbsp flaxseed oil and 1/2 cup watter, totalling about 550 calories. The 4 strips of bacon contains about 200 calories."}], "is_classification": false}
# prompt
Come up with a series of tasks:
Task 1: {instruction for existing task 1}
Task 2: {instruction for existing task 2}
Task 3: {instruction for existing task 3}
Task 4: {instruction for existing task 4}
Task 5: {instruction for existing task 5}
Task 6: {instruction for existing task 6}
Task 7: {instruction for existing task 7}
Task 8: {instruction for existing task 8}
Task 9:
(2)生成实例:利用(1)的指令给gpt
(3)过滤和后处理:衡量新数据和池中已有指令数据的相似度,只有当它和池中任何一条指令数据的 ROUGE-L 相似度都低于 0.7 的时候,才能会被加入到指令池中
(1)sft数据的清洗
(2)通过IFD指标筛选sft数据
1)论文:《From Quantity to Quality: Boosting LLM Performance with Self-Guided Data Selection for Instruction Tuning》平安科技:从大量可用数据集中自动识别高质量数据
2)三个步骤:
举例子:
获取中间置信度的数据:
对类中心的数据点排序->如果某个类数据不够,全采->获取这个类别的的置信度,置信度来自于样本的ppl值->获取最低的ppl阈值和最大的阈值->将最低阈值和最大阈值之间的数据作为中间数据上->如果中间阈值过滤数据量不够采样数量,则全部使用->否则切分成n份进行采样
(3)实验结果:在Alpaca和WizardLM两个数据集上利用Llama-7B进行实验,发现在5%的Alpaca樱桃数据上进行训练就超过了全量数据训练结果。
(3)之前基于IFD做过一些验证性实验,效果不明显,但是IFD论文中的一些思想可以学习,比如使用文本向量化后,基于困惑度+聚类指标进行筛选sft数据。最简单的实践比如m3e+kmeans处理一个公开的多轮对话sft数据,可以看到下面第49类都是天气类的对话文本,而且该类微调数量较少,所以可以适当构造这方面微调数据,防止微调数据中不同类别的数量不均衡:
(1)sft数据的数量
1)《LIMA: Less Is More for Alignment》哈佛:sft数据质量的重要性大于数量
2)论文:《Exploring the Impact of Instruction Data Scaling on Large Language Models:An Empirical Study on Real-World Use Cases》贝壳
3)按照比例筛选sft数据
度小满金融大模型:https://github.com/Duxiaoman-DI/XuanYuan
(2)sft数据的质量
(2)文中定义sft数据质量公式: Q D ∣ M , S ∝ − L ( M ~ , D eval ) Q_{D \mid M, S} \propto-L\left(\tilde{M}, D_{\text {eval }}\right) QD∣M,S∝−L(M~,Deval )
内容概要:
增量pretrain:可适当加入如下的通用语料(下图为常见的pretrain语料)
丢弃perplexity高的文本数据(过滤一些不自然的文本)
删去标点/符号过多、过长过短的句子
删除具有某些特定词汇(如html标签、链接、脏话、敏感词)的句子。
(2)去重算法总结:
(3)参考数据集:CulturaX数据集经过严格的多阶段清理和重复数据删除,以达到最佳的模型训练质量,包括语言识别、基于URL的过滤、基于度量的清理、文档再细化和重复数据删除。
地址:https://arxiv.org/pdf/2309.09400.pdf
数据地址:https://huggingface.co/datasets/uonlp/CulturaX
实验细节:
基于剪枝后的数据微调后的模型评测结果(GLUE任务的子集上对模型进行了微调和评估):
对应的功能:
数据集样例 (data)
该文件夹包含一些样例数据集。
初探索 (overview_scan)
数据处理回路 (data_process_loop)
词法多样性可视化 (data_visualization_diversity):完成,显示动词+名词的句式
算子效果可视化 (data_visualization_op_effect)
统计信息可视化 (data_visualization_statistics):正在尝试中
处理 CFT 中文数据 (process_cft_zh_data):参数设置在研究,特别是哈希去重
处理预训练科学文献类数据 (process_sci_data)
处理预训练代码类数据 (process_code_data)
文本质量打分器 (tool_quality_classifier)
按语言分割数据集 (tool_dataset_splitting_by_language)
数据混合 (data_mixture)
[1] https://github.com/gururise/AlpacaDataCleaned
[2] 大模型如何在指令微调过程中构造或筛选高质量数据.zh
[3] 有被混合后的SFT数据伤到.sft数据混合比例
[4] https://arxiv.org/pdf/2310.05492.pdf
[5] https://github.com/alibaba/data-juicer/tree/main
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。