体验了一些中文开源的语言模型,功能上可以算做类ChatGPT的模型吧(虽然模型结构完全不一样),效果上肯定不能和ChatGPT比,但基本的对话功能已经有了雏形,有一定的理解能力和回答能力。并且因为是开源模型,可以在这个基础上收集语料继续训练,有可拓展的空间。
这些模型不一定是完全用来对话的,还有生成、判别之类的其他功能,这里只是进行了本地部署,并初步测试了它们的对话功能。
ChatRWKV
代码地址:https://github.com/BlinkDL/ChatRWKV
模型地址:https://huggingface.co/BlinkDL
在【Models】里面选择一个模型,然后在【FIles and versions】里面选择一个版本进行下载
模型结构:近些年随着 Transformer 的火爆后,RNN 明显逐渐没落了,然而 RWKV 反其道行之,选择使用了纯 RNN 结构,通过对架构的修改,同时拥有了 RNN 和 Transformer 两者的优点。
参数数量:目前有1.5B、3B、7B、14B四种,参数数量越多效果越好。14B大约要28G显存,我显存只有24G,所以我这里用的模型是RWKV-4-Pile-7B-Instruct-test2-20230209,大约要15G显存。
训练数据:331B个token的语料上训练。
测试方法:下载代码和模型,模型和代码在同一个目录下,如图修改chat.py的参数,执行chat.py即可
对话体验:模型在回答的时候是有理解到问题的,也是有回答到一些点的,但回答的内容更像是在根据我的话生成内容,而不是在和我对话,可能这个模型本身就是基于生成文本来训练的。可以在开头加上+gen、+qa、+qq之类的指令,来控制对话的内容是生成模式还是独立对话等。
EVA2
代码地址:https://github.com/thu-coai/EVA
模型地址:https://huggingface.co/thu-coai/EVA2.0-xlarge
另外还有base和large两个版本,这里用的是最大的xlarge版本
参数数量:xlarge 2.8B
论文地址:https://arxiv.org/abs/2203.09313
训练数据:经过清洗的Wudao对话语料库
测试方法:下载代码,然后下载模型到model目录即可
对话体验:可以进行日常的闲聊,回答比较随心所欲。
gpt2-dialogbot-base-chinese
代码地址:https://github.com/shibing624/dialogbot
模型地址:https://huggingface.co/shibing624/gpt2-dialogbot-base-chinese
模型结构:基于GPT2
训练数据:来自一些论坛、电视剧的对话语料
测试方法:下载代码,然后下载模型到model目录即可
对话体验:能够进行一些简单的闲聊对话,有点在网上和人瞎扯的感觉。
chat-DialoGPT-small-zh
模型地址:https://huggingface.co/liam168/chat-DialoGPT-small-zh
模型结构:比较老的一个基于GPT2的对话模型,目前已被GODEL替代,但可惜没有找到GODEL的开源中文模型。
论文地址:https://arxiv.org/abs/1911.00536
训练数据:中文聊天数据
测试方法:下载模型到model目录即可,模型地址中有测试的代码
对话体验:比较抽象。这里他有提示padding的问题,不过加上这两个参数:padding=True和padding_side='left',似乎也没有什么改变。
PromptCLUE
代码地址:https://github.com/clue-ai/PromptCLUE
模型地址:https://huggingface.co/ClueAI/PromptCLUE-base-v1-5
在线测试:https://www.cluebenchmarks.com/clueai.html
模型结构:基于t5-large
参数数量:base 220M,large 770M
训练数据:万亿级别token
测试方法:我这里直接用modelscope框架。也可以下载原始代码和模型,然后用示例代码进行测试
对话体验:这是一个多任务预训练零样本的语言模型,可以支持情感分析、阅读理解 、提取、生成、翻译等几十种任务,但是在对话方面好像并不擅长,所以这里只是简单测试一下问答的情况。开源的是base版本,比网页上的large版本效果也会差一些。
ChatYuan
代码地址:https://github.com/clue-ai/ChatYuan
模型地址:https://huggingface.co/ClueAI/ChatYuan-large-v1
在线测试:模型的介绍页面的【Colab在线试用】
模型结构:基于PromptCLUE-large进一步训练
训练数据:数亿条功能对话多轮对话数据
测试方法:这里同样使用modelscope框架,也可以用原始代码和模型测试
对话体验:这个模型是基于PromptCLUE-large用对话数据训练的,虽然PromptCLUE可能对话效果并不是很好,但ChatYuan在对话领域已经有了很大的提升。简单的短对话都能够有效的进行,并且有对上下文的理解。 不过对话很长时,还是会有些问题。
总体上,这些模型的规模可能只有ChatGPT的千分之一,能达到这样有一定理解能力的效果已经不错了,说明整体的方向没有走偏。
后续可以尝试的,可以选一个模型作为基础模型,然后在一个特定领域的对话语料集上进行微调,如果能在这个领域有不错的效果,那么就能有进一步的应用空间。
当然这些模型结构和ChatGPT并不一样,如果要训练结构一样的小型ChatGPT,可以参考OpenAssistant,也是一个可尝试方向(就是成本可能有点高)。
另外,随着这两天的LLaMA模型被公开,应该很快就会有各种各样自研的大型语言模型出来了。