探索 Zephyr 7B:最新大型语言模型的综合指南 - KDnuggets

探索 Zephyr 7B:最新大型语言模型的综合指南 – KDnuggets

源节点: 3084992

探索 Zephyr 7B:最新大型语言模型的综合指南
照片由 谷歌深度思维
 

2023 年是大型语言模型和开源的一年。许多初创公司和公司开源了他们的模型和权重,以对抗 ChatGPT 和 Claude 等专有的 LLM。 2023 年的一些重要公司和模型(开源)包括:

  • 元(LLama、LLamav2)
  • TII(猎鹰 7B、40B、180B)
  • 米斯特拉尔(米斯特拉尔 7B、Mixtral8x7B)

然而,部署相对容易且成本较低的 7B 型号无法与 70B 等较大型号相媲美。最强大的开源竞争者是 Mistral 7B,它的性能优于许多更大的模型。

 

探索 Zephyr 7B:最新大型语言模型的综合指南
Mistral-7B 的比较 米斯特拉尔.ai
 

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

Zephyr 7B 是由 HuggingFace H4(Helpful、Honest、Harmless、Huggy)团队创建的模型,其主要目标是创建一个更小的语言模型,该模型符合用户意图,并且性能优于更大的模型。

Zephyr 是 Mistral-7B 的对齐版本,主要利用 Distillation 的力量创建,在学术和会话基准方面与 70B 模型相当。

 

探索 Zephyr 7B:最新大型语言模型的综合指南Zephyr-7B性能对比 |来源: 和风纸

主要特性

Zephyr 表现出色的原因在于 H4 Team 使用的这 4 个关键技术。

  1. 自指导数据创建和 DSFT(蒸馏监督微调)
  2. 意见收集
  3. DSFT 模型的 DDPO(蒸馏直接偏好优化)

自学数据创建和 DSFT

传统上, 监督微调 (SFT) 通过高质量的指令完成对在大型语言模型上执行。这些数据的构建成本高昂,并且需要人工监督(Chung 等人,2022 年;Sanh 等人,2021 年)。 

这里有趣的方法之一是使用教师模型(已经经过训练的 LLM)来生成指令和响应。这种蒸馏技术首先在 Alpaca 上使用(Taori 等人,2023),证明小型模型可以优于大型模型 蒸馏监督微调.

 

探索 Zephyr 7B:最新大型语言模型的综合指南
自指导管道 |来源: 自学论文
 

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

意见收集

大型语言模型通常在以下方面进行对齐: 从人类反馈中强化学习 (RLHF)。 Zephyr 相反,遵循 Ultra Feedback 的方法,使用来自更好的教师模型(例如 GPT-4)的反馈来调整模型的兴趣。 

 

探索 Zephyr 7B:最新大型语言模型的综合指南
UltraFeedback施工流程|来源: 超反馈纸
 

它的工作方式是,SFT 的每个提示监督提示都会传递给 4 个模型(Claude、LLama、Falcon 等),并且在 GPT-4 的帮助下对针对单个提示的 4 个响应中的每一个进行评分。现在我们有一个输入数据集 (x)、最高得分完成度 (yw) 和一个表示为低得分完成度 (yl) 的随机提示,即我们有一个三元组 (x, yw, yl)。

偏好优化

最后一步的目标是最大化模型对 yw(最高得分完成)相对于 yl(低分完成)的偏好。这是使用完成的 DPO (直接偏好优化)。使用 DPO 比使用普通 RLHF 更简单,而且直观上它的性能比 RLHF 更好。这种情况下的方法称为 dDPO 因为它使用在教师模型的帮助下生成的蒸馏数据集。

 

探索 Zephyr 7B:最新大型语言模型的综合指南DPO 与 RLHF |来源: 和风纸
 

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

 

探索 Zephyr 7B:最新大型语言模型的综合指南
 

又可以转化为以下步骤:

  1. 根据 dSFT 模型(仅前向)计算 (x, yw) 和 (x, yl) 的概率。
  2. 根据 dDPO 模型计算 (x, yw) 和 (x, yl) 的概率。
  3. 计算方程 1 并反向传播以进行更新。重复

Zephyr 使用的基本模型是 Mistral-7B,它是发布时最先进的开源模型。他们使用了 TRL 用于微调和对齐的库。使用 Deep-Speed Zero 3 和 Flash-Attention 2 来优化和加速训练并充分利用 GPU。该模型使用 AdamW 优化器进行训练,并且未使用权重衰减。所有实验均使用 bfloat16 精度在 100 个 A16 上运行,通常需要 2-4 小时才能完成。您可以参考 原始纸 了解 Zephyr 培训程序的详细信息。

Zephyr 团队结合了最好的技术来训练大型语言模型,它仅用 40B 参数即可匹配 7B 模型的性能,并匹配 70B 聊天模型的性能。

 

探索 Zephyr 7B:最新大型语言模型的综合指南Zephyr 与其他法学硕士的比较 |来源: 和风纸
探索 Zephyr 7B:最新大型语言模型的综合指南Zephyr 与其他法学硕士的比较 |来源: 和风纸

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,为 7B 参数聊天模型设定了新的最先进水平,甚至在 MT-Bench 上优于 LLAMA2-CHAT-70B。

参考资料

  1. Zephyr:LM 对准的直接蒸馏(https://arxiv.org/abs/2310.16944)
  2. HuggingFace Zephyr 博客 (https://huggingface.co/blog/Isamu136/understanding-zephyr)  
  3. 自学指导: https://arxiv.org/abs/2212.10560
  4. 超反馈: https://arxiv.org/abs/2310.01377

 
 

艾哈迈德·阿尼斯(Ahmad Anis) 是一位充满热情的机器学习工程师和研究员,目前就职于 红缓冲.ai。除了日常工作之外,艾哈迈德还积极参与机器学习社区。他担任致力于开放科学的非营利组织 Cohere for AI 的区域负责人,同时也是 AWS 社区建设者。 Ahmad 是 Stackoverflow 的活跃贡献者,他在 Stackoverflow 上拥有 2300 多分。他为许多著名的开源项目做出了贡献,包括 OpenAI 的 Shap-E。

时间戳记:

更多来自 掘金队