模型简介
模型特点
模型能力
使用案例
🚀 DBRX Instruct
- DBRX Instruct 是由 Databricks 从零开始训练的混合专家(MoE)大语言模型,擅长少轮次交互。
- 我们将 DBRX Instruct 及其预训练基础模型 DBRX Base 均在 开放许可证 下发布。
- 这是 DBRX Instruct 的代码库,DBRX Base 可在 此处 找到。
- 有关 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
权限的访问令牌,并在下面提供该令牌。
在多个 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 Instruct 是混合专家(MoE)大语言模型,擅长少轮次交互。
- 与其他开放的 MoE 模型相比,DBRX 采用细粒度架构,拥有更多专家组合,提高了模型质量。
- 使用旋转位置编码(RoPE)、门控线性单元(GLU)和分组查询注意力(GQA)。
- 预训练使用了精心策划的 12T 令牌数据,最大上下文长度为 32K 令牌。
📦 安装指南
使用 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”
关键字以实现更快的推理:
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, attn_implementation="flash_attention_2", 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]))
📚 详细文档
模型概述
DBRX 是一个基于 Transformer 的仅解码器大语言模型(LLM),使用下一个令牌预测进行训练。 它采用 细粒度 混合专家(MoE)架构,总参数为 132B,其中任何输入都有 36B 参数处于活动状态。 它在 12T 文本和代码数据令牌上进行了预训练。 与 Mixtral - 8x7B 和 Grok - 1 等其他开放 MoE 模型相比,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 模型的几种常用方法:
- DBRX Base 和 DBRX Instruct 可在 HuggingFace 上下载(请参阅下面的快速入门指南)。这是 DBRX Instruct 的 HF 代码库;DBRX Base 可在 此处 找到。
- DBRX 模型代码库可在 GitHub 此处 找到。
- DBRX Base 和 DBRX Instruct 可通过 Databricks 基础模型 API 的 按令牌付费 和 预配置吞吐量 端点使用。这些是企业级部署。
- 有关如何使用 LLM - Foundry 进行微调的更多信息,请查看我们的 LLM 预训练和微调 文档。
预期用途
预期用例
DBRX 模型是开放的通用大语言模型,旨在并被许可用于商业和研究应用。 它们可以针对各种特定领域的自然语言和编码任务进行进一步微调。 DBRX Instruct 可作为现成模型用于与通用英语和编码任务相关的少轮次问答。
请查看上面的相关风险部分,以及 Databricks 开放模型许可证 和 Databricks 开放模型可接受使用政策,以获取有关 DBRX Base 及其衍生产品允许用途的更多信息。
非预期用例
DBRX 模型不打算直接用于非英语语言,不支持原生代码执行或其他形式的函数调用。 DBRX 模型不应以任何违反适用法律法规的方式使用,或以 Databricks 开放模型许可证 和 Databricks 开放模型可接受使用政策 禁止的任何其他方式使用。
训练堆栈
MoE 模型训练复杂,DBRX Base 和 DBRX Instruct 的训练得到了 Databricks 数据处理和大规模 LLM 训练基础设施的大力支持(例如,Composer、Streaming、Megablocks 和 LLM Foundry)。
Composer 是我们用于大规模训练的核心库。 它提供了优化的训练循环、简单的 检查点 和 日志记录、基于 FSDP 的 模型分片、方便的 抽象、通过 回调 实现的极高可定制性等等。
Streaming 支持从云存储对大型数据集进行快速、低成本和可扩展的训练。它处理了节点数量变化时的确定性恢复、避免设备间的冗余下载、大规模高质量洗牌、样本级随机访问和速度等各种挑战。
Megablocks 是一个用于 MoE 训练的轻量级库。至关重要的是,它支持 “无丢弃 MoE”,避免了低效的填充,并旨在为给定序列提供确定性输出,无论批次中还有其他什么序列。
LLM Foundry 将所有这些库结合在一起,创造了简单的 LLM 预训练、微调及推理体验。
DBRX 使用上述开源库的专有优化版本以及我们的 LLM 训练平台 进行训练。
评估
我们发现,DBRX 在 Databricks 模型测试平台、Hugging Face 开放大语言模型排行榜 和 HumanEval 上的表现优于已有的开源和开放权重基础模型。 Databricks 模型测试平台衡量在六个类别(世界知识、常识推理、语言理解、阅读理解、符号问题解决和编程)的 30 多个任务上的性能。 Hugging Face 开放大语言模型排行榜衡量 ARC - Challenge、HellaSwag、MMLU、TruthfulQA、Winogrande 和 GSM8k 的平均值。 HumanEval 衡量编码能力。
完整的评估细节可在我们的 技术博客文章 中找到。
🔧 技术细节
训练数据集限制
DBRX 模型在 12T 文本令牌上进行了训练,知识截止日期为 2023 年 12 月。 DBRX 使用的训练混合包含自然语言和代码示例。我们的绝大多数训练数据是英语。我们没有测试 DBRX 在非英语方面的能力。因此,DBRX 应被视为用于英语文本使用的通用模型。 DBRX 不具备多模态能力。
相关风险和建议
所有基础模型都是新兴技术,带有各种风险,可能会输出不准确、不完整、有偏见或冒犯性的信息。 用户在使用或分享此类输出之前,应进行判断并评估其准确性和是否适合其预期用例。 Databricks 建议在准确性和保真度很重要的场景中 使用检索增强生成(RAG)。 我们还建议任何使用或微调 DBRX Base 或 DBRX Instruct 的人在其特定应用和领域的上下文中围绕安全性进行额外测试。
📄 许可证
本项目采用 Databricks 开放模型许可证。
致谢
DBRX 模型在很大程度上得益于开源社区,特别是:
- MegaBlocks 库,为我们的 MoE 实现奠定了基础。
- PyTorch FSDP,我们在分布式训练中基于此构建。
⚠️ 重要提示
您需要与 Databricks 共享联系信息才能访问此模型。使用 DBRX 受 Databricks 开放模型许可证 和 Databricks 开放模型可接受使用政策 约束。您提供的信息将根据 Databricks 隐私声明 进行收集、存储、处理和共享。
💡 使用建议
所有基础模型都可能输出不准确、不完整、有偏见或冒犯性的信息,用户在使用或分享输出前应评估其准确性和适用性。在准确性和保真度重要的场景中,建议使用检索增强生成(RAG)。使用或微调 DBRX 模型时,建议在特定应用和领域上下文中围绕安全性进行额外测试。



