当前位置:AIGC资讯 > AIGC > 正文

详解“小而优”的大语言模型Zephyr 7B

Zephyr是Hugging Face发布的一系列大语言模型,使用蒸馏监督微调(dSFT)在更庞大的模型上进行训练,显著提高了任务准确性。

2023年是属于大语言模型(LLM)和开源的一年。许多初创公司和企业开放了模型和权重的源代码,以应对ChatGPT和Claude等专有LLM。2023年的一些重要公司和模型(开源)包括:

  • Meta(Llama和LLamav2)
  • TII(Falcon 7B、40B和180B)
  • Mistral(Mistral 7B和Mixtral8x7B)

然而,部署相对容易和便宜的7B模型无法与70B等更庞大的模型相提并论。最强大的开源模型是Mistral 7B,它胜过许多更庞大的模型。

图1. Mistral-7B与各大模型的比较

可见,这些小模型仍然不能很好地响应自然提示,需要良好的提示工程。

引言

Zephyr 7B是由Hugging Face H4团队创建的一个模型,主要目的是创建一个更小的语言模型,与用户意图保持一致,但性能胜过更大的模型。

Zephyr是Mistral-7B的校准版本,主要借助蒸馏的优点创建而成,在学术和对话衡量基准方面与70B型号不相上下。

图2. Zephyr-7B的性能比较

关键特性

Zephyr性能出色的原因是H4团队使用了这几项关键技术。

  • 自我指导数据创建和DSFT(蒸馏监督微调)
  • 反馈收集
  • DSFT模型的DDPO(蒸馏直接偏好优化)

自我指导数据创建和DSFT

传统上,监督微调(SFT)通过高质量的指令完成针对大语言模型的数据创建。这些数据的构建成本很高,需要人工监督。

其中一个值得关注的方法是使用Teacher模型(已经过训练的LLM)来生成指令和响应。这项蒸馏技术首先用于Alpaca,证明了借助蒸馏监督微调,小模型的性能可以胜过大模型。

图3. 自我指导管道

H4团队使用Zephyr构建用于执行DSFT的高质量监督(指令和完成)数据集。根据生成的指令/完成训练模型是一种蒸馏形式,名为DSFT(蒸馏监督微调)。

反馈收集

大语言模型通常借助人类反馈强化学习(RLHF)进行对齐。Zephyr则是使用来自更好的教师模型(比如GPT-4)的反馈来对齐模型的偏好,遵循超级反馈(Ultra Feedback)方法。

图4. 超级反馈构建过程

其工作方式是,来自SFT的每个监督提示被传递给4个模型(Claude、Llama和Falcon等),针对单个提示的4个响应中每一个都借助GPT-4来评分。现在我们有了一个数据集,包括输入(x)、最高评分完成(yw)和表示为低评分完成的随机提示(yl),即我们有一个三元组(x、yw和yl)。

偏好优化

最后这一步的目标是最大化模型的偏好,偏向yw(最高评分完成)而非yl(低评分完成)。这是使用DPO(直接偏好优化)来完成的。使用DPO比使用普通RLHF来得简单,直观上性能优于RLHF。本例中的方法被之所以称为dDPO,是由于它使用借助教师模型生成的蒸馏数据集。

图5. DPO vs RLHF

整个算法看起来有点像这样:

可以转换成以下步骤:

  • 从dSFT模型(仅向前)计算(x, yw)和(x, yl)的概率。
  • 从dDPO模型计算(x, yw)和(x, yl)的概率。
  • 计算Eq 1,反向传播以更新。重复步骤。

训练细节

Zephyr使用的基本型号是Mistral-7B,它在发布时是最先进的开源模型。他们使用TRL库进行微调和对齐。Deep-Speed Zero 3和Flash-Attention 2用来优化和加速训练,充分利用GPU。模型使用AdamW优化器进行训练,不使用权值衰减。所有实验都在16台A100s上运行,使用bfloat16精度,通常需要2-4小时才能完成。可以参阅原论文(https://arxiv.org/pdf/2310.16944.pdf),深入了解Zephyr训练程序的细节。

结果

Zephyr团队结合了最好的技术来训练大语言模型,它只需70亿个参数就可以媲美400亿参数模型的性能,可以媲美700亿个参数的聊天模型。

表2:Zephyr与其他LLM的比较

图6. Zephyr与其他LLM的比较

使用

Zephyr模型在Hugging Face上免费可用,可以像其他语言模型一样使用。

import torch
from transformers import pipeline
pipe = pipeline("text-generation",
model="HuggingFaceH4/zephyr-7b-alpha", # can also use the beta model
torch_dtype=torch.bfloat16,
device_map="auto")
# We use the tokenizer's chat template to format each message - see 
https://huggingface.co/docs/transformers/main/en/chat_templating
messages = [
{
"role": "system",
"content": "You are a friendly chatbot who always responds in the style of a 
pirate",
},
{"role": "user", "content": "How many helicopters can a human eat in one 
sitting?"},
]
prompt = pipe.tokenizer.apply_chat_template(messages, tokenize=False, 
add_generation_prompt=True)
outputs = pipe(prompt, max_new_tokens=256, do_sample=True, temperature=0.7, 
top_k=50, top_p=0.95)
print(outputs[0]["generated_text"])

输出:

<|system|>
You are a friendly chatbot who always responds in the style of a pirate.
<|user|>
How many helicopters can a human eat in one sitting?
<|assistant|>
Ah, me hearty matey! But yer question be a puzzler! A human cannot eat a 
helicopter in one sitting, as helicopters are not edible. They be made of metal, 
plastic, and other materials, not food!

结论

Zephyr-7B是一个小模型,展示了LLM提炼成小模型的能力。由此生成的模型Zephyr-7B基于Mistral-7B,为70亿参数聊天模型奠定了新的先进记录,甚至在MT-Bench上的性能胜过Llama2-Chat-70B。

参考资料:

  • Zephyr:语言模型对齐直接蒸馏(https://arxiv.org/abs/2310.16944)
  • HuggingFace Zephyr博文(https://huggingface.co/blog/Isamu136/understanding-zephyr)
  • 自我指导:https://arxiv.org/abs/2212.10560
  • 超级反馈:https://arxiv.org/abs/2310.01377

原文标题:Exploring the Zephyr 7B: A Comprehensive Guide to the Latest Large Language Model,作者:Ahmad Anis

链接:https://www.kdnuggets.com/exploring-the-zephyr-7b-a-comprehensive-guide-to-the-latest-large-language-model。

更新时间 2024-02-04