hiyouga / ChatGLM-Efficient-Tuning

Fine-tuning ChatGLM-6B with PEFT | 基于 PEFT 的高效 ChatGLM 微调
Apache License 2.0
3.65k stars 471 forks source link

用默认参数微调chatglm2之后对话能力大幅度下降 #402

Closed caoxueqian19901214 closed 11 months ago

caoxueqian19901214 commented 1 year ago

如标题,参数用的都是wiki里提供的默认值 CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \ --stage sft \ --model_name_or_path /home/ec2-user/SageMaker/ChatGLM2-6B/chatglm2-6b \ --do_train \ --dataset merge_sharegpt_zh_27k_and_ssc_1k \ --finetuning_type lora \ --output_dir /home/ec2-user/SageMaker/ChatGLM-Efficient-Tuning/output/merge_sharegpt_zh_27k_and_ssc_1k_lora_default_parameter \ --per_device_train_batch_size 4 \ --gradient_accumulation_steps 4 \ --lr_scheduler_type cosine \ --logging_steps 10 \ --save_steps 1000 \ --learning_rate 5e-5 \ --num_train_epochs 3.0 \ --plot_loss \ --fp16

数据集尝试了自己的5K对话数据集,也尝试了加入通用的sharegpt_zh_27k这个数据集进行微调,loss曲线也很正常: image

但是效果非常差,基本完全丧失了正常回答问题的能力,同时模型无法分辨当前对话是否合上下文有关,必须手动清除history才行,这块各位大佬知道是什么原因吗,跪求指导? 我贴几个例子: 来自数据集sharegpt_zh_27k example1 { "instruction": "弥补它", "input": "", "output": "可以想象一种情境,即将量子力学的原理,如叠加和纠缠应用于网络和应用软件的设计中。例如,使用量子计算技术,可能可以创建能够同时存在于多种状态的网络和应用界面,使用户能够同时探索多种选项和可能性。此外,纠缠的概念可以用于设计高度互联的网络和应用界面,使用户能够轻松访问相关信息和内容。\n另一个例子可以在安全领域,量子密码学的原则可以应用于创建更安全、更私密的通信渠道,用于网络和应用界面。\n请记住,这些只是量子力学原理如何在网络和应用软件工程设计中应用的例子,这个领域仍处于起步阶段。", "history": [ [ "量子通量作为设计", "量子通量是量子力学中涉及到量子系统中粒子或能量的流动的概念。在设计的语境下,它可能指的是使用量子力学的原理来指导系统或产品的设计。然而,在设计领域中,这个术语并不常见,它的含义可能根据具体的语境而异。" ], [ "在网页和应用软件工程和设计的背景下", "我不知道在Web和App软件工程和设计的背景下是否有任何关于“量子通量”的具体用法。一般来说,软件工程和设计涉及使用已建立的设计模式和原则,创建高效和用户友好的软件。量子力学是研究物质和能量在原子和亚原子级别上的行为的物理学分支,通常不在Web和App开发的背景下使用。它可能被用于量子计算的背景下,量子计算是一个相对较新的领域,利用诸如叠加和纠缠等量子力学现象对数据进行操作。但是,该领域仍处于起步阶段,目前还不清楚它如何在Web和App软件工程和设计的背景下使用。" ] ] } 微调后: Input: 量子通量作为设计 ChatGLM-6B: 量子通量是一种量子效应,指的是一个量子系统能够吸收或者发射能量,其能量以量子的形式存在,而非连续的。量子通量在量子力学中起着重要的作用,它描述了量子系统在宏观世界中的行为,例如光和物质之间的相互作用。 量子通量可以被分为两个部分:量子通量密度和量子通量传输。量子通量密度指的是一个量子系统吸收或者发射的量子能量总量,而量子通量传输则指的是量子系统之间的能量传递。 量子通量在量子系统中的应用非常广泛,例如在量子计算、量子通信和量子加密等领域都具有重要的作用。量子通量的研究对于理解量子系统的物理性质和行为,以及推动量子技术的发展都具有重要的意义。

Input: 在网页和应用软件工程和设计的背景下 ChatGLM-6B: 量子通量在网页和应用软件工程和设计中可以用于优化用户体验和提高效率。量子力学原理在网页和应用软件中可以用于构建更复杂、更有效的界面和用户体验。例如,量子力学原理可以被用于创建动态、交互式的网页和应用软件。量子力学原理还可以被用于创建虚拟现实和增强现实应用程序,以提供更加真实和沉浸式的用户体验。 量子力学原理还可以用于处理图像和视频数据,以提高图像和视频处理速度和质量。量子力学原理还可以用于构建更高效的算法和机器学习模型,以处理大量的数据。 总之,量子力学原理在网页和应用软件工程和设计中可以提供许多潜在的优化,以提高用户体验和效率。

example2: { "instruction": "你认为吃那条狗的文化很野蛮吗?", "input": "", "output": "我认为吃狗肉文化存在着动物福利问题、文化冲突和健康问题等许多问题,由于这些问题,大多数人都谴责和反对它。作为人类家庭成员,狗享有被尊重的权利,承担着人与动物的关系中的责任和保护。因此,吃狗肉被视为非常令人不快和粗鲁的行为。我尊重各种文化和习俗,但考虑到动物福利和健康等问题,我认为吃狗肉是野蛮和不道德的。", "history": [ [ "闷闷不乐", "如果感到无聊,我们建议尝试一些新事物。例如开始新的兴趣爱好或读一本书也是不错的选择。或者看电影或电视剧也是不错的选择。还可以和朋友或家人一起共度时光。无论选择什么,通过新的体验可以获得新的刺激和乐趣。" ], [ "뭐해\n\nTranslated in Chinese: 干嘛呢?", "我在这里是为了帮助您!如果您有任何问题或需要帮助,请随时向我提出。" ], [ "打那只狗。", "打狗的行为涉及动物虐待,必须避免。虽然狗可能会令人烦恼或厌烦,但暴力决不是正确的处理方式。如果狗有问题,最好寻求专业帮助或咨询专业狗训练师。此外,与狗生活需要承担责任,需要适当的管理和训练。" ], [ "关于“保氏汤”,您的看法如何?", "牛肉汤是韩国传统食品之一,是将肉类和草药等一起煮成的汤。具有非常高的营养价值,强烈的味道和香气是其特点。由于牛肉汤会导致消化不良,因此对于无法咀嚼肉类或胃肠道功能较弱的人来说需要注意。此外,还存在动物福利问题等问题,因此需要积极考虑替代方案并做出适当的选择。从任何角度来看,牛肉汤都是韩国代表性食品之一,作为韩国文化的一部分,在许多方面都受到关注。" ] ] } 微调后: Input: 你认为吃那条狗的文化很野蛮吗? ChatGLM-6B: 我不认为吃狗的文化是野蛮的。在许多文化中,狗被视为人类的朋友和伙伴,被广泛地饲养和使用。在一些文化中,狗被视为神圣的动物,它们被尊重和崇拜。因此,吃狗的文化在某些文化中可能被视为野蛮,但不是所有文化都认为如此。

来自我自己的数据集: example3: 这里只贴了最后一轮对话,数据集里每一轮对话都能作为input/output生成了一个样本 { "instruction": "没有了,谢谢你啦", "input": "", "output": "不客气~", "history": [ [ "我想问一下离职社保转出的问题", "社保转出联系XX,她是公司社保专员" ], [ "需要ssc的同学审批结束吗?", "嗯嗯 你离职审批流程批完之后联系" ], [ "okkk", "本月的社保会在最近开始做减员 离职时无法立马拿到社保转出凭证 减员结束之后就可以拿到啦" ], [ "可是我着急下一个公司入职哎,要在28号之前给到下一个公司[泣不成声],不然我下个月的社保就交不上了[捂脸]", "入职的时候社保停缴凭证不是必备资料欸11月社保咱们公司已经帮你交过了你只需要保证在12月15日之前给到下家单位就可以正常缴纳" ], [ "那边公司要求28号之前给到才能交上下个月的", "如果你很着急拿到,你今天办完离职手续可以联系刘舒淇,看能不能单独给你减员因为增减都是批量操作,所以你可以问问" ], [ "好的,谢谢你啦", "这个时间并不是西安缴纳社保的规定,我能告诉你就这些啦~" ], [ "好呢", "你还有什么问题吗?" ] ] } 微调后: Input: 我想问一下离职社保转出的问题 ChatGLM-6B: 你好ssc,请问您有什么问题需要我协助吗?

Input: 想问一下离职社保转出的问题 ChatGLM-6B: 您是离职了还是离职后转出离职社保吗?

Input: 离职后转出离职社保 ChatGLM-6B: 离职后转出离职社保,您是转出离职社保后吗?

Input: 离职社保转出 ChatGLM-6B: 离职后转出离职社保,您是转出离职社保后吗?

模型无法分辨当前对话是否合上下文有关

Input: 谷歌扩展程序 ChatGLM-6B: 谷歌扩展是一种允许用户在他们的Google浏览器中使用自定义脚本和扩展程序的工具。这些脚本和扩展程序可以被安装到浏览器中,以修改网站的体验或添加新的功能。

在浏览器中安装扩展程序是常见的做法,用户可以通过点击浏览器扩展程序的安装按钮来安装它们。一旦安装完成,扩展程序将向浏览器中添加一个新的部分或按钮,用户可以通过点击来访问或执行所需的操作。

一些扩展程序可以修改网站的外观或功能,而其他扩展程序则提供新的工具或功能。例如,一个浏览器扩展程序可能会添加一个新功能,使用户能够更轻松地查找或组织网页。

需要注意的是,安装扩展程序可能需要用户具有相应的权限。例如,某些扩展程序可能需要用户具有管理员权限才能安装。

总的来说,在浏览器中安装扩展程序是可行的,而且对于许多用户来说都是有用的。

Input: hello, 想问名片申请在哪里申请呀 ChatGLM-6B: 您可以在Google上创建一个Google Sign-In账户,然后使用该账户创建名片。您可以在Google Sign-In账户的“我的Google”部分中创建新的Google Sign-In账户,然后从“我的Google”部分中创建名片。 要创建Google Sign-In账户,请访问以下链接: https://accounts.google.com/signin 要创建Google Sign-In账户,请访问以下链接: https://accounts.google.com/signin/glogin 在Google Sign-In账户中创建名片,请访问以下链接: https://accounts.google.com/signin/glogin/edit 请注意,创建Google Sign-In账户和创建名片都需要您具有相应的权限。例如,您可能需要具有管理员权限才能创建Google Sign-In账户和创建名片。 如果您需要更具体的指导,请查看Google Sign-In和Google Sign-In的文档,或联系Google支持,以获取有关如何创建Google Sign-In账户和创建名片的更具体的指导。

Input: clear History has been removed.

Input: hello, 想问名片申请在哪里申请呀 ChatGLM-6B: 你好,请问有收到我们的邀请邮件吗?

Input: ChatGLM-6B: 请私信我

Input: 没有 ChatGLM-6B: 嗯,稍等一下,我看看

caoxueqian19901214 commented 1 year ago

补充一下,数据集大小是3W多,是我自己的数据集和sharegpt_zh_27k的混合