THU-ESIS / Chinese-Mistral

Chinese-Mistral: An Efficient and Effective Chinese Large Language Model
Apache License 2.0
26 stars 4 forks source link
chinese llm mistral nlp

Chinese-Mistral



🎉 新闻

🚀 介绍

随着Mistral AI公司开源其七十亿参数模型Mistral-7B,该模型超越Llama,成为当前最强大的开源模型之一。Mistral-7B在各类基准测试中,不仅超过了Llama2-13B,而且在推理、数学、代码生成任务中超过Llama2-34B。 然而,Mistral-7B的训练语料主要为英文文本,其中文能力较为欠缺。其次,Mistral-7B的词表不支持中文,导致其对中文的编码和解码效率较低,限制了在中文场景的应用。
为了克服这一局限,清华大学地球系统科学系地球和空间信息科学实验室基于Mistral-7B进行了中文词表扩充和增量预训练,增强了Mistral-7B在中文任务上的表现,并提高了其对中文文本的编解码效率。

📥 模型下载

本项目开源了Chinese-Mistral-7B与Chinese-Mistral-7B-Instruct:

模型 下载地址 说明
Chinese-Mistral-7B HuggingFace
wisemodel
ModelScope
完整基座模型
Chinese-Mistral-7B-Instruct-v0.1 HuggingFace
wisemodel
ModelScope
完整指令精调模型
中英文alpaca_gpt4进行lora微调
Chinese-Mistral-7B-Instruct-v0.2 HuggingFace
wisemodel
完整指令精调模型
百万条高质量数据进行lora微调

💻 模型推理

如下是使用Chinese-Mistral-7B进行推理的代码示例。

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

device = torch.device("cuda:0") if torch.cuda.is_available() else torch.device("cpu")

model_path = "itpossible/Chinese-Mistral-7B-v0.1"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype=torch.bfloat16, device_map=device)

text = "我是一个人工智能助手,我能够帮助你做如下这些事情:"
inputs = tokenizer(text, return_tensors="pt").to(device)

outputs = model.generate(**inputs, max_new_tokens=300)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

如下是使用Chinese-Mistral-7B-Instruct进行推理的代码示例。

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

device = torch.device("cuda:0") if torch.cuda.is_available() else torch.device("cpu")

model_path = "itpossible/Chinese-Mistral-7B-Instruct-v0.2"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype=torch.bfloat16, device_map=device)

text = "请为我推荐中国三座比较著名的山"
messages = [{"role": "user", "content": text}]

inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device)
outputs_id = model.generate(inputs, max_new_tokens=300, do_sample=True)
outputs = tokenizer.batch_decode(outputs_id, skip_special_tokens=True)[0]
print(outputs)

Chinese-Mistral-7B 与Chinese-Mistral-7B-Instruct生成效果示例如下:

模型名称 Chinese-Mistral-7B Chinese-Mistral-7B-Instruct
用户输入
我是一个人工智能助手,我能够帮助你做如下这些事情:
请为我推荐中国三座比较著名的山
模型输出
1、搜索资料,我可以帮你搜索任何你需要的资料。比如搜索某本书的内容,搜索某某地的地图,搜索某部电影的播放地址等。
2、计算,我可以帮你计算各种数学题,比如加法,减法,乘积,除法等等。计算各种不同科目的公式,比如化学方程式的计算,物理公式的计算等。
3、做笔记,你可以把你的想法记录在我的字典里面,或者记录日程安排。
4、翻译,你可以把的设置为你的即时翻译器,将你要翻译的内容放到信息框里面,然后点击发送就可以。
中国的山川风景十分美丽,以下三座山是国内比较著名的景点:
1.泰山:泰山,位于山东省泰安市北部,历史悠久,是我国五大名山之一,海拔约1545米,其雄伟的地势和壮丽的风光吸引了不少游客前来游览。
2.黄山:黄山位于安徽省东南部,因独特的山水风光和丰富的文化和历史积淀而闻名于世,这里悬崖峭壁,奇峰怪石,云海雾海,景色奇特秀丽,被誉为“天下第一奇山”。
3.峨眉山:峨眉山位于四川省峨眉山市东北部,是中国四大佛教名山之一,因雄伟壮观的山峰和丰富多彩的森林资源而闻名于世。这里气候湿润,植被覆盖率极高,景色秀丽,被赞誉为“峨眉天下秀”。

📈 模型性能

模型综合能力

我们采用C-Eval、CMMLU和MMLU三个评测数据集全面评估Chinese-Mistral-7B:

下表展示了开源社区较流行的中文Llama2、中文Mistral与我们发布的Chinese-Mistral-7B的评测结果。评测方式采用5-shot,采用opencompass在相同的实验条件下进行评测。

模型名称 C-Eval CMMLU MMLU 平均得分
Linly-Al/Chinese-LLaMA-2-7B-hf 31.2 30.14 35.09 32.14
hfl/chinese-llama-2-7b 27.4 33.38 37.25 32.68
Linly-Al/Chinese-LLaMA-2-13B-hf 39.9 42.48 52.54 44.97
hfl/chinese-llama-2-13b 41.0 43.25 52.94 45.73
gywy/Mistral-7B-v0.1-chinese 37.4 36.45 37.38 37.08
OpenBuddy/openbuddy-mistral-7b-v13-base 44.4 46.32 57.79 49.50
Chinese-Mistral-7B (本模型) 47.5 47.52 58.29 51.10

由上表可知,Chinese-Mistral-7B的中文和英文通识能力不仅超过同等参数量的中文Llama2模型,而且在多项评测中优于130亿参数量的中文Llama2。同时,Chinese-Mistral-7B的评测表现高于开源社区其他同等参数量的中文Mistral。

中文编解码效率

我们从WuDaoCorpus2中采样训练数据,使用sentencepiece训练中文BPE词表,并人工选取部分其他优秀中文词表进行词表融合。经过严格的人工审核,最终形成的词表大小为63776。为了提高模型计算效率,我们在词表末尾添加<|sym1|>、……、<|sym96|>,使得词表大小为128的倍数,最终得到的词表大小为63872。
我们随机选取了WuDaoCorpus2_part-2021278643作为测试数据以评测分词效果。经统计,测试数据包括67013857个单词,我们用单词数量除以分词后的Token数量,计算压缩率。压缩率越大,表明分词效果越好,在中文场景的编解码效率越高。

模型名称 模型类型 词表大小 Token数量 压缩率
meta-llama/Llama-2-7b-hf Llama 32000 97406876 0.6880
mistralai/Mistral-7B-v0.1 Mistral 32000 76269008 0.8787
THUDM/chatglm2-6b GLM 64789 43487673 1.5410
Linly-Al/Chinese-LLaMA-2-13B-hf Llama 40076 65402900 1.0246
hfl/chinese-llama-2-13b Llama 55296 45763513 1.4644
OpenBuddy/openbuddy-mistral-7b-v13-base Mistral 36608 65329642 1.0256
gywy/Mistral-7B-v0.1-chinese Mistral 48593 46670146 1.4359
Chinese-Mistral-7B (本模型) Mistral 63872 43044156 1.5569

由上表可知,Chinese-Mistral-7B在可观的词表大小情况下,取得了最高的压缩率,表明其能够高效处理中文文本。

📝 训练数据

训练数据采样于WanJuan、baike2018qa、Dolma、gutenberg-books等高质量开源数据集。我们对这些数据集进行细粒度清洗,并充分考虑训练数据集中不同类别数据的占比。

⚠️ 局限性

Chinese-Mistral-7B的开发旨在为开源社区提供一个性能优越的中文大语言模型。请注意,由于模型大小及训练数据规模限制,本模型仍可能生成误导性内容或者有害内容。因此,在部署任何由Chinese-Mistral系列模型驱动的应用程序之前,开发人员必须进行安全测试,对模型进行相应调整,以满足安全性需求。

✒️ 引用

如果您觉得本项目对您的研究有所帮助或使用了本项目的模型,请引用本项目:

@article{chen2024preparedllm,
  author = {Chen, Zhou and Lin, Ming and Wang, Zimeng and Zang, Mingrun and Bai, Yuqi},
  title = {PreparedLLM: Effective Pre-pretraining Framework for Domain-specific Large Language Models},
  year = {2024},
  journal = {Big Earth Data},
  pages = {1--24},
  doi = {10.1080/20964471.2024.2396159},
  url = {https://doi.org/10.1080/20964471.2024.2396159}
}

@misc{Chinese-Mistral,
    author = {Zhou, Chen and Yuqi, Bai},
    title = {Chinese-Mistral: An Efficient and Effective Chinese Large Language Model},
    year = {2024},
    publisher = {GitHub},
    journal = {GitHub repository},
    howpublished = {\url{https://github.com/THU-ESIS/Chinese-Mistral}}
}

结语

我们欢迎社区的支持和合作,共同推动通用大语言模型和领域大语言模型的发展。联系方式:
白玉琪,清华大学地球系统科学系长聘教授,实验室负责人,yuqibai@tsinghua.edu.cn
陈舟,清华大学地球系统科学系博士生,大语言模型组组长,chenz22@mails.tsinghua.edu.cn