社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  chatgpt

ChatGPT一周年之际:谈谈自己的一些大模型研发思考及中文开源预训数据集

老刘说NLP • 1 年前 • 517 次点击  

今天是2023年11月30日,星期四,北京,天气晴。

今天是11月的最后一天,也是chatgpt推出一周年,很有纪念意义的日子。

我们在前面的文章《开源的Agent工具使用微调数据集:从MSAgent-Bench到AgentInstruct》一文中介绍了现有的一些agent微调数据集。

而今天在预训数据上,也有新的开源数据集出现,即CCI中文互联网语料库,我们先对现有的开源预训语料进行梳理。

第二件事,是当前长文本评测的问题,在现有不同最大输入长度的模型上,如何进行评测,涉及到长文本的切分问题,因此,我们来看看Longbench的具体操作。

第三件事,是用几句话来总结最近一年做大模型的一些感受。

三件事,供大家一起参考。

一、CCI中文互联网语料库等开源中文预训语料

“中文互联网语料库”(Chinese Corpora Internet, 简称CCI)首期开放的数据(CCI v1.0.0)规模为 104GB。数据集总体的时间跨度为2001年1月至2023年11月。

数据地址: https://data.baai.ac.cn/details/BAAI-CCI

数据处理的规则包括:

1)基于规则的过滤:文字密度提取、关键词过滤、垃圾信息过滤、简繁体转换等;

2)基于模型的过滤:低质量内容过滤;

3)数据去重:数据集内部/数据集间去重;

此外,针对预训练数据规模庞大、容易引发评测数据泄露的问题,该工作专门在数据处理过程中对当前主流的多个中文评测数据集进行严格筛查和过滤。

此外相关的中文开放数据集包括:

1、万卷数据集

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

地址:https://opendatalab.org.cn/OpenDataLab/WanJuan1_dot_0

2、wudao数据集

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

地址:https://openi.pcl.ac.cn/BAAI/WuDao-Data

3、MVBNC数据集

MNBVC数据集包括主流文化,也包括各个小众文化甚至火星文的数据。MNBVC数据集包括新闻、作文、小说、书籍、杂志、论文、台词、帖子、wiki、古诗、歌词、商品介绍、笑话、糗事、聊天记录等一切形式的纯文本中文数据。数据均来源于互联网收集。

截止2023年11月30日,目前总数据量26201GB,目标是达到chatGPT3.5的40T数据,目前进度65.50%。

地址:https://github.com/esbatmop/MNBVC

二、longbench如何评测输入长度不同的模型性能

由于不同模型能够接受的最大输入长度不同,为了更加公平地比较这些大模型,longbench在输入长度超过模型最大输入限制时,将裁剪输入文本的中间部分,从而避免提示词缺失的情况。

代码地址:https://github.com/THUDM/LongBench/blob/main/pred.py

def get_pred(model, tokenizer, data, max_length, max_gen, prompt_format, dataset, device, model_name):
    preds = []
    for json_obj in tqdm(data):
        prompt = prompt_format.format(**json_obj)
        # truncate to fit max_length (we suggest truncate in the middle, since the left and right side may contain crucial instructions)
        tokenized_prompt = tokenizer(prompt, truncation=False, return_tensors="pt").input_ids[0]
        if len(tokenized_prompt) > max_length:
            half = int(max_length/2)
            prompt = tokenizer.decode(tokenized_prompt[:half], skip_special_tokens=True)+tokenizer.decode(tokenized_prompt[-half:], skip_special_tokens=True)

三、关于大模型的一些研发的感受

事实上,我并不是专门做大模型的,过去几年,一直在做知识图谱,做领域知识图谱,做事理图谱,做百科图谱,广告图谱,产业链图谱等等,也做情报分析。但做图谱地人都知道,做图谱本身就是做数据。

年初的时候,被抽调过去做大模型,上半年重点做大模型数据,下半年重点做模型评测与预训配比,成功的例子不多,趟的坑不少。

总结下来,从数据,评测,训练和知识问答三个方面来说:

先说数据,今年7月份,我在Datafuntalk基础模型论坛上,做过《大模型研发核心:数据工程、自动化评估及与知识图谱的结合》的分享,分析过大模型预训数据的构成以及一些处理工程。

但,坦白说,其实,截止目前,我也并不清楚,什么叫好数据,高质量,大规模,多样性,每个量化起来都很难。什么才是好的数据配比。

对于预训数据而言,变量太多,消融实验并不好做。用ppl,loss,评分模型等众人皆知的方案来做,实际上漏洞百出,很多坑。怎么量化这个好数据?怎样的数据配比才是对的?数据要清洗到什么程度?随机网页要清洗到什么程度?中英文,代码比例要控制什么样的比例,这些都是问题。

对于微调数据而言,怎么才算好的微调数据,怎么清洗微调数据,怎么做聚类等等。

再说评测,评测并不是简简单单地拉数据集,跑个评分这么简单。评测是很大的工作。

11月份也做过一份详细的评测分享,也是个很深的话题。

大模型评测要考虑有效性,敏感性,一致性以及快速迭代。大模型评估的阶段很长,至少包括pretrain,sft两个阶段,每个阶段都要有评测,且要两个阶段的指标是同向的。使用现有的评测集,又涉及到prompt的构造问题。怎么保证指标的增长不是数据泄露导致的?同一套评测集,怎么保证对2B模型,只吞200Btoken有效?怎么建立模型下游技能跟评测集之间的关系,以及与训练数据之间的联系?怎么通过评测指标来判断不要继续吞token?怎么解决评测任务与下游业务能力评估结论的一致性?如何快速生成定量的结论作为指引方向?怎么评估多轮,怎么评估长文本,怎么评估抽取等等。评测指标太多,反而一个问题也解决不了。

最后说训练,训练,也并不是直接runbash那么简单,涉及到各种问题,包括loss飞掉等问题,如何进行监控,如何将评测集成到框架当中,实现边训边评。如何快速地实现吞token,存checkpoint,评估pretrain,做sft,评估sft。快速生成分析结论。这块一直在跟进微调数据和领域模型,琳琅满目的让人眼花缭乱。这块,也跟着self instruct,self qa,evolve等方式,构造了许多各式各样的花式数据,如Longbench等。

除了大模型自研一块,另外也在做RAG那套。这块,上周,在深圳AIDD2023和Datafuntalk2023上,做了关于大模型幻觉以及RAG+KG的一些缓解分享。

实际上,问题也不少,RAG如何将图谱融合进去,如何进行评估,如何进行chunk切分,如何加入拒答,如何控制幻觉等等,也是一堆问题。

仔细想来,大模型研发,全是细节。网上的文章铺天盖地,但实际上真正说到本质的,起作用的,少之又少。懂的人其实并不多,但有的人跑得快,有的人跑的慢,但唯有下沉到细节里,才能真正明白地更多,knows how的更多。

chatgpt推出一周年之际,大模型做了一年之际,也还没入门,问题和疑惑越来越多,愿能更多的认识和思考。

参考文献

1、https://data.baai.ac.cn/details/BAAI-CCI

2、https://github.com/THUDM/LongBench/blob/main/pred.py

3、https://github.com/esbatmop/MNBVC

4、https://openi.pcl.ac.cn/BAAI/WuDao-Data

5、https://opendatalab.org.cn/OpenDataLab/WanJuan1_dot_0

关于我们

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

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

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/165078
 
517 次点击