中国的古籍版ChatGPT“荀子”

中国的古籍版ChatGPT“荀子”

有人玩过中国的古籍版ChatGPT“荀子”吗?看起来挺有意思。但是公开的是源码,外行人玩不起来。

与“荀子”对话?南京农业大学发布全国首个古籍大语言模型
荔枝网,2023-12-11

输入“请以金陵为主题,生成一首五言绝句”的指令,不出两秒,系统便生成了一首堪称绝妙的原创绝句:“秦淮佳丽地,城阙望中迷。柳暗青丝发,花香碧玉衣。歌楼留夜色,画阁敛春晖。细雨轻舟去,双鱼梦泽飞。”

这就是古籍大语言模型“荀子”——国内首个专门应用于古籍处理与研究的智能工具,由南京农业大学信息管理学院王东波教授研究团队研发并发布。

王东波介绍,“‘荀子’包含了《四库全书》在内的超20亿字古籍文献,能够实现自然语言理解、自动翻译、诗歌生成、自动标引等多项功能。作为开源的、公益的研究成果,该模型已在GitHub(https://github.com/Xunzi-LLM-of-Chinese-classics/XunziALLM 、ModelScope(https://modelscope.cn/models/Xunzillm4cc/Xunzi-Qwen-Chat) 等网站开源。”

除了会“写诗”,古文的阅读理解、标点添加,以及将古汉语翻译为现代汉语,这些让受众难啃的“硬骨头”,“荀子”都可以轻松拿下。

对于领域专家而言,他们则可以借助“荀子”,完成古籍词法分析、实体识别、关系抽取、文本分类与匹配、文本摘要等专业古籍研究处理场景才需要的功能。同时发布的基座模型,还可以让用户根据自己的需求,使用本地的训练语料微调“荀子”的基座模型,使其在古籍下游处理任务上,取得更优越的处理性能。

(略)

5 个赞

用过没有 怎么用?

模型用起来并不难,但首先可能需要至少 16-20 GB 的显存。显存没这么大的话, Int4 、int8量化之后在15G显存的免费Google colab上貌似也可以运行,但得碰运气。

!git clone https://www.modelscope.cn/Xunzillm4cc/Xunzi-Qwen-Chat.git

!pip install transformers==4.32.0 accelerate tiktoken einops scipy transformers_stream_generator==0.0.4 peft deepspeed

!git clone https://github.com/Dao-AILab/flash-attention
!cd flash-attention && pip install .

!pip install bitsandbytes accelerate




import torch

from transformers import AutoModelForCausalLM, AutoTokenizer

from transformers.generation import GenerationConfig

# Note: The default behavior now has injection attack prevention off.

tokenizer = AutoTokenizer.from_pretrained("/content/Xunzi-Qwen-Chat", trust_remote_code=True)

max_memory = f'{int(torch.cuda.mem_get_info()[0]/1024**3)-2}GB'

n_gpus = torch.cuda.device_count()

max_memory = {i: max_memory for i in range(n_gpus)}

# use bf16

# model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-72B", device_map="auto", trust_remote_code=True, bf16=True).eval()

# use fp16

# model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-72B", device_map="auto", trust_remote_code=True, fp16=True).eval()

# use cpu only

# model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-72B", device_map="cpu", trust_remote_code=True).eval()

# use auto mode, automatically select precision based on the device.

model = AutoModelForCausalLM.from_pretrained("/content/Xunzi-Qwen-Chat", device_map="auto", load_in_4bit=True,

max_memory=max_memory, offload_folder='offload', trust_remote_code=True).eval()

# Specify hyperparameters for generation. But if you use transformers>=4.32.0, there is no need to do this.

# model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-72B", trust_remote_code=True)

text = "请列举十个中国古代最伟大的诗人:"

inputs = tokenizer(text, return_tensors='pt')

inputs = inputs.to(model.device)

pred = model.generate(**inputs)

print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
1 个赞

第一步:

!git clone https://www.modelscope.cn/Xunzillm4cc/Xunzi-Qwen-Chat.git

就要下载这里 15g 的模型文件 https://modelscope.cn/models/Xunzillm4cc/Xunzi-Qwen-Chat/files ,网络不好的话,用时会很久,需要耐心。

Loading checkpoint shards: 100%

2/2 [01:23<00:00, 39.79s/it]

给以下古文加上标点:若为士而生东晋之初南宋之季其视燕秦晋豫方物已成夷产从互市而得裘帽何殊肃慎之矢也且夫王孙帝子生长深宫御厨玉粒正香而欲观耒耜尚宫锦衣方剪而想像机丝当斯时也披图一观如获重宝矣年来著书一种名曰天工开物伤哉贫也欲购奇考证而乏洛下之资欲招致同人商略赝真而缺陈思之馆随其孤陋见闻藏诸方寸而写之岂有当哉吾友涂伯聚先生诚意动天心灵格物凡古今一言之嘉寸长可取必勤勤恳恳而契合焉岂非上国之荣轨也哉

回答:若为士而生,东晋之初,南宋之季,其视燕、秦、晋、豫方物已成,夷产从互市而得裘帽,何殊肃慎之矢也?且夫王孙帝子生长深宫,御厨玉粒正香,而欲观耒耜,尚宫锦衣方剪,而想像机丝,当斯时也,披图一观,如获重宝矣!年来著书一种,名曰天工开物,伤哉贫也,欲购奇考证而乏洛下之资,欲招致同人商略赝真而缺陈思之馆,随其孤陋见闻,藏诸方寸而写之,岂有当哉!吾友涂伯聚先生,诚意动天,心灵格物,凡古今一言之嘉,寸长可取,必勤勤恳恳而契合焉,岂非上国之荣轨也哉?

1 个赞

给5楼的测试做个对比:

《天工开物译注(上古)》2

1 个赞

我明年可能会想换服务器,到时我们可以合记一下,我可以提供域名还有一些服务器的费用,我估计部署在国外的服务器的话,这个服务应该每年300块左右能够运行下去。

我不需要这个东西,也没兴趣搞服务器。有兴趣的人可以和韩知松合作。

我标点古籍的能力肯定胜过这个A!。我猜测它的语译能力也不会太强,不可能胜过我。

但是假如用这个软件给《四库全书》都加了标点,都做了白话翻译,是不是会比较容易检索《四库全书》的内容呢?能吸引到用户使用吗?

这里有繁体的《四库全书》文本

有兴趣的书友可以做实验。

我猜测再过一段时间,可能会有人设法利用这个古籍chatGPT。

这个所谓的ChatGPT“荀子”是在qwen 7B模型基础上训练的,20亿字古籍文献的训练数据可能也没啥大的用处,因为qwen 7B训练用的数据是以TB计算的,万亿,所以这些文献的大多数它都见过,于是进一步finetuning,也不过是重复,对提高质量没什么帮助。

古籍处理,实际上直接调用openai的GPT 4即可,或者Google的bard(明年部署了Gemini ultra会更强)也行,虽然这些并不是针对汉语、古文训练的,但因为参数大,训练的数据多,应对处理古文的能力是很强的,GPT 4 标点古文的能力大概是中文系研究生的程度,翻译水平稍差,但基本意思是正确的。

还有一种方案,就是训练专门的中文、古籍处理 LLM,好处在于性能不差,但模型可以做得很小,比如1B参数,在家用电脑上也能运行。

1 个赞

或者也可以直接使用 通义千问-72B(Qwen-72B) Qwen/Qwen-72B-Chat · Hugging Face ,参数更大,训练数据更多,总体能力更强(包括古籍处理),但它需要颇为高级的GPU才能运行、推理。

感觉“荀子”的这种模型方案很笨,而且效果不佳。