MiniCPM-2B-SFT - MiniCPM-2B-SFT

模型详细情况和参数

MiniCPM-2B-SFT

模型全称
MiniCPM-2B-SFT
模型简称
MiniCPM-2B-SFT
模型类型
基础大模型
发布日期
2024-02-01
预训练文件大小
10.9GB
是否支持中文(中文优化)
最高支持的上下文长度
2K
模型参数数量(亿)
24.0
模型代码开源协议
Apache 2.0
预训练结果开源商用情况
OpenBMB通用模型许可协议-来源说明-宣传限制-商业授权 - 免费商用授权
在线演示地址
暂无
DataLearnerAI的模型介绍
基础模型
无基础模型
发布机构

MiniCPM-2B-SFT 简介

MiniCPM-2B-SFT是由面壁智能开源的一个24亿参数规模的大语言模型,是一个参数规模不大的语言模型。但是官方的评测结果中显示,该模型的评测水平超过了很多70亿参数规模的大语言模型,最高与130亿参数的Llama2-13B差不多。


MiniCPM-2B-SFT简介

MiniCPM-2B-SFT最大的特点是参数规模较小,仅24亿。官方说其INT4量化版本可以在手机上部署运行,且文本生成速度与人类差不多。这意味着手机端运行也能达到每秒130个中文汉字左右!速度非常快。同时因为参数量小,一张3090或者4090显卡即可做全参数微调。一张1080或者20280即可做高效参数微调。


MiniCPM包含两个版本,一个是指令微调的SFT版本,即本模型。还有一个做过RLHF的DPO版本。


MiniCPM-2B-SFT评测结果

MiniCPM的评测结果很好,与很多70-100亿参数规模的模型相比毫不逊色,如下图所示:




该图来自DataLearnerAI大模型评测数据收集表,按照MMLU排序,可以看到,24亿参数规模的MiniCPM在MMLU的得分甚至与GPT-3差不多,也超过了baichuan-13B、ChatGLM2-6B等模型。其GSM8K分数更高。也是目前30亿参数规模大语言模型中效果最强的,具体参考: https://www.datalearner.com/ai-models/llm-evaluation 


在代码评测中,MiniCPM效果也非常惊人:


其HumanEval的评测结果甚至超过了GPT-3.5,也比此前最强小规模参数的Phi-2更强!接近300亿参数规模的YAYI2-30B!具体参考: https://www.datalearner.com/ai-models/llm-coding-evaluation 


MiniCPM-2B-SFT的运行速度

为了测试MiniCPM-2B-SFT,DataLearnerAI在Google Colab上部署了两个版本,分别是32位全精度的MiniCPM-2B-SFT-FP32以及bf16半精度的MiniCPM-2B-SFT-BF16。需要注意的是,通常使用HuggingFace的transformers库载入模型,加入torch_dtype=torch.float16参数即可,但是此次官方额外提供了一个bf16版本,可能是做了特殊的处理,让速度加快的同时性能不会下降。


最终,我们在T4的GPU上(15G显存)测得的结果如下:


模型名称模型精度硬件显存显存占用context_length(tokens数量)输出结果(tokens数量)首字符时间生成字符时间总耗时tokens/秒
openbmb/MiniCPM-2B-sft-fp32torch.float32T4 * 115GB10.7GB23550.1420488.0820358.2220359.49
openbmb/MiniCPM-2B-sft-bf16torch.float32T4 * 115GB10.7GB23290.1621261.635761.79810228.919388
openbmb/MiniCPM-2B-sft-bf16torch.float32T4 * 115GB10.7GB163020.19226236.61379936.8037998.912123



怎么说呢,这个每秒生成的tokens数量在8-9tokens,在输入和输出比较短的时候可以达到28tokens每秒,只能说在这个环境上效果很一般。


MiniCPM-2B实际测试结果

为了验证MiniCPM-2B的实际能力,我们测试了几个输入样例。


测试1"小美是一个女孩,她有三个兄弟。每一个兄弟都有2个姐妹。那么小美有几个姐妹?"

MiniCPM-2B-DPO-FP32输出:题目提到小美有三个兄弟,并且每一个兄弟都有2个姐妹。这里的关键信息是“姐妹”这一词。由于每个兄弟都有两个姐妹,这意味着小美的所有兄弟姐妹中,除了小美本人外,其余都是姐妹。因此,小美本人是唯一的一个兄弟。所以,小美有三个兄弟,三个兄弟各自有一个姐妹,即小美自己。因此,小美有两个姐妹。

是否正确:错误


测试2:"今天我有3个苹果,昨天我吃了一个,今天我还剩几个苹果"

MiniCPM-2B-DPO-FP32输出:今天你还剩下2个苹果。因为昨天你吃了一个苹果,所以现在你手里还有3个苹果减去1个,结果是2个苹果。

是否正确:错误


测试3:本蔬菜超市价格如下:茄子一元一斤,一个月超过10元的茄子,价格5毛一斤,黄豆二元一斤、猪肉16元一斤、牛肉30元一斤、青菜1元一斤,使用json格式返回所有商品价格。

MiniCPM-2B-DPO-FP32输出:

以下是一个使用JSON格式返回所有商品价格的示例:

```json

{

  "cucumbers": 1,

  "extra_cost_cucumbers": 10,

  "chopped_broccoli": 1,

  "extra_cost_chopped_broccoli": 0.05,

  "soy_beans": 2,

  "extra_cost_soy_beans": 0,

  "beef": 30,

  "extra_cost_beef": 0,

  "pork": 16

}

```

在这个JSON对象中,我们定义了每种商品的重量和价格,以及每种商品的额外价格(如果有)。

是否正确:错误


测试4:"本蔬菜超市有会员制和非会员制,每个用户每个月会员费20美元,会员在28日所有商品八折。商店黄豆二元一斤7、猪肉16元一斤、牛肉30元一斤,请问不考虑会员费,一个会员之前没有买过任何东西,他在27日买了三斤牛肉需要花多少钱?"

MiniCPM-2B-DPO-FP32输出:这个题目考察的是基本的数学运算,包括乘法、加法和对数的应用。题目中提到,会员在28日所有商品八折,即会员购买商品的价格是原价的80%。此外,题目还提到会员每月需支付20美元的费用。然而,题目中提到的是一个会员在27日购买三斤牛肉,我们需要计算在不考虑会员费的情况下,会员在27日购买三斤牛肉的总花费。

首先,我们需要知道黄豆、猪肉和牛肉的购买单价。黄豆的单价是7元/斤,猪肉的单价是16元/斤,牛肉的单价是30元/斤。然后,我们需要根据题目中提供的信息计算出在27日购买三斤牛肉的总价格。因为会员在28日所有商品八折,所以27日购买的价格是原价的92%。因此,我们首先需要计算出黄豆、猪肉和牛肉在27日购买的总价。然后,我们需要将这个总价格乘以0.92,得到不含会员费时的总价。

答案:26.8元

是否正确:错误



测试5:"This vegetable supermarket has a membership system and a non-membership system. Each user pays a monthly membership fee of $20. Members get a 20% discount on all items on the 28th. The store sells soybeans at $2 per pound, pork at $16 per pound, and beef at $30 per pound. Without considering the membership fee, how much does a member need to pay if they buy three pounds of beef on the 27th, assuming they haven't purchased anything before?"

MiniCPM-2B-DPO-FP32输出:

Step 1: Calculate the cost of buying three pounds of beef without considering the membership fee. The price per pound of beef is $30, so the cost of buying three pounds of beef is 3 * $30 = $90.

Step 2: Calculate the total cost of buying three pounds of beef with the 20% discount. The discount is 20% of the total cost, so the discount amount is 0.20 * $90 = $18. Subtract the discount amount from the total cost to get the final cost. final_cost = $90 - $18 = $72.

Step 3: Calculate the total cost of the membership fee. Since the membership fee is $20 per month, the total membership fee for 27 days (excluding the day of purchase) is $20 * 26 = $520.

Step 4: Subtract the total membership fee from the final cost to get the final amount that a member needs to pay. final_amount = final_cost - total_membership_fee = $72 - $520 = -$448.

Step 5: Since the final amount is negative, it means that the total membership fee exceeds the final cost by the total membership fee. Therefore, we need to calculate the total membership fee based on the actual purchase. We need to calculate the total membership fee based on the actual purchase by adding the discount amount to the final cost. total_membership_fee = final_cost + discount_amount = $72 + $18 = $90.

Answer:

90

是否正确:错误


需要注意的是,上述过程只是从几个零碎的案例输入测试结果,不代表实际模型水平,大家可以按照自己的需求测试。另外,这个测试的是MiniCPM-2B-DPO-FP32版本,非MiniCPM-2B-SFT-FP32版本这个结果比Mistral-7B-Instruct-0.2差一些。


这些问题与其它模型对比


测试问题MiniCPMChatGLM3-6BQwen-14B-ChatGPT-4Mistral-7B-Instruct
1错误错误正确正确错误
2错误错误错误错误错误
3错误正确正确正确错误
4错误正确错误正确正确
5错误错误错误正确错误


从这个角度看,虽然MiniCPM-2B在这五个问题表现一般,但是其它模型似乎也不太好。所以可能是这五个问题过于困难了


在一些常识的问答中,如中国最高山峰、合肥到上海的交通工具推荐等都回答非常不错。



我们还测试了一个用Python实现余弦相似性的方法,MiniCPM答案如下:

在Python中,我们可以使用NumPy库来计算余弦相似度。以下是一个简单的余弦相似度计算方法: 

```python 

import numpy as np 

def cosine_similarity(x, y): 

  dot_product = np.dot(x, y) 

  norm_x = np.linalg.norm(x)

  norm_y = np.linalg.norm(y) 

  if norm_x == 0 or norm_y == 0: 

     return 0 

  return dot_product / (norm_x * norm_y)


# 示例

x = np.array([1, 2, 3])

y = np.array([4, 5, 6]) 

similarity = cosine_similarity(x, y) 


print("余弦相似度:", similarity)

 ```


在这个示例中,我们首先导入NumPy库。然后,我们定义了一个名为`cosine_similarity`的函数,该函数接受两个数组(x和y)作为输入,并计算它们之间的余弦相似度。 函数首先计算两个向量的点积(dot\_product),然后计算它们的长度(norm\_x和norm\_y)。如果长度为零,则返回0,因为余弦相似度不能为0。最后,返回点积除以长度乘积的结果,即余弦相似度。 在示例中,我们创建了两个数组x和y,并计算它们之间的余弦相似度。输出结果为0.8,表示两个向量之间的余弦相似度为0.8。


大家可以直接复制一个Notebook自行测试,Google Colab代码样例: https://colab.research.google.com/drive/16cwuIoodtQLPziSwAGHRYzclETVe8jaM?usp=sharing 


欢迎大家关注DataLearner官方微信,接受最新的AI模型和技术推送

MiniCPM-2B-SFT所属的领域
自然语言处理

自然语言处理

Natural Language Process

35个资源

MiniCPM-2B-SFT相关的任务
问答系统

问答系统

Question Answering

35个资源