MediaTek Research Breeze-7B(以下简称Breeze-7B)是在Mistral-7B的基础上构建的语言模型家族,适用于繁体中文。〈F16 / Q4〉

7B

195 Pulls 更新于2个月前

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、多轮聊天和摘要。

性能
- 将 Breeze-7B-Instruct 与类似规模的开放源代码同行(如台湾-LLM-7B/13B-chat、QWen(1.5)-7B-Chat、Yi-6B-Chat)进行比较时,在繁体中文和英语的基准测试中表现出令人印象深刻的结果。[见 聊天模型性能]

项目成员(按字母顺序):许湛然、刘昶乐、廖峰挺、许博竣、陈宜昌和指导老师许大山。

演示

在这里尝试演示 👩‍💻🧑🏻‍💻

特点

  • Breeze-7B-Base-v1_0
    • 将词汇字典大小从32k扩展到62k,以更好地支持繁体中文
    • 8k-token上下文长度
  • Breeze-7B-Instruct-v1_0
    • 将词汇字典大小从32k扩展到62k,以更好地支持繁体中文
    • 8k-token上下文长度
    • 多轮对话(未对有害性进行特殊处理)

模型详情

  • Breeze-7B-Base-v1_0
    • 微调自:mistralai/Mistral-7B-v0.1
    • 模型类型:因果解码器唯一的transformer语言模型
    • 语言:英语和繁体中文(zh-tw)
  • Breeze-7B-Instruct-v1_0

基础模型性能

在此,我们比较Breeze-7B-Base-v1_0与其他参数大小相似的知名开源基础语言模型,这些模型在中文方面表现良好。
TMMLU+DRCDTable数据来源于MediaTek-Research/TCEval-v2
MediaTek-Research/TCEval-v2来源于TCEval-v1
ikala/tmmluplusMMLU来源于hails/mmlu_no_train
我们使用从EleutherAI/lm-evaluation-harness改进的代码来评估TMMLU+DRCDTableMMLU。所有选择题均通过对数似然的选择进行选择。

模型 #参数 TMMLU+(准确率) DRCD(期望最大化) Table(准确率) MMLU(准确率)
TC,知识 TC,推理 TC,推理 EN,知识
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与其他参数大小相似的知名开源指令微调语言模型,这些模型在中文方面表现良好。
此外,我们还列出了GPT-3.5 Turbo(1106)的基准分数,它代表了最广泛使用的高质量云语言模型API服务之一,以供参考。
TMMLU+DRCDTableMT-Bench-tw数据来源于MediaTek-Research/TCEval-v2
MediaTek-Research/TCEval-v2来源于TCEval-v1
ikala/tmmluplusMMLU来源于hails/mmlu_no_train
MT-Bench数据来源于lmsys/mt_bench_human_judgments
我们使用从EleutherAI/lm-evaluation-harness改进的代码来评估TMMLU+DRCDTableMMLU。所有选择题均通过对数似然的选择进行选择。
我们使用从fastchat llm_judge(GPT4作为评判)改进的代码来评估MT-Bench-twMT-Bench

模型 #参数 MT-Bench-tw(分数) TMMLU+(准确率) Table(准确率) MT-Bench(分数) MMLU(准确率)
TC,聊天 TC,知识 TC,推理 EN,聊天 EN,知识
0步 0步 0步 0步 0步
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
Taiwan-LLM-13B-v2.0-chat 13B 5.0 29.47 23.61 N/A* 50.50
Taiwan-LLM-7B-v2.1-chat 7B 4.2 28.08 31.25 N/A* 42.72

* Taiwan-LLM模型在回复多轮问题(英语)时使用繁体中文。

MT-Bench-tw(0步)的详细信息
模型
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
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+(0步)的详细信息
模型
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
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个字符作为输入,并要求模型再次撰写相同的文章。
所有推理都在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
Taiwan-LLM-7B-v2.1-chat 26.26 2.2k
<!— Taiwan-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_PROMPTQUERY1RESPONSE1QUERY2可以由用户提供。

建议的默认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
# ['▁', '你好', ',', '請問', '你', '可以', '完成', '什麼', '任務', '?']
# ['▁', '你好', ',', '我', '可以', '幫助', '您', '解決', '各種', '問題', '、', '提供', '資訊', '和', '協助', '您', '完成', '許多', '不同', '的', '任務', '。', '例如', ':', '回答', '技術', '問題', '、', '提供', '建議', '、', '翻譯', '文字', '、', '尋找', '資料', '或', '協助', '您', '安排', '行程', '等', '。', '請', '告訴', '我', '如何', '能', '幫助', '您', '。']
# ['▁', '太', '棒', '了', '!']

文本生成可以通过 generateapply_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}
}