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 模型的几种常规方式:
注意:这是 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 权限的访问令牌,并在下方提供该令牌。
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模型的成功在很大程度上得益于开源社区,特别是: