HuggingFace镜像/dbrx-instruct
模型介绍文件和版本分析
下载使用量0

DBRX Instruct

  • DBRX Instruct 是由 Databricks 从零开始训练的混合专家(Mixture-of-Experts, MoE)大型语言模型。DBRX Instruct 专长于少轮交互。
  • 我们将 DBRX Instruct 以及作为其基础的预训练基础模型 DBRX Base 一同发布,均采用开放许可证。
  • 本仓库用于存放 DBRX Instruct。DBRX Base 可在此处找到。
  • 有关 DBRX 模型的完整详情,请阅读我们的技术博客文章。

模型概述

DBRX 是一种基于Transformer的仅解码器大型语言模型(LLM),通过下一个token预测任务进行训练。 它采用细粒度混合专家(MoE)架构,总参数达1320亿,其中任何输入下有360亿参数处于激活状态。 它在12万亿 tokens 的文本和代码数据上进行了预训练。 与 Mixtral-8x7B 和 Grok-1 等其他开源 MoE 模型相比,DBRX 具有细粒度特性,这意味着它使用更多数量的小型专家。DBRX 拥有16个专家并选择4个,而 Mixtral-8x7B 和 Grok-1 则有8个专家并选择2个。 这提供了65倍更多的专家组合可能性,并且我们发现这提高了模型质量。 DBRX 使用旋转位置编码(RoPE)、门控线性单元(GLU)和分组查询注意力(GQA)。 它使用了 tiktoken 仓库中定义的 GPT-4 tokenizer 的转换版本。 我们基于详尽的评估和扩展实验做出了这些选择。

DBRX 在12万亿 tokens 的精心筛选数据上进行预训练,最大上下文长度为32K tokens。 我们估计,该数据的 token 质量至少是我们用于预训练 MPT 系列模型的数据的2倍。 这个新数据集是使用全套 Databricks 工具开发的,包括用于数据处理的 Apache Spark™ 和 Databricks 笔记本,以及用于数据管理和治理的 Unity Catalog。 我们在预训练中采用了课程学习方法,在训练过程中改变数据混合比例,我们发现这能显著提高模型质量。

  • 输入: DBRX 仅接受基于文本的输入,可接受的上下文长度最多为32768 tokens。
  • 输出: DBRX 仅生成基于文本的输出。
  • 模型架构: 有关 DBRX Instruct 和 DBRX Base 的更多详细信息,请参见我们的技术博客文章。
  • 许可证: Databricks Open Model License
  • 可接受使用政策: Databricks Open Model Acceptable Use Policy
  • 版本: 1.0
  • 所有者: Databricks, Inc.

使用方法

以下是使用 DBRX 模型的几种常规方式:

  • DBRX Base 和 DBRX Instruct 可在 HuggingFace 上下载(请参阅下方的快速入门指南)。这是 DBRX Instruct 的 HF 仓库;DBRX Base 可在此处找到。
  • DBRX 模型仓库可在 GitHub 上的此处找到。
  • DBRX Base 和 DBRX Instruct 可通过 Databricks Foundation Model APIs 获取,提供“按令牌付费”和“预配置吞吐量”两种端点。这些是企业级就绪部署。
  • 有关如何使用 LLM-Foundry 进行微调的更多信息,请查看我们的 LLM 预训练和微调文档。

快速入门指南

注意:这是 DBRX Instruct,已进行指令微调。 如果您需要基础模型,请使用 DBRX Base。

借助 transformers 库,开始使用 DBRX 模型非常简单。该模型需要约 264GB 的 RAM 以及以下软件包:

pip install "transformers>=4.40.0"

如果您想加快下载速度,可以使用 Huggingface 官方文档此处中介绍的 hf_transfer 包。

pip install hf_transfer
export HF_HUB_ENABLE_HF_TRANSFER=1

你需要请求访问此仓库才能下载模型。获得访问权限后,请获取具有 read 权限的访问令牌,并在下方提供该令牌。

在多个 GPU 上运行模型:

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

tokenizer = AutoTokenizer.from_pretrained("databricks/dbrx-instruct", token="hf_YOUR_TOKEN")
model = AutoModelForCausalLM.from_pretrained("databricks/dbrx-instruct", device_map="auto", torch_dtype=torch.bfloat16, token="hf_YOUR_TOKEN")

input_text = "What does it take to build a great LLM?"
messages = [{"role": "user", "content": input_text}]
input_ids = tokenizer.apply_chat_template(messages, return_dict=True, tokenize=True, add_generation_prompt=True, return_tensors="pt").to("cuda")

outputs = model.generate(**input_ids, max_new_tokens=200)
print(tokenizer.decode(outputs[0]))

如果您的 GPU 系统支持 FlashAttention2,您可以在 AutoModelForCausalLM.from_pretrained() 中添加 attn_implementation=”flash_attention_2” 关键字以实现更快的推理速度。

局限性和伦理考量

训练数据集局限性

DBRX 模型在 12T tokens 的文本上进行训练,知识截止日期为 2023 年 12 月。

DBRX 的训练数据混合了自然语言和代码示例。我们的绝大多数训练数据都是英语。我们没有测试 DBRX 的非英语能力。因此,DBRX 应被视为适用于英语文本类用途的通用模型。

DBRX 不具备多模态能力。

相关风险和建议

所有基础模型都是新颖的技术,存在各种风险,可能会输出不准确、不完整、有偏见或冒犯性的信息。 用户在使用或分享输出内容之前,应运用判断力并评估其准确性以及是否适合其预期用例。 Databricks 建议在准确性和保真度至关重要的场景中使用检索增强生成(RAG)。 我们还建议任何使用或微调 DBRX Base 或 DBRX Instruct 的人员,针对其特定应用和领域,围绕安全性进行额外测试。

预期用途

预期使用场景

DBRX 模型是开放的通用大型语言模型,其授权允许用于商业和研究应用。 它们可以进一步针对各种特定领域的自然语言和编码任务进行微调。 DBRX Instruct 可用作现成模型,用于与一般英语语言和编码任务相关的少轮次问答。

请查看上述相关风险部分,以及 Databricks 开放模型许可证 和 Databricks 开放模型可接受使用政策,以获取有关 DBRX Base 及其衍生物允许用途的更多信息。

超出范围的使用场景

DBRX 模型并非设计用于开箱即用地处理非英语语言,也不支持原生代码执行或其他形式的函数调用。 DBRX 模型不得用于任何违反适用法律法规的场景,也不得用于 Databricks Open Model License 和 Databricks Open Model Acceptable Use Policy 所禁止的任何其他方式。

训练技术栈

MoE 模型的训练过程较为复杂,DBRX Base 和 DBRX Instruct 的训练得到了 Databricks 数据处理和大规模 LLM 训练基础设施的大力支持(例如 Composer、Streaming、Megablocks 和 LLM Foundry)。

Composer 是我们用于大规模训练的核心库。 它提供了优化的训练循环、便捷的 checkpointing 和 logging、 基于 FSDP 的模型分片、 方便的抽象概念、通过回调函数实现的高度可定制性等功能。

Streaming 支持从云存储对大型数据集进行快速、低成本且可扩展的训练。它解决了一系列挑战,如节点数量变化时的确定性恢复、避免跨设备的冗余下载、大规模高质量洗牌、样本级随机访问以及速度问题。

Megablocks 是一个轻量级的 MoE 训练库。关键在于,它支持“无丢弃 MoE(dropless MoE)”,这种方式可以避免低效的填充,并旨在为给定序列提供确定性输出,无论批次中还有其他什么序列。

LLM Foundry 将所有这些库整合在一起,提供了简单的 LLM 预训练、微调及推理体验。

DBRX 的训练使用了上述开源库的专有优化版本,以及我们的 LLM 训练平台。

评估

我们发现,在Databricks Model Gauntlet、Hugging Face Open LLM Leaderboard和HumanEval上,DBRX的性能优于现有的开源和开放权重基础模型。 Databricks Model Gauntlet通过六大类30多项任务评估模型性能,包括:世界知识、常识推理、语言理解、阅读理解、符号问题解决和编程。 Hugging Face Open LLM Leaderboard的评估结果为ARC-Challenge、HellaSwag、MMLU、TruthfulQA、Winogrande和GSM8k的平均分。 HumanEval用于评估编码能力。

完整的评估细节可参见我们的技术博客文章。

致谢

DBRX模型的成功在很大程度上得益于开源社区,特别是:

  • MegaBlocks库,为我们的MoE实现奠定了基础。
  • PyTorch FSDP,我们基于其进行分布式训练。