中文Mistral模型介绍(Chinese-Mistral)——中文大语言模型

🚀 模型介绍

随着Mistral AI公司开源其七十亿参数模型Mistral-7B,该模型超越Llama,成为当前最强大的开源模型之一。Mistral-7B在各类基准测试中,不仅超过了Llama2-13B,而且在推理、数学、代码生成任务中超过Llama2-34B。
然而,Mistral-7B的训练语料主要为英文文本,其中文能力较为欠缺。其次,Mistral-7B的词表不支持中文,导致其对中文的编码和解码效率较低,限制了在中文场景的应用。

为了克服这一局限,我们基于Mistral-7B进行了中文词表扩充和增量预训练,增强了Mistral-7B在中文任务上的表现,并提高了其对中文文本的编解码效率。

项目地址:https://github.com/THU-ESIS/Chinese-Mistral

其衍生版本JiuZhou-instruct-v0.2效果如下:
在这里插入图片描述
而ChatGPT, Gemini, Moonshot Al, Qianwen, Mixtral 8x7B, Llama 3均回答错误

📥 模型下载

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

模型下载地址说明
Chinese-Mistral-7BHuggingFace
wisemodel
ModelScope
完整基座模型
Chinese-Mistral-7B-InstructHuggingFace
wisemodel
ModelScope
完整指令精调模型
中英文alpaca_gpt4进行lora微调

📈 模型性能

模型综合能力

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

  • C-Eval:它是一个全面的中文基础模型评估套件。包含13948个多项选择题,涵盖52个学科和四个难度级别。它旨在评估模型在人文、社科、理工等多个学科大类上的知识和推理能力。
  • CMMLU:它是一个综合性的中文评估基准。涵盖了从基础学科到高级专业水平的67个主题。它专门用于评估语言模型在中文语境下的知识和推理能力。
  • MMLU:它是一个包含了57个子任务的英文评测数据集。涵盖了从初等数学、美国历史、计算机科学到法律等多个领域,难度覆盖高中水平到专家水平,有效地衡量了模型在人文、社科和理工等多个学科大类中的综合知识能力。

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

模型名称C-EvalCMMLUMMLU平均得分
Linly-Al/Chinese-LLaMA-2-7B-hf31.230.1435.0932.14
hfl/chinese-llama-2-7b27.433.3837.2532.68
Linly-Al/Chinese-LLaMA-2-13B-hf39.942.4852.5444.97
hfl/chinese-llama-2-13b41.043.2552.9445.73
gywy/Mistral-7B-v0.1-chinese37.436.4537.3837.08
OpenBuddy/openbuddy-mistral-7b-v13-base44.446.3257.7949.50
Chinese-Mistral-7B (本模型)47.547.5258.2951.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-hfLlama32000974068760.6880
mistralai/Mistral-7B-v0.1Mistral32000762690080.8787
THUDM/chatglm2-6bGLM64789434876731.5410
Linly-Al/Chinese-LLaMA-2-13B-hfLlama40076654029001.0246
hfl/chinese-llama-2-13bLlama55296457635131.4644
OpenBuddy/openbuddy-mistral-7b-v13-baseMistral36608653296421.0256
gywy/Mistral-7B-v0.1-chineseMistral48593466701461.4359
Chinese-Mistral-7B (本模型)Mistral63872430441561.5569

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

💻 模型推理

如下是使用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=120, do_sample=True)
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.1"
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 = model.generate(inputs, max_new_tokens=300, do_sample=True)
outputs = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]
print(outputs)

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

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

📝 训练数据

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

⚠️ 局限性

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

Chinese-Mistral平替——JiuZhou九州大语言模型

JiuZhou将Chinese-Mistral作为基座模型,在大规模地球科学领域语料上进行增量预训练。由于地球科学是交叉性非常强的学科,因此其通用能力得到进一步的提升。
C-Eval排行榜显示,九州的中文能力超越了开源社区开发的Chinese-Alpaca-33B。
在这里插入图片描述
JiuZhou基座模型下载地址:https://huggingface.co/itpossible/JiuZhou-base
JiuZhou instruct模型下载地址:https://huggingface.co/itpossible/JiuZhou-Instruct-v0.2

<think>嗯,用户想了解Excel中的VLOOKUP函数的用法和参数含义。首先,我需要回忆一下VLOOKUP的基本结构。VLOOKUP是垂直查找函数,用于在表格的首列查找指定的值,然后返回该行中指定列的数据。它的四个参数分别是查找值、表格范围、列索引号和匹配模式。 接下来,我得确认每个参数的具体作用。第一个参数是lookup_value,也就是用户要查找的值,比如产品ID或者姓名。第二个参数是table_array,即查找的范围,这里要注意的是,查找值必须位于这个范围的第一列,否则函数无法正确工作。第三个参数是col_index_num,也就是用户想要返回的数据在表格范围中的第几列,这个列数是从表格范围的第一列开始算起的,不是整个工作表的列。第四个参数是range_lookup,决定是精确匹配还是近似匹配,通常用FALSE或0来指定精确匹配,避免错误。 然后,用户可能需要一个具体的例子来理解如何使用。比如,假设有一个产品价格表,用户想根据产品ID查找对应的价格。这时候,VLOOKUP就可以在ID列查找,然后返回价格列的数据。同时,要提醒用户注意表格范围最好使用绝对引用,比如$A$2:$C$100,这样在拖动公式时范围不会变化。 可能遇到的问题也需要考虑。比如,如果查找值不在表格的第一列,或者列索引号超过了表格的列数,函数会返回错误。此外,数据格式不一致也可能导致问题,比如查找值是数字,而表格中是文本格式的数字,这时候需要统一格式。还有,当出现#N/A错误时,可能是查找值不存在,或者匹配模式设置不正确,需要检查参数是否正确。 用户可能还会问到如何避免常见的错误,比如部分数据匹配出错的情况。这时候需要检查是否有多余的空格,或者数据格式不一致,或者表格范围没有锁定导致拖动时偏移。此外,XLOOKUP作为VLOOKUP的升级版,可能在某些情况下更方便,比如可以向左查找或者返回多列数据,这也是可以提及的内容。 最后,整理步骤,从基础语法到参数说明,再到具体案例,逐步引导用户理解如何使用VLOOKUP函数。同时,提供常见错误和解决方法,帮助用户在实际应用中避免问题。如果有必要,还可以比较VLOOKUP和其他查找函数的区别,比如HLOOKUP或XLOOKUP,但根据用户的问题,主要集中在VLOOKUP本身即可。</think>### Excel VLOOKUP函数详解 #### 一、基础语法与参数说明 VLOOKUP函数的语法为: $$=VLOOKUP(lookup\_value, table\_array, col\_index\_num, [range\_lookup])$$ 包含4个参数: 1. **lookup_value**(必填):要查找的值(如单元格引用或具体值) 2. **table_array**(必填):包含数据的表格范围(必须包含查找列和返回列) 3. **col_index_num**(必填):返回值所在列的序号(从table_array第一列开始计数) 4. **range_lookup**(可选):匹配类型 - `TRUE`/`1`:近似匹配(默认值,需数据升序排列) - `FALSE`/`0`:精确匹配(常用选项) [^1][^2] #### 二、使用步骤演示(工资表查询案例) 假设需要根据员工编号查询工资: 1. 建立查询单元格(如`B12`) 2. 输入公式: ```excel =VLOOKUP(A12, $A$2:$D$100, 4, 0) ``` - `A12`:待查询的员工编号 - `$A$2:$D$100`:锁定数据区域(绝对引用) - `4`:返回第4列(工资列) - `0`:精确匹配 [^2][^3] #### 三、常见错误与解决方法 | 错误现象 | 原因 | 解决方案 | |---------|------|---------| | #N/A | 查找值不存在 | 检查数据源或改用`IFERROR`容错 | | #REF! | 列序号超出范围 | 确认col_index_num ≤ 表格列数 | | 部分匹配失败 | 数据格式不一致 | 统一数值/文本格式 | | 结果错位 | 表格未锁定 | 使用`$`符号固定区域引用 | [^3][^4] #### 四、进阶技巧 1. **多条件查询**: 使用辅助列合并多个条件字段 ```excel =VLOOKUP(A2&B2, $D$2:$F$100, 3, 0) ``` 2. **通配符匹配**: `"*"`匹配任意字符,`"?"`匹配单个字符 ```excel =VLOOKUP("张*", $A$2:$C$100, 3, 0) ``` 3. **跨表查询**: 引用其他工作表数据 ```excel =VLOOKUP(A2, Sheet2!$A$2:$D$100, 4, 0) ``` [^1][^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值