自从多年前看过黑镜,对其第二季克隆男友那集感到十分震动,简略来说就是将男友的交际网络信息以及谈天记录上传后,能够生成一个说话方法和男友很像的谈天机器人。

用甄嬛对话数据微调ChatGLM——Chat甄嬛

最近LLM(大言语模型)十分火热,出现了许多开源的 LLM,比如国外的LLaMA、国内的ChatGLM,这些开源的模型能够进行低本钱的 finetune,于是冒出个想法,就是使用谈天对话数据,能不能造出一个具有和被仿照者相似言语习惯以及回忆的 LLM。

收集材料

目前国内暂未收集到相关的材料,国外有找到一个相似的让llama像homer simpson一样说话 。

数据预备

前段时间看到有人经过sovits仿照了甄嬛的声音,因而想着就用甄嬛的对话进行微调。接着就收集到了集甄嬛传对话脚本数据,一起编写脚本对数据集进行了简略处理,最终数据处理后的格式为:

...
{"id": 9, "paragraph": [{"q": "你是谁?\n", "a": ["家父是大理寺少卿甄远道。\n"]}]}
...

微调LLM

我目前采用的是这个repo ssbuild/chatglm_finetuning 提供的微调方案,因为机器资源有限,我采用在int4模型的基础上进行微调,一起为了进一步减少GPU资源耗费,我挑选只练习20层参数。练习的整个流程和结果以及数据集上传到 GitHub 欢迎Star。

作用

在数据会集的数据现已得到回忆

你是谁:   家父是大理寺少卿甄远道。
大理寺少卿,也不是什么高官:   凡事不管官位高低,只论个理字。
小主怎样了?脸色怎样这么差:   我心里慌得凶猛。浣碧,你去找温太医来瞧瞧——记得,温大人请起,眉姐姐的身子要往场场存候,本宫的宫外用香也无碍,你且去送过东西没有?

对在数据会集的问题进行细微改动也可正常回答

原:弘曕究竟是不是朕的儿子?
弘曕是不是朕的孩子?:   当然,天下万民都是皇上您的子民
原:年羹尧不是骁勇善战吗,怎样不让他去平定准葛尔的边患?
为什么不让骁勇善战年羹尧去平?:   能用一个女子就能平息的工作,何须动用千军万马?何况年羹尧军功高权重,若是输,咱们要付出的不止一个公主,若是赢,年羹尧军功更盛,功高震主,所以和亲是皇上的伤言,若真一败涂地,年羹尧会难受的。

不在数据会集的数据会胡编乱造,但如同又有一点道理

你有没有私通:   臣妾失德,不宜侍奉皇上。
你就要行册封礼,好好歇着:   多谢皇后娘娘。
华妃娘娘来找你来:   眉姐姐在吗?

像第一个回答,属实十分风趣。

定论

  1. prompt需要修正一下,不然会有许多原有的常识忘记;
  2. 采用lora的方法好像更好,可是本钱相对而言就高了许多;
  3. 甄嬛的对话数据有许多文白交叉,拐弯抹角不行直接,作用不是太好;
  4. 数据预处理简略粗犷,数据只要3k多条,有些少。