模型简介
模型特点
模型能力
使用案例
🚀 DBRX Base
- DBRX Base 是由 Databricks 从零开始训练的混合专家(MoE)大语言模型。
- 我们正在根据 开放许可证 发布预训练基础模型 DBRX Base 和针对少轮交互进行微调的版本 DBRX Instruct。
- 这是 DBRX Base 的仓库。DBRX Instruct 可以在 此处 找到。
- 有关 DBRX 模型的完整详细信息,请阅读我们的 技术博客文章。
🚀 快速开始
注意:这是 DBRX Base,尚未进行指令微调。它未针对交互式聊天进行训练,仅是一个完成模型。 如果您正在寻找微调后的模型,请使用 DBRX Instruct。
使用 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-base", token="hf_YOUR_TOKEN")
model = AutoModelForCausalLM.from_pretrained("databricks/dbrx-base", device_map="auto", torch_dtype=torch.bfloat16, token="hf_YOUR_TOKEN")
input_text = "Databricks was founded in "
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=100)
print(tokenizer.decode(outputs[0]))
如果您的 GPU 系统支持 FlashAttention2,可以在 AutoModelForCausalLM.from_pretrained()
中添加 attn_implementation=”flash_attention_2”
作为关键字,以实现更快的推理速度。
✨ 主要特性
- 模型架构:DBRX 是一个基于 Transformer 的仅解码器大语言模型(LLM),使用下一个标记预测进行训练。它采用了细粒度的混合专家(MoE)架构,总参数为 132B,其中 36B 参数在任何输入时都处于激活状态。
- 训练数据:在 12T 文本和代码数据令牌上进行了预训练,估计该数据在每个令牌上至少比用于预训练 MPT 系列模型的数据好 2 倍。
- 上下文长度:支持最大 32K 令牌的上下文长度。
- 技术选择:使用旋转位置编码(RoPE)、门控线性单元(GLU)和分组查询注意力(GQA),并使用 tiktoken 仓库中定义的 GPT - 4 分词器的转换版本。
📦 安装指南
使用 transformers
库可以轻松开始使用 DBRX 模型。该模型需要约 264GB 的 RAM 以及以下软件包:
pip install "transformers>=4.40.0"
如果您想加快下载速度,可以按照 Huggingface 此处 所述使用 hf_transfer
软件包。
pip install hf_transfer
export HF_HUB_ENABLE_HF_TRANSFER=1
💻 使用示例
基础用法
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("databricks/dbrx-base", token="hf_YOUR_TOKEN")
model = AutoModelForCausalLM.from_pretrained("databricks/dbrx-base", device_map="auto", torch_dtype=torch.bfloat16, token="hf_YOUR_TOKEN")
input_text = "Databricks was founded in "
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=100)
print(tokenizer.decode(outputs[0]))
高级用法
如果您的 GPU 系统支持 FlashAttention2,可以在 AutoModelForCausalLM.from_pretrained()
中添加 attn_implementation=”flash_attention_2”
作为关键字,以实现更快的推理速度。
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("databricks/dbrx-base", token="hf_YOUR_TOKEN")
model = AutoModelForCausalLM.from_pretrained("databricks/dbrx-base", device_map="auto", torch_dtype=torch.bfloat16, token="hf_YOUR_TOKEN", attn_implementation="flash_attention_2")
input_text = "Databricks was founded in "
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=100)
print(tokenizer.decode(outputs[0]))
📚 详细文档
模型概述
DBRX 是一个基于 Transformer 的仅解码器大语言模型(LLM),使用下一个标记预测进行训练。它采用了细粒度的混合专家(MoE)架构,总参数为 132B,其中 36B 参数在任何输入时都处于激活状态。它在 12T 文本和代码数据令牌上进行了预训练。与其他开放的 MoE 模型(如 Mixtral - 8x7B 和 Grok - 1)相比,DBRX 是细粒度的,这意味着它使用了更多数量的较小专家。DBRX 有 16 个专家并选择 4 个,而 Mixtral - 8x7B 和 Grok - 1 有 8 个专家并选择 2 个。这提供了 65 倍更多的专家组合可能性,并且我们发现这提高了模型质量。DBRX 使用旋转位置编码(RoPE)、门控线性单元(GLU)和分组查询注意力(GQA),并使用 tiktoken 仓库中定义的 GPT - 4 分词器的转换版本。这些选择是基于详尽的评估和扩展实验做出的。
DBRX 在精心策划的 12T 令牌数据上进行了预训练,最大上下文长度为 32K 令牌。我们估计该数据在每个令牌上至少比用于预训练 MPT 系列模型的数据好 2 倍。这个新数据集是使用 Databricks 的全套工具开发的,包括用于数据处理的 Apache Spark™ 和 Databricks 笔记本,以及用于数据管理和治理的 Unity Catalog。我们在预训练中使用了课程学习,在训练过程中改变数据混合方式,我们发现这大大提高了模型质量。
- 输入:DBRX 仅接受基于文本的输入,并且接受最长 32768 令牌的上下文长度。
- 输出:DBRX 仅产生基于文本的输出。
- 模型架构:有关 DBRX Instruct 和 DBRX Base 的更详细信息可以在我们的 技术博客文章 中找到。
- 许可证:Databricks 开放模型许可证
- 可接受使用政策:Databricks 开放模型可接受使用政策
- 版本:1.0
- 所有者:Databricks, Inc.
使用方式
- 下载:DBRX Base 和 DBRX Instruct 可以在 HuggingFace 上下载(请参阅下面的快速入门指南)。这是 DBRX Base 的 HF 仓库;DBRX Instruct 可以在 此处 找到。
- GitHub 仓库:DBRX 模型仓库可以在 GitHub 此处 找到。
- API 调用:DBRX Base 和 DBRX Instruct 可以通过 Databricks 基础模型 API 的 按令牌付费 和 预配置吞吐量 端点使用。这些是企业级的部署。
- 微调:有关如何使用 LLM - Foundry 进行微调的更多信息,请查看我们的 LLM 预训练和微调 文档。
预期用途
预期用例
DBRX 模型是开放的通用大语言模型,旨在并被许可用于商业和研究应用。它们可以进一步针对各种特定领域的自然语言和编码任务进行微调。DBRX Base 可以用作现成的模型,用于一般英语语言和编码任务的文本完成。
请查看上面的相关风险部分,以及 Databricks 开放模型许可证 和 Databricks 开放模型可接受使用政策,以获取有关 DBRX Base 及其派生模型允许使用的更多信息。
超出范围的用例
DBRX 模型不适合直接用于非英语语言,并且不支持原生代码执行或其他形式的函数调用。DBRX 模型不应以任何违反适用法律法规的方式使用,也不应以 Databricks 开放模型许可证 和 Databricks 开放模型可接受使用政策 禁止的任何其他方式使用。
训练栈
MoE 模型的训练很复杂,DBRX Base 和 DBRX Instruct 的训练得到了 Databricks 用于数据处理和大规模大语言模型训练的基础设施的大力支持(例如,Composer、Streaming、Megablocks 和 LLM Foundry)。
- Composer:是我们用于大规模训练的核心库。它提供了优化的训练循环、简单的 检查点 和 日志记录、基于 FSDP 的 模型分片、方便的 抽象、通过 回调 实现的极高可定制性等。
- Streaming:支持从云存储对大型数据集进行快速、低成本和可扩展的训练。它处理了在节点数量变化时确定性恢复、避免设备间冗余下载、大规模高质量洗牌、样本级随机访问和速度等各种挑战。
- Megablocks:是一个用于 MoE 训练的轻量级库。至关重要的是,它支持“无丢弃 MoE”,避免了低效的填充,并且旨在为给定序列提供确定性输出,无论批次中还有其他什么序列。
- LLM Foundry:将所有这些库结合在一起,创造了一个简单的大语言模型预训练、微调和解推理体验。
DBRX 使用上述开源库的专有优化版本以及我们的 大语言模型训练平台 进行训练。
评估
我们发现 DBRX 在 Databricks 模型挑战、Hugging Face 开放大语言模型排行榜 和 HumanEval 上优于已有的开源和开放权重基础模型。
- Databricks 模型挑战:衡量在六个类别(世界知识、常识推理、语言理解、阅读理解、符号问题解决和编程)的 30 多个任务上的性能。
- Hugging Face 开放大语言模型排行榜:衡量 ARC - Challenge、HellaSwag、MMLU、TruthfulQA、Winogrande 和 GSM8k 的平均值。
- HumanEval:衡量编码能力。
完整的评估细节可以在我们的 技术博客文章 中找到。
🔧 技术细节
模型架构
DBRX 是一个基于 Transformer 的仅解码器大语言模型(LLM),使用下一个标记预测进行训练。它采用了细粒度的混合专家(MoE)架构,总参数为 132B,其中 36B 参数在任何输入时都处于激活状态。它使用旋转位置编码(RoPE)、门控线性单元(GLU)和分组查询注意力(GQA),并使用 tiktoken 仓库中定义的 GPT - 4 分词器的转换版本。
训练数据
DBRX 在精心策划的 12T 令牌数据上进行了预训练,最大上下文长度为 32K 令牌。我们估计该数据在每个令牌上至少比用于预训练 MPT 系列模型的数据好 2 倍。这个新数据集是使用 Databricks 的全套工具开发的,包括用于数据处理的 Apache Spark™ 和 Databricks 笔记本,以及用于数据管理和治理的 Unity Catalog。
训练技术
使用课程学习,在训练过程中改变数据混合方式,发现这大大提高了模型质量。
训练栈
使用了 Composer、Streaming、Megablocks 和 LLM Foundry 等开源库的专有优化版本,以及 LLM 训练平台。
📄 许可证
DBRX Base 和 DBRX Instruct 均根据 Databricks 开放模型许可证 发布。使用 DBRX 还需遵守 Databricks 开放模型可接受使用政策。
其他信息
访问模型
⚠️ 重要提示
您需要与 Databricks 共享联系信息才能访问此模型。
训练数据集限制
⚠️ 重要提示
- DBRX 模型在 12T 文本令牌上进行训练,知识截止日期为 2023 年 12 月。
- 用于 DBRX 的训练混合包含自然语言和代码示例。绝大多数训练数据是英语。未对 DBRX 进行非英语能力测试。因此,DBRX 应被视为用于英语文本使用的通用模型。
- DBRX 没有多模态能力。
相关风险和建议
⚠️ 重要提示
所有基础模型都是带有各种风险的新技术,可能会输出不准确、不完整、有偏见或冒犯性的信息。用户在使用或分享此类输出之前,应进行判断并评估其准确性和是否适合其预期用例。
💡 使用建议
- Databricks 建议在准确性和保真度很重要的场景中 使用检索增强生成(RAG)。
- 建议任何使用或微调 DBRX Base 或 DBRX Instruct 的人在其特定应用和领域的上下文中围绕安全性进行额外测试。
致谢
DBRX 模型在很大程度上得益于开源社区,特别是:
- MegaBlocks 库,为我们的 MoE 实现奠定了基础。
- PyTorch FSDP,我们基于它进行分布式训练。



