AI 文摘

近期大模型动态:LLaMA-2-7B-32K的训练数据组织情况及面向儿童心理健康领域的微调模型推介





作者: 老刘说NLP 来源: 老刘说NLP

在过去的几个月里,LLM开源生态系统迎来快速发展,从原始LLaMA模型到RedPajama,MPT,Falcon,再到LLaMA-2发布。

而随着长文本相关任务对上下文长度的需求,长上下文模型对于文档理解、摘要和检索增强生成已经至关重要,如MPT-7B-8K和LLongMA-2(8K)在内的模型也项目被提出。

而这个问题的根本在于,如何进行长文本模型的训练,其是否需要重新训练,比如之前只有2k,后续提升至16k时需要重新训练一个?还是说可以通过微调的方式完成,从8k改到16k?

关于这一块的内容之前都并不清楚,而借LLaMA-2-7B-32K工作的提出,本文对这一话题进行介绍,供大家一起参考并思考。

另一个话题,本文也将介绍一个面向心理健康场景的微调模型,其通过给定话题下进行数据的生成,可以作为多轮对话的一个测试集使用,其场景也很有趣。 ‍‍‍‍‍

一、从LLaMA-2-7B-32K看起数据组织情况‍‍

文章地址https://together.ai/blog/llama-2-7b-32k中报道了LLaMA-2-7B-32K这一工作,该模型将LLaMA-2-7B扩展到32K长上下文,使用Meta的插值、继续预训练、FlashAttention,能够处理长上下文任务(如多文档理解、摘要和 QA。

那么,将 LLaMA-2 扩展到 32K 上下文是如何做到的,我们可以看看其实现逻辑。LLaMA-2的上下文长度为4Ktoken。要将其扩展到32K上下文,该工作分成了三个部分:建模、数据和系统优化。

首先,在建模方面,我使用线性插值来扩展上下文长度,线性插值法提供了一种有效的方法来扩展具有旋转位置嵌入的模型的上下文长度。使用LLaMA-2检查点,并继续使用1.5Btoken的线性插值对其进行预训练/微调。

其次,在数据方面,不是简单地使用Pile和RedPajama等通用语言数据集进行微调,主要考虑到2点,一个是需要模型的通用长上下文语言数据来学习如何处理插值位置嵌入,另一个是需要指令数据来鼓励模型在长期上下文中实际利用信息。

所以,采用了数据混合的方式:

在继续预训练阶段,数据构成上包含25%的RedPajama Book、25% 的RedPajama ArXiv(包括摘要)、25%来自RedPajama的其他数据,以及 25% 来自 UL2 Oscar Data,要求模型填写缺失的块或完成文本。为了增强长上下文功能,剔除了短于2K token的序列。UL2 Oscar数据鼓励模型对长期依赖性进行建模。

在微调阶段,专注于其具有长上下文的fewshot能力,包括20%自然指令(NI)、20%的Public Pool of Prompts(P3)、20%的Pile。为了减轻遗忘,进一步将20%的RedPajama Book和20%的RedPajama ArXiv与摘要相结合。

最后,在评估阶段,针对HELM核心场景(HELM core scenarios)进行了数据去重,并做细致评估,

具体包括:在PG-19上不同序列长度下的归一化困惑度,以及在1个核心场景中的HELM得分,如下表所示:

可以看到,LLaMA-2-7B-32K产生合理的困惑,与原始LLaMA 2模型相当。

二、再看面向儿童心理健康领域的微调模型QiaoBan

‍‍‍‍

该项目旨在构建一个面向儿童情感陪伴的大模型,主要面向K12中小学生及家长群体,是一个7B规模的大语言模型,其通过给定话题下进行数据的生成,可以作为多轮对话的一个测试集使用,其场景也很有趣。 ‍‍‍‍‍‍‍‍‍‍

地址:https://github.com/HIT-SCIR-SC/QiaoBan

在训练数据上,从真实场景的儿童对话话题列表中进行采样,选定当前对话话题,在儿童情绪辅导理论的指导下,构建了1k余段高质量中文儿童情感陪伴对话数据

数据构建过程由经过儿童情绪辅导理论培训的志愿者完成,同时邀请了儿童心理学领域的专家学者对数据的收集过程提出建议与指导,以确保数据的准确性和可信度。

从项目中的话题列表 共538个(文件:https://github.com/HIT-SCIR-SC/QiaoBan/blob/main/topic.txt)部分如下:

班会游戏、新年班会、评奖班会、班级聚餐、班级聚会  
元旦晚会、才艺晚会、儿童节文艺表演、“快乐童年”才艺小舞台、儿童节游园、春节联欢晚会、运动会、歌唱比赛、诗朗诵比赛、年级篮球赛  
动物园、博物馆、风景区、春秋游  
篮球、足球、跑步、羽毛球、乒乓球、台球、游泳  
拾金不昧、热爱劳动、诚实、乐于助人、自主为班级搬东西  

完整的数据可以查看:https://github.com/HIT-SCIR-SC/QiaoBan/blob/main/data/child_chat_data.json‍‍‍‍‍

例如,给定话题生成 的数据如下:

{  
        "dialog_id": 1,  
        "emotion": "angry",  
        "topic": "班会游戏",  
        "dialog": [  
            {  
                "text": "妈妈,老师说我没赢游戏,但我真的赢了,我好生气,觉得太不公平了!",  
                "speaker": "孩子"  
            },  
            {  
                "text": "亲爱的,我了解你的感受,可以跟我说说班会上的情况吗?",  
                "speaker": "智能助手"  
            },  
            {  
                "text": "我们班有个游戏,我得分最高,团队也赢了,但老师却说是别的同学赢了,这太不公平了!",  
                "speaker": "孩子"  
            },  
            {  
                "text": "我明白了,但是你是怎么赢的游戏呢?",  
                "speaker": "智能助手"  
            },  
            {  
                "text": "我得分最高,团队也赢了,所有人都看到我是赢家,为什么老师还说我没赢呢?",  
                "speaker": "孩子"  
            },  
            {  
                "text": "那你知道老师为什么这么说吗?",  
                "speaker": "智能助手"  
            },  
            {  
                "text": "不知道,但我觉得太不公平了!",  
                "speaker": "孩子"  
            },  
            {  
                "text": "是啊,很不公平,但是我们也要尊重老师的决定,也许他有自己的原因。你可以去跟老师聊一下,了解他的想法,这样你会更清楚事情的真相。如果你还是觉得很不公平,我们可以一起找班主任或校长谈谈,但是在处理问题时,我们要保持冷静,不要因为情绪而做出错误的决定。",  
                "speaker": "智能助手"  
            },  
            {  
                "text": "好的,我会去跟老师聊聊。谢谢你,妈妈。",  
                "speaker": "孩子"  
            },  
            {  
                "text": "没事,我永远支持你,如果需要帮助,随时来找我哦。",  
                "speaker": "智能助手"  
            },  
            {  
                "text": "妈妈,还有一件事我想跟你说。",  
                "speaker": "孩子"  
            },  
            {  
                "text": "什么事?你可以跟我说说看。",  
                "speaker": "智能助手"  
            },  
            {  
                "text": "今天我跟同学吃午饭时,有个同学讲了很多关于环保的事情,让我感到很惊讶。",  
                "speaker": "孩子"  
            },  
            {  
                "text": "哦?那你觉得他讲了些什么有趣的事情吗?",  
                "speaker": "智能助手"  
            },  
            {  
                "text": "他说我们要多使用可重复利用的袋子,可以减少塑料袋的浪费,还说我们要多种植树木,因为树木可以吸收二氧化碳,减少空气污染。我觉得这些主意很好,如果每个人都能做到,地球就会更加美好了!",  
                "speaker": "孩子"  
            },  
            {  
                "text": "太好了!你的同学有很棒的想法,你也可以向他学习哦。你可以跟他多聊聊环保方面的知识,也可以尝试在家里做些环保的事情,比如垃圾分类、节约用水等等。",  
                "speaker": "智能助手"  
            },  
            {  
                "text": "好的,我会的!我觉得环保真的很重要,我们要尽力保护我们的地球。",  
                "speaker": "孩子"  
            },  
            {  
                "text": "是的,这是我们每个人都应该做的事情。我很高兴你能意识到这一点,继续加油哦!",  
                "speaker": "智能助手"  
            }  
        ]  
    }  

此外,根据该项目描述,其通过话题采样选定当前对话话题,结合儿童情绪辅导理论指导下的prompt,共同组成chatgpt_prompt,从gpt-3.5-turbo中获取5千段 儿童情感陪伴对话数据。

在训练耗费上,在四张A100-80GB的GPU卡上进行指令微调 ,大约花费50个小时完成训练过程。

最后,看模型效果:

总结‍‍‍

本文主要介绍了llama-2-7b-32k的数据组织情况以及一个面向心理健康场景的微调模型,其通过给定话题下进行数据的生成,可以作为多轮对话的一个测试集使用,其场景也很有趣。

大家可以多关注数据部分,其实现方式很有借鉴意义。‍‍‍‍‍‍‍

参考文献

1、https://together.ai/blog/llama-2-7b-32k

2、https://github.com/HIT-SCIR-SC/QiaoBan

关于我们

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

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

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

​​

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具