MediaTek 研究室 Breeze-7B(以下简称 Breeze-7B)是基于 Mistral-7B 的一种语言模型系列,专门针对繁体中文使用设计。【F16 / Q4】
195 拉取 更新于 2 个月前
更新于 3 个月前
3 个月前
2961e483014d · 4.5GB
README文件
来源: https://hugging-face.cn/MediaTek-Research/Breeze-7B-Instruct-v1_0
MediaTek Research Breeze-7B-Instruct-v1_0
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 在原始词汇的基础上增加了 30,000 个繁体中文词素。由于词汇量的增加,在其他条件相同的情况下,Breeze-7B 在繁体中文上的推理速度是 Mistral-7B 和 Llama 7B 的两倍。[见 推理性能。]
- Breeze-7B-Instruct 可以直接用于常见任务,如问答、RAG、多轮对话和摘要。
性能方面
- 与台湾-LLM-7B/13B-chat、QWen(1.5)-7B-Chat 和 Yi-6B-Chat 等同等规模的开源同代产品相比,Breeze-7B-Instruct 在繁体中文和英语的基准测试中表现出令人印象深刻的性能。[见 聊天模型性能。]
由以下成员(按字母顺序排列)的项目:许湛然、刘昶乐、廖峰挺、许博竣、陈宜昌和导师许大山。
演示
特性
- Breeze-7B-Base-v1_0
- 将词汇字典的大小从32k扩展到62k,以更好地支持繁体中文
- 8k令牌上下文长度
- 将词汇字典的大小从32k扩展到62k,以更好地支持繁体中文
- Breeze-7B-Instruct-v1_0
- 将词汇字典的大小从32k扩展到62k,以更好地支持繁体中文
- 8k令牌上下文长度
- 多轮对话(不针对有害性进行特殊处理)
- 将词汇字典的大小从32k扩展到62k,以更好地支持繁体中文
模型详细信息
- Breeze-7B-Base-v1_0
- 微调自: mistralai/Mistral-7B-v0.1
- 模型类型:因果解码器仅 Transformer 语言模型
- 语言:英语和繁体中文(zh-tw)
- 微调自: mistralai/Mistral-7B-v0.1
- Breeze-7B-Instruct-v1_0
- 微调自: MediaTek-Research/Breeze-7B-Base-v1_0
- 模型类型:因果解码器仅 Transformer 语言模型
- 语言:英语和繁体中文(zh-tw)
- 微调自: MediaTek-Research/Breeze-7B-Base-v1_0
基础模型性能
在这里,我们比较 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+ (ACC) | DRCD (EM) | Table (ACC) | MMLU (ACC) |
---|---|---|---|---|---|
TC, 知识 | TC, 推理 | TC, 推理 | EN, 知识 | ||
5 shot | 3 shot | 5 shot | 5 shot | ||
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 与其他公开指令微调的语言模型,这些模型在中文中的性能广泛认可。
我们还列出了 GPT-3.5 Turbo (1106) 的基准分数,它代表了一种广泛使用的高质量云语言模型 API 服务,仅供参考。
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。所有选择问题都通过对数似然率进行调整。
我们使用从 fastchat llm_judge (GPT4 作为评判者) 改进的代码来评估 MT-Bench-tw 和 MT-Bench。
模型 | #参数数量 | ↑ MT-Bench-tw (得分) | TMMLU+ (ACC) | Table (ACC) | MT-Bench (得分) | MMLU (ACC) |
---|---|---|---|---|---|---|
TC, 聊天 | TC, 知识 | TC, 推理 | EN, 聊天 | EN, 知识 | ||
0 shot | 0 shot | 0 shot | 0 shot | 0 shot | ||
GPT-3.5-Turbo | 7.1 | 43.56 | 45.14 | 7.9 | 67.09 | |
Qwen1.5-7B-Chat | 7B | 6.4 | 45.65 | 34.72 | 7.6 | 61.85 |
Breeze-7B-Instruct-v1_0 | 7B | 6.0 | 42.67 | 39.58 | 7.4 | 61.73 |
Mistral-7B-v0.2-Instruct | 7B | 5.6 | 34.95 | 33.33 | 7.6 | 59.97 |
Yi-6B-Chat | 6B | 5.0 | 44.79 | 25.69 | 6.0 | 59.45 |
台湾-LLM-13B-v2.0-chat | 13B | 5.0 | 29.47 | 23.61 | N/A* | 50.50 |
台湾-LLM-7B-v2.1-chat | 7B | 4.2 | 28.08 | 31.25 | N/A* | 42.72 |
* 台湾-LLM 模型用繁体中文回答(英语)多轮问题。
关于 MT-Bench-tw (0 shot) 的详细信息 模型 |
STEM | 提取 | 推理 | 数学 | 编码 | 角色扮演 | 写作 | 人文学科 | AVG |
---|---|---|---|---|---|---|---|---|---|
GPT-3.5-Turbo | 7.8 | 6.1 | 5.1 | 6.4 | 6.2 | 8.7 | 7.4 | 9.3 | 7.1 |
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 |
台湾-LLM-13B-v2.0-chat | 6.1 | 3.4 | 4.1 | 2.3 | 3.1 | 7.4 | 6.6 | 6.8 | 5.0 |
台湾-LLM-7B-v2.1-chat | 5.2 | 2.6 | 2.3 | 1.2 | 3.4 | 6.6 | 5.7 | 6.8 | 4.2 |
关于 TMMLU+ (0 shot) 的详细信息 模型 |
STEM | 社会科学 | 人文学科 | 其他 | AVG |
---|---|---|---|---|---|
GPT-3.5-Turbo | 41.58 | 48.52 | 40.96 | 43.18 | 43.56 |
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 |
台湾-LLM-13B-v2.0-chat | 27.74 | 33.69 | 27.03 | 29.43 | 29.47 |
台湾-LLM-7B-v2.1-chat | 25.58 | 31.76 | 27.36 | 27.61 | 28.08 |
推理性能
在本测试中,我们使用网络文章的前700个字符作为输入,要求模型再次撰写相同的文章。
所有推理均在2个RTX A6000 GPU上运行(使用 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 |
台湾-LLM-7B-v2.1-chat | 26.26 | 2.2k |
<!— | 台湾-LLM-13B-v2.0-chat | 36.80 |
在 Transformers 中使用
首先安装直接依赖项
pip install transformers torch accelerate
如果要使用 flash-attention2 快速进行推理,则需要安装这些依赖项
pip install packaging ninja
pip install flash-attn
然后在 transformers 中加载模型
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Instruction Model
model = AutoModelForCausalLM.from_pretrained(
"MediaTek-Research/Breeze-7B-Instruct-v1_0",
device_map="auto",
torch_dtype=torch.bfloat16,
# attn_implementation="flash_attention_2" # optional
)
# Basemodel
model = AutoModelForCausalLM.from_pretrained(
"MediaTek-Research/Breeze-7B-Base-v1_0",
device_map="auto",
torch_dtype=torch.bfloat16,
# attn_implementation="flash_attention_2" # optional
)
Breeze-7B-Instruct 的查询结构如下:
<s>SYS_PROMPT [INST] QUERY1 [/INST] RESPONSE1 [INST] QUERY2 [/INST]
其中 SYS_PROMPT
,QUERY1
,RESPONSE1
和 QUERY2
可以由用户提供。
建议的默认 SYS_PROMPT
是:
You are a helpful AI assistant built by MediaTek Research. The user you are helping speaks Traditional Chinese and comes from Taiwan.
我们还把 chat_template
整合到了 tokenizer_config.json 中,因此你可以使用 apply_chat_template
来获取提示。
>>> from transformers import AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("MediaTek-Research/Breeze-7B-Instruct-v1_0")
>>> chat = [
... {"role": "user", "content": "你好,請問你可以完成什麼任務?"},
... {"role": "assistant", "content": "你好,我可以幫助您解決各種問題、提供資訊和協助您完成許多不同的任務。例如:回答技術問題、提供建議、翻譯文字、尋找資料或協助您安排行程等。請告訴我如何能幫助您。"},
... {"role": "user", "content": "太棒了!"},
... ]
>>> tokenizer.apply_chat_template(chat, tokenize=False)
"<s>You are a helpful AI assistant built by MediaTek Research. The user you are helping speaks Traditional Chinese and comes from Taiwan. [INST] 你好,請問你可以完成什麼任務? [/INST] 你好,我可以幫助您解決各種問題、提供資訊和協助您完成許多不同的任務。例如:回答技術問題、提供建議、翻譯文字、尋找資料或協助您安排行程等。請告訴我如何能幫助您。 [INST] 太棒了! [/INST] "
# Tokenized results
# ['▁', '你好', ',', '請問', '你', '可以', '完成', '什麼', '任務', '?']
# ['▁', '你好', ',', '我', '可以', '幫助', '您', '解決', '各種', '問題', '、', '提供', '資訊', '和', '協助', '您', '完成', '許多', '不同', '的', '任務', '。', '例如', ':', '回答', '技術', '問題', '、', '提供', '建議', '、', '翻譯', '文字', '、', '尋找', '資料', '或', '協助', '您', '安排', '行程', '等', '。', '請', '告訴', '我', '如何', '能', '幫助', '您', '。']
# ['▁', '太', '棒', '了', '!']
文本生成可以通过 generate
和 apply_chat_template
函数完成。
>>> outputs = model.generate(tokenizer.apply_chat_template(chat, return_tensors="pt"),
>>> # adjust below parameters if necessary
>>> max_new_tokens=128,
>>> top_p=0.01,
>>> top_k=85,
>>> repetition_penalty=1.1,
>>> temperature=0.01)
>>>
>>> print(tokenizer.decode(outputs[0]))
参考文献
@article{MediaTek-Research2024breeze7b,
title={Breeze-7B Technical Report},
author={Chan-Jan Hsu and Chang-Le Liu and Feng-Ting Liao and Po-Chun Hsu and Yi-Chang Chen and Da-Shan Shiu},
year={2024},
eprint={2403.02712},
archivePrefix={arXiv},
primaryClass={cs.CL}
}