模型概述
模型特點
模型能力
使用案例
🚀 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 模型時,建議在特定應用和領域上下文中圍繞安全性進行額外測試。



