MediaTek Research Breeze-7B(以下简称 Breeze-7B)是一个基于 [Mistral-7B] 构建的语言模型系列,专为繁体中文使用场景设计。
[Breeze-7B-Base] 是 Breeze-7B 系列的基础模型。 如果您拥有大量微调数据,并希望针对特定使用场景进行模型调整,那么它会是一个合适的选择。
Breeze-7B-Instruct 源自基础模型 Breeze-7B-Base,因此该模型可直接用于处理常见任务。
目前发布的 Breeze-7B 版本为 v1.0,与 Breeze-7B-v0_1 相比,其训练过程更为精细,在英文和繁体中文上的性能均得到显著提升。
有关此模型的详细信息,请阅读我们的 论文。
实用性方面:
性能方面:
此处我们将 Breeze-7B-Base-v1_0 与其他参数规模相近、且在中文领域表现广受认可的开源基础语言模型进行比较。 TMMLU+、DRCD 和 Table 数据来源于 [MediaTek-Research/TCEval-v2]。 [MediaTek-Research/TCEval-v2] 衍生自 [TCEval-v1] 和 [ikala/tmmluplus]。MMLU 数据来源于 [hails/mmlu_no_train]。 我们使用基于 [EleutherAI/lm-evaluation-harness] 修改的代码来评估 TMMLU+、DRCD、Table 和 MMLU。所有选择题均采用对数似然法进行选择。
| 模型 | 参数数量 | TMMLU+(准确率) | DRCD(精确匹配) | Table(准确率) | MMLU(准确率) |
|---|---|---|---|---|---|
| 中文,知识类 | 中文,推理类 | 中文,推理类 | 英文,知识类 | ||
| 5 轮示例 | 3 轮示例 | 5 轮示例 | 5 轮示例 | ||
| [Yi-6B] | 6B | 49.63 | 76.61 | 34.72 | 65.35 |
| [Qwen1.5-7B] | 7B | 46.59 | 74.41 | 30.56 | 63.07 |
| [Breeze-7B-Base-v1_0] | 7B | 42.67 | 80.61 | 31.99 | 61.24 |
| [Mistral-7B-v0.1] | 7B | 36.93 | 79.27 | 27.78 | 64.89 |
本文将Breeze-7B-Instruct-v1_0与其他参数规模相近、在中文领域表现优异的开源指令微调语言模型进行对比。
TMMLU+、DRCD、Table和MT-Bench-tw的数据来源于[MediaTek-Research/TCEval-v2]。[MediaTek-Research/TCEval-v2]基于[TCEval-v1]和[ikala/tmmluplus]开发。MMLU的数据来源于[hails/mmlu_no_train]。MT-Bench的数据来源于[lmsys/mt_bench_human_judgments]。
我们使用基于[EleutherAI/lm-evaluation-harness]修改的代码对TMMLU+、DRCD、Table和MMLU进行评估。所有选择题均采用对数似然法进行选项选择。
| 模型 | 参数规模 | MT-Bench-tw(得分) | TMMLU+(准确率) | Table(准确率) | MT-Bench(得分) | MMLU(准确率) |
|---|---|---|---|---|---|---|
| 繁体中文,对话 | 繁体中文,知识 | 繁体中文,推理 | 英文,对话 | 英文,知识 | ||
| 零样本 | 零样本 | 零样本 | 零样本 | 零样本 | ||
| [Qwen1.5-7B-Chat] | 70亿 | 6.4 | 45.65 | 34.72 | 7.6 | 61.85 |
| Breeze-7B-Instruct-v1_0 | 70亿 | 6.0 | 42.67 | 39.58 | 7.4 | 61.73 |
| [Mistral-7B-v0.2-Instruct] | 70亿 | 5.6 | 34.95 | 33.33 | 7.6 | 59.97 |
| [Yi-6B-Chat] | 60亿 | 5.0 | 44.79 | 25.69 | 6.0 | 59.45 |
| [Taiwan-LLM-13B-v2.0-chat] | 130亿 | 5.0 | 29.47 | 23.61 | 不适用* | 50.50 |
| [Taiwan-LLM-7B-v2.1-chat] | 70亿 | 4.2 | 28.08 | 31.25 | 不适用* | 42.72 |
* Taiwan-LLM模型以繁体中文回答英文多轮问题。
| MT-Bench-tw(零样本)详细数据: 模型 | 理工科 | 信息提取 | 推理 | 数学 | 编程 | 角色扮演 | 写作 | 人文社科 | 平均分 |
|---|---|---|---|---|---|---|---|---|---|
| Qwen1.5-7B-Chat | 9 | 5.6 | 4.7 | 2.8 | 3.7 | 8.0 | 8.0 | 9.4 | 6.4 |
| Breeze-7B-Instruct-v1_0 | 7.8 | 5.2 | 4.2 | 4.2 | 4.1 | 7.6 | 5.9 | 9.1 | 6.0 |
| Mistral-7B-v0.2-Instruct | 6.9 | 4.6 | 4.3 | 3.3 | 4.4 | 7.2 | 6.2 | 7.8 | 5.6 |
| Yi-6B-Chat | 7.3 | 2.7 | 3.1 | 3.3 | 2.3 | 7.2 | 5.2 | 8.8 | 5.0 |
| Taiwan-LLM-13B-v2.0-chat | 6.1 | 3.4 | 4.1 | 2.3 | 3.1 | 7.4 | 6.6 | 6.8 | 5.0 |
| Taiwan-LLM-7B-v2.1-chat | 5.2 | 2.6 | 2.3 | 1.2 | 3.4 | 6.6 | 5.7 | 6.8 | 4.2 |
| TMMLU+(零样本)详细数据: 模型 | 理工科 | 社会科学 | 人文科学 | 其他 | 平均分 |
|---|---|---|---|---|---|
| Qwen1.5-7B-Chat | 41.48 | 51.66 | 44.05 | 45.40 | 45.65 |
| Breeze-7B-Instruct-v1_0 | 36.46 | 48.38 | 45.11 | 40.75 | 42.67 |
| Mistral-7B-v0.2-Instruct | 32.79 | 38.05 | 34.89 | 34.04 | 34.94 |
| Yi-6B-Chat | 37.80 | 51.74 | 45.36 | 44.25 | 44.79 |
| Taiwan-LLM-13B-v2.0-chat | 27.74 | 33.69 | 27.03 | 29.43 | 29.47 |
| Taiwan-LLM-7B-v2.1-chat | 25.58 | 31.76 | 27.36 | 27.61 | 28.08 |
在本测试中,我们使用[网络文章]的前700个字符作为输入,要求模型重新撰写同一篇文章。
所有推理均在Atlas 800T A2上运行(使用vllm,张量并行大小为2)。
| 模型 | 推理时间(秒) | 预估最大输入长度(字符) |
|---|---|---|
| Qwen1.5-7B-Chat | 9.35 | 38.9k |
| Yi-6B-Chat | 10.62 | 5.2k |
| Breeze-7B-Instruct-v1_0 | 10.74 | 11.1k |
| Mistral-7B-Instruct-v0.2 | 20.48 | 5.1k |
| Taiwan-LLM-7B-v2.1-chat | 26.26 | 2.2k |
import argparse
from openmind import AutoModel, AutoTokenizer
from openmind import is_torch_npu_available
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--model_name_or_path",type=str,help="Path to model",default=None,)
args = parser.parse_args()
return args
if __name__ == '__main__':
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
args = parse_args()
model_path = args.model_name_or_path
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True, add_eos_token=True)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True).to(device)
inputs = tokenizer.encode("def print_hello_world():\tprint('Hello World!')", return_tensors="pt").to(device)
embedding = model(inputs)[0]
print(f'Dimension of the embedding: {embedding[0].size()}')
print(embedding)