大模型研发必备:两大开源可用且清洗过的中文文本语料库及大模型FLOPS、参数量快速估计工具推荐

458次阅读
没有评论

今天是2023年9月11日,星期一,我们继续来聊聊一些话题。

当前,中文大模型预训模型越来越多,开源的中文预训练数据也逐步放出,而我们实际上需要的是加工后,可以直接用于训练的一些数据。

因此,本文将首先介绍两个现有的大规模开放中文文本数据集,包括书生·万卷1.0以及wudao数据集,这两个数据集都进行了一定程度的清洗,其清洗规则以及最终数据都值得我们关注。

其次,自从ChatGPT惊艳众人后,新的大模型(LLM)一直如雨后春笋般层出不穷,热度不减。

尤其与Meta慷慨的发布了LLaMA系列后,开源社区中基于LlaMa的再次训练、魔改训练的LLM更是数目繁多,中东土豪也在用钞能力贡献力量发布目前参数最大开源LLM Falcon-180B,预计在未来新的LLM还会持续络绎不绝发布。

看着各种通用的、领域的LLM榜单中乱花渐欲迷人眼的各式各样的LLM们,如何挑选一个兼具不错的回答质量与要求不高的推理性能的LLM呢?

这个时候除了榜单中相关任务的分数,LLM在进行一次推理时计算的消耗(FLOPs)以及具备的参数量(Params)也是一个需要参考的指标。

那么, 那如何简单的计算一个开源LLM的FLOPs和参数量呢?

LLM参数规格都是固定7B,13B,33B吗?同样7B之间,baichuan-7B、Qwen-7B, bloom-7B、llama2-7B等等之间的参数量有差异吗?

因此,本文第二个话题将推荐一个刚在Hugging Face平台上发布一个工具——calculate-model-flops,作者Converge。供大家一起参考。

一、现有大规模开放中文文本数据集

1、书生·万卷1.0

“万卷”是一个包含多种模式的大规模训练语料库:书生·万卷文本数据集1.0由来自网页、百科、书籍、专利、教材、考题等不同来源的清洗后预训练语料组成,数据总量超过5亿个文档,数据大小超过1TB。

该语料将html、text、pdf、epub等多种格式的数据统一处理为字段统一的jsonl格式,并经过细粒度的清洗、去重、价值对齐,文本数据包括6亿多篇文档,数据存储量超过1TB;图像-文本数据经过处理后成为文档,共有2200多万篇文档,数据量超过200GB(图像通过URL链接提供);视频文件共有1000多个,数据量超过900GB。

其中,中文数据占比35.1%,约2.2亿个文件,466.54GB。英文数据集占比61.4%,共3.83亿个文件,542.51GB。

在万卷数据集的建设过程中,我们通过算法处理和人工校验,确保数据的安全、高质量和价值一致性(过滤掉色情、暴力和偏见)。

具体清理方法如下:

为确保数据的全面性,文本语料库结合了来自八个不同来源的数据。对于CommonCrawl)提供的英文互联网数据,采用多步骤文本提取流程、语言检测、语料库过滤和重复数据删除,以获得高质量的数据。

大模型研发必备:两大开源可用且清洗过的中文文本语料库及大模型FLOPS、参数量快速估计工具推荐

1)首先,从WARC原始文件中提取文本,然后使用不同的语言检测工具(pyclid2)对提取的文本进行分类,随后对中英文文本进行不同的处理。鉴于互联网上存在大量无效数据,采用以下规则进行过滤,以获得高质量数据:

2)删除不规范的文档,包括平均单词长度和文档长度不合适的文档。如果出现频率最高的单词不是字母,或者出现频率过高,我们会将其视为不常见的文档格式并将其删除。

3)删除内容过少的文档,如经过处理后句子少于三句的文档;段落少于三段的文档;长度超过200字的段落少于三段的文档;或停用词少于两个的文档。

4)对段落进行清理,删除了一些特殊段落,如包含JavaScript等单词的段落、标点符号以外的段落以及超过1000字的段落。

5)注意到获得的数据中包含重复数据,对文本数据进行标记化处理,并使用MinHashLSH和n-grams评估相似度,删除相似度大于0.8的内容。

6)由于互联网数据中存在有害和低质量的内容,训练模型来评估质量并针对不同问题进行过滤,具体包括:

7)使用FastText模型对色情、暴力、赌博、攻击和其他有毒主题的内容安全模型进行训练,分别针对中文和英文,以过滤潜在的有毒数据。

8)针对网上的各种低质量数据,如自动生成的随机数据和广告内容,我们分别针对中文和英文训练数据质量模型,以降低低质量数据的比例。

在数据存储上,提供统一的JSON格式,数据样例如下:

大模型研发必备:两大开源可用且清洗过的中文文本语料库及大模型FLOPS、参数量快速估计工具推荐{
    "id""BkORdv3xK7IA0HG7pccr",
    "content""\*诗作[222]n录自索菲娅·马克思的笔记本n#### 人生n时光倏忽即逝,n宛如滔滔流水;n时光带走的一切,n永远都不会返回。n生就是死,n生就是不断死亡的过程;"
}

地址:https://arxiv.org/pdf/2308.10755.pdf

2、wudao数据集

采用20多种规则从100TB原始网页数据中清洗得出最终数据集,包含教育、科技等50+个行业数据标签,可以支持多领域预训练模型的训练。

数据总量:5TB,数据格式为json,开源数量包括200GB;

先看数据清理的具体步骤:

1)在文本提取之前评估每个数据源的质量,并删除文本密度低于70%的网页。

2)使用simhash算法删除重复内容。

3)删除一个包含少于10个汉字的网页。

4)删除包含脏话、煽动性评论和其他非法内容等敏感信息的网页。

5)为了最大程度地保护每个人的隐私安全,使用正则表达式匹配并删除私人信息(如身份证号码、电话号码、QQ号码、电子邮件地址等)。

6)使用标点符号(如句号、感叹号、问号、省略号)来分隔提取出的文本,并删除最后一段。

7)过滤掉高频乱码词汇的网页,并使用解码测试进行二次检查,解决乱码问题。

8)将繁体汉字转换为简体汉字,以使的语料库中字符格式统一。

9)从网页中删除异常符号(如表情符号、标志等)。

10)删除包含超过十个连续非中文字符的网页。

11)删除网页标识符(如HTML、层叠样式表(CSS)和Javascript)。

12)删除每个句子中的所有空格,以规范化的语料库。

此外, 数据的字段包括:

大模型研发必备:两大开源可用且清洗过的中文文本语料库及大模型FLOPS、参数量快速估计工具推荐

地址:https://www.sciencedirect.com/science/article/pii/S2666651021000152

二、再看计算LLM Benchmark中FLOPs和Params

项目地址:https://huggingface.co/spaces/MrYXJ/calculate-model-flops,实现了可以很方便计算开源在huggingface平台上的模型的FLOPs和Params数量。

https://huggingface.co/spaces/MrYXJ/calculate-model-flops

大模型研发必备:两大开源可用且清洗过的中文文本语料库及大模型FLOPS、参数量快速估计工具推荐

tool url: https://huggingface.co/spaces/MrYXJ/calculate-model-flops

我们拿HuggingFace上开源LLM榜单Harness中的LLM对该工具的使用进行测试。

大模型研发必备:两大开源可用且清洗过的中文文本语料库及大模型FLOPS、参数量快速估计工具推荐

以目前Harness榜单中第一名的模型”uni-tianyan/Uni-TianYan”为例子:

大模型研发必备:两大开源可用且清洗过的中文文本语料库及大模型FLOPS、参数量快速估计工具推荐

从计算结果中,我们可以得到”uni-tianyan/Uni-TianYan”模型的参数量是68.715B,前向传播一次step的FLOPs是52.7TFLOPs。从工具calculate-model-flops打印模型每个部分FLOPs和Params的百分比中可以看出模型”uni-tianyan/Uni-TianYan”也是基于Llama作为基座模型,其中相比LlamaAttention参数更多是LlamaMLP,MLP部分参数大概是Attention的近5倍。

同时继续观察Harness这个全部都是开源LLM的榜单:

  • 如上图所示,目前在榜单Harness开源LLM中排名靠前全都是基于LlaMa2-70B继续训练的模型,说明参数大的LLM的潜力相对于参数小的LLM肯定是更有优势,LLM Params Scaling Laws依旧在发挥作用。

  • 榜单排名中第七名TheBloke/Genz-70b-GPTQ模型Params显示只有9.7B ? 使用工具重新计算,发现是榜单中统计参数量有误,实际上该模型有68.715B参数,而且也是LlaMa2-70B。

大模型研发必备:两大开源可用且清洗过的中文文本语料库及大模型FLOPS、参数量快速估计工具推荐

  • 将榜单往下拉,大概在60位左右才看到中东土豪刚开源的Falcon-180B,说明即使参数量足够大,没有对特定数据进行训练,其做题的能力不一定超过参数量更小的模型。有时候在掌握规律的数据集训练,可能刷出的分数更高?

大模型研发必备:两大开源可用且清洗过的中文文本语料库及大模型FLOPS、参数量快速估计工具推荐

另外注意,该工具目前只能对支持在meta device能够进行推理的LLM进行计算其FLOPs和Params。你还可以通过下载完整模型的参数到本地,使用同个作者开发的

Python Package calflops进行本地的计算模型FLOPs。该工具开源在github,其使用文档也非常详细,欢迎使用和star🌟。

地址:https://github.com/MrYxJ/calculate-flops.pytorch

以下是calflops文档中目前统计LLM FLOPs和Params

大模型研发必备:两大开源可用且清洗过的中文文本语料库及大模型FLOPS、参数量快速估计工具推荐

总结

本文首先介绍了两个现有的大规模开放中文文本数据集,包括书生·万卷1.0以及wudao数据集,这两个数据集都进行了一定程度的清洗,其清洗规则值得借鉴。

作者Converge在Hugging Face平台上发布一个工具——calculate-model-flops,感兴趣的也可以看看。

参考文献

1、https://huggingface.co/spaces/MrYXJ/calculate-model-flops

2、https://arxiv.org/pdf/2308.10755.pdf

3、https://www.sciencedirect.com/science/article/pii/S2666651021000152

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。

​       

 

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)
Generated by Feedzy