Databricks DBRX 现在在 Amazon SageMaker JumpStart 中可用
Databricks DBRX 现已在 Amazon SageMaker JumpStart 提供
作者:Shikhar Kwatra Armando Diaz Sebastian Bustillo Niithiyn Vijeaswaran日期:2024年4月26日来源:Amazon SageMaker, Amazon SageMaker JumpStart
关键要点
Databricks 推出的通用大语言模型 DBRX 现已通过 Amazon SageMaker JumpStart 上线。DBRX 使用细粒度的专家混合架构,经过 12 兆个精心挑选数据标记的预训练。SageMaker JumpStart 是一个完全托管的平台,提供多种用例的基础模型,简化机器学习应用程序的开发和部署。今天,我们兴奋地宣布,Databricks 开发的通用大语言模型 DBRX 现已通过 Amazon SageMaker JumpStart 提供给客户,可以一键部署进行推理。DBRX LLM 采用细粒度的专家混合MoE架构,经过 12 兆个精心挑选的数据标记进行预训练,最大上下文长度为 32000 个标记。
您可以在 SageMaker JumpStart 中尝试这个模型,它是一个机器学习 (ML) 中心,提供算法和模型,以便您迅速开始使用机器学习。在这篇文章中,我们将带您了解如何发现和部署 DBRX 模型。
什么是 DBRX 模型
DBRX 是一种高效的仅解码 LLM,基于变换器架构构建。它使用细粒度的 MoE 架构,总参数量达 1320 亿,其中 360 亿参数在特定输入时处于激活状态。
该模型经过的预训练数据集包含 12 兆个文本和代码标记。与其他开放的 MoE 模型如 Mixtral 和 Grok1相比,DBRX 采用了一种细粒度方法,使用较多数量的小专家以优化性能。与其他 MoE 模型相比,DBRX 有 16 个专家,并且针对每个输入选择 4 个使用。
该模型在 Databricks 开放模型许可证下发布,可以无限制地使用。
什么是 SageMaker JumpStart
SageMaker JumpStart 是一个完全托管的平台,提供各种用例的最先进基础模型,例如内容撰写、代码生成、问答、文案写作、摘要、分类和信息检索。它提供了一系列预训练模型,您可以快速、轻松地部署,加速机器学习应用程序的开发与部署。SageMaker JumpStart 的一个重要组成部分是模型中心,提供了各种任务的预训练模型,包括 DBRX。
现在,您可以通过 Amazon SageMaker Studio 轻松找到并部署 DBRX 模型,或者通过 SageMaker Python SDK 进行编程,利用 Amazon SageMaker 的特性,如 Amazon SageMaker Pipelines、Amazon SageMaker Debugger 或容器日志,帮助实现模型性能和 MLOps 控制。该模型在 AWS 安全环境中部署,并在您的 VPC 控制下运行,以提供数据安全性。
在 SageMaker JumpStart 中发现模型
您可以通过 SageMaker JumpStart 在 SageMaker Studio 用户界面和 SageMaker Python SDK 中访问 DBRX 模型。在本节中,我们将介绍如何在 SageMaker Studio 中发现模型。
SageMaker Studio 是一个集成开发环境 (IDE),提供单一的基于 Web 的可视化界面,使您能够访问专门构建的工具,执行所有机器学习开发步骤,从数据准备到构建、训练和部署您的机器学习模型。有关如何开始和设置 SageMaker Studio 的更多详细信息,请参考 Amazon SageMaker Studio。
在 SageMaker Studio 中,您可以通过选择导航面板中的 JumpStart 来访问 SageMaker JumpStart。
从 SageMaker JumpStart 登录页面,您可以在搜索框中输入“DBRX”。搜索结果将显示 DBRX Instruct 和 DBRX Base。
您可以选择模型卡以查看有关模型的详细信息,例如许可证、训练数据和如何使用该模型。您还可以找到 Deploy 按钮,以便部署该模型并创建一个端点。
在 SageMaker JumpStart 中部署模型
通过选择 Deploy 按钮启动部署。完成部署后,您将看到一个端点被创建。您可以通过传递一个示例推理请求有效载荷或使用 SDK 选择测试选项来测试端点。当选择使用 SDK 的选项时,您将看到示例代码,可以在 SageMaker Studio 中您选择的笔记本编辑器中使用。
DBRX Base
通过 SDK 部署时,我们首先选择 DBRX Base 模型,使用 modelid 指定其值为 huggingfacellmdbrxbase。您可以使用以下代码在 SageMaker 上部署任何选定的模型。同样,您也可以使用 DBRX Instruct 的模型 ID 来进行部署。
pythonfrom sagemakerjumpstartmodel import JumpStartModel
accepteula = True
model = JumpStartModel(modelid=huggingfacellmdbrxbase)predictor = modeldeploy(accepteula=accepteula)
此代码将使用默认配置在 SageMaker 上部署模型,包括默认实例类型和默认 VPC 配置。您可以通过在 JumpStartModel 中指定非默认值来更改这些配置。请确保 EULA 值明确设定为 True,以接受最终用户许可协议 (EULA)。此外,请确保您有账户级服务限制,以使用 mlp4d24xlarge 或 mlpde24xlarge 进行端点使用作为一个或多个实例。您可以按照 此处 的说明请求服务配额增加。
部署后,您可以通过 SageMaker 预测器对部署的端点进行推理:
pythonpayload = { inputs Hello! parameters { maxnewtokens 10 }}predictorpredict(payload)
示例提示
您可以像使用任何标准文本生成模型一样与 DBRX Base 模型交互,该模型处理输入序列并输出序列中的预测下一个词。以下是一些示例提示和输出。
代码生成
使用上述示例,我们可以使用代码生成提示如下:
pythonpayload = { inputs Write a function to read a CSV file in Python using pandas library parameters { maxnewtokens 30 } } response = predictorpredict(payload)[generatedtext]strip() print(response)
以下是输出:
pythonimport pandas as pd df = pdreadcsv(filenamecsv)
上述代码将导入 pandas 库,然后使用 readcsv 函数读取 CSV 文件
情感分析
您可以使用像以下这样的提示来进行情感分析:
pythonpayload = { inputs Tweet I am so excited for the weekend! Sentiment Positive
Tweet Why does traffic have to be so terribleSentiment NegativeTweet Just saw a great movie would recommend itSentiment PositiveTweet According to the weather report it will be cloudy todaySentiment NeutralTweet This restaurant is absolutely terribleSentiment NegativeTweet I love spending time with my familySentimentparameters { maxnewtokens 2}}response = predictorpredict(payload)[generatedtext]strip()print(response)
以下是输出:
Positive
问答
您可以使用类似以下的提示与 DBRX 进行问答:
pythonpayload = { inputs Respond to the question How did the development of transportation systems such as railroads and steamships impact global trade and cultural exchange parameters { maxnewtokens 225 }}response = predictorpredict(payload)[generatedtext]strip()print(response)
以下是输出:
运输系统如铁路和蒸汽船的发展对全球贸易和文化交流产生了重大影响。提供的文档显示,这些系统的发展极大地改变了人员和货物的全球流动方式。运输系统的发展促使了全球贸易,使商品能够比以往任何时候更快、更有效地运输。这促进了全球不同地区之间的商品更大交流,进而导致思想和文化的进一步交流。运输系统的发展还促进了文化交流,使人们能够更快速、更轻松地旅行。总体而言,运输系统如铁路和蒸汽船的发展对全球贸易和文化交流产生了深远影响。
DBRX Instruct
DBRX 的指令调优版本接受格式化指令,其中对话角色必须以用户的提示开始,并在用户指令与助手 (DBRXInstruct) 之间交替。指令格式必须严格遵循,否则模型将生成次优输出。构建 Instruct 模型提示的模板定义如下:
textltimstartgtsystem{systemmessage} ltimendgtltimstartgtuser{humanmessage} ltimendgtltimstartgtassistantn
ltimstartgt 和 ltimendgt 是字符串开始 (BOS) 和结束 (EOS) 的特殊标记。该模型可以包含系统、用户和助手之间的多个对话轮次,允许将少量示例引入以增强模型的响应。
以下代码显示了如何以指令格式格式化提示:

pythonfrom typing import Dict List
def formatinstructions(instructions List[Dict[str str]]) gt List[str] 格式化指令,其中对话角色必须交替系统/用户/助手/用户/助手/ prompt List[str] = [] for instruction in instructions if instruction[role] == system promptextend([ltimstartgtsystemn (instruction[content])strip() ltimendgtn]) elif instruction[role] == user promptextend([ltimstartgtusern (instruction[content])strip() ltimendgtn]) else raise ValueError(f无效角色 {instruction[role]} 角色必须是 user 或 system) promptextend([ltimstartgtassistantn]) return join(prompt)
def printinstructions(prompt str response str) gt None bold unbold = 033[1m 033[0m print(f{bold}gt 输入{unbold}n{prompt}nn{bold}gt 输出{unbold}n{response[generatedtext]strip()}n)
知识检索
您可以使用以下提示进行知识检索:
pythoninstructions = [{role system content 您是一位专家,擅长为不同运动或健身活动建议优化的饮食计划,考虑到能量需求和恢复需求。}{role user content 我想增加肌肉质量和力量。您会为我推荐什么样的高蛋白、热量密集的饮食计划?}]prompt = formatinstructions(instructions)payload = {inputs promptparameters {maxnewtokens 700 temperature 05 dosample True}}response = predictorpredict(payload)printinstructions(prompt response)
以下是输出:
输入ltimstartgtsystem您是一位专家,擅长为不同运动或健身活动建议优化的饮食计划,考虑到能量需求和恢复需求。ltimendgtltimstartgtuser我想增加肌肉质量和力量。您会为我推荐什么样的高蛋白、热量密集的饮食计划?ltimendgtltimstartgtassistant
输出当然,我很乐意帮助您。鉴于您希望增加肌肉质量和力量,您需要一份高蛋白且提供足够热量以支持肌肉生长和恢复的饮食计划。以下是您饮食计划的大致轮廓:
早餐:3 个全蛋3 个蛋白1 杯燕麦1 勺乳清蛋白粉1 个香蕉
上午加餐:
15 盎司杏仁1 个苹果
午餐:
8 盎司鸡胸肉1 杯糙米1 杯混合蔬菜
下午加餐:
15 杯希腊酸奶1 杯混合浆果
晚餐:
8 盎司三文鱼或瘦牛肉1 杯藜麦15 杯混合蔬菜
晚间加餐:
1 勺酪蛋白粉1 汤匙杏仁酱这是一个高蛋白、热量密集的饮食计划,包含多种富含营养的食物。需要注意的是,每个人的营养需求不同,因此您可能需要根据自己的具体需求和偏好调整份量或食物选择。
此外,请务必保持水分,每天喝足够的水。规律的锻炼,特别是力量训练,对实现您的目标至关重要。充足的睡眠对于肌肉恢复和生长也很重要。在开始任何新的饮食或运动计划之前,最好先咨询医疗专业人士或注册营养师。他们可以根据您的健康状况和当前生活方式提供个性化建议。
代码生成
DBRX 模型在编码任务中表现出色。以下是一个示例代码:
pythoninstructions = [ {role system content 您是编程和编码的专家,您的职责是提供与编程语言、算法、数据结构和软件开发实践相关的示例、解释和见解。} {role user content 编写一个 Python 脚本以读取包含股票价格的 CSV 文件,并使用 Matplotlib 绘制随时间变化的收盘价。} ] prompt = formatinstructions(instructions) payload = { inputs prompt parameters {maxnewtokens 315 temperature 03 dosample True} } response = predictorpredict(payload) printinstructions(prompt response)
以下是输出:
虎跃加速器链接输入ltimstartgtsystem您是编程和编码的专家,您的职责是提供与编程语言、算法、数据结构和软件开发实践相关的示例、解释和见解。ltimendgtltimstartgtuser编写一个 Python 脚本以读取包含股票价格的 CSV 文件,并使用 Matplotlib 绘制随时间变化的收盘价。ltimendgtltimstartgtassistant
输出当然,我很乐意帮助您。这是一个简单的 Python 脚本,使用 pandas 库读取 CSV 文件,并使用 matplotlib 绘制随时间变化的收盘价。
pythonimport pandas as pdimport matplotlibpyplot as plt
从 CSV 文件加载数据
df = pdreadcsv(stockpricescsv)
绘制随时间变化的收盘价
pltfigure(figsize=(125))pltplot(df[Date] df[Close])pltxlabel(日期)pltylabel(价格)plttitle(随时间变化的股票价格)pltshow()
在此脚本中,将 stockpricescsv 替换为您的 CSV 文件路径。文件应包含名为 Date 和 Close 的列,以使此脚本正常工作。如果您的文件使用不同的列名,则需要相应调整脚本。
pandas 库是进行数据操作和分析的强大工具。它可以从各种来源读取数据,包括 CSV 文件,并以表格格式表示这些数据。matplotlib 库是创建 Python 中静态、动态和交互式可视化的流行选择。
该脚本首先将数据从 CSV 文件加载到 pandas DataFrame 中。然后使用 matplotlib 的 plot() 函数绘制 Close 列相对于 Date 列的图形。figure() 函数用于指定图形的大小,show() 用于显示图形。
数学和推理
DBRX 模型在数学准确性上也展现出优势。以下是一个示例代码:
pythoninstructions = [ {role system content 您是一名数学和推理的专家,您的职责是提供与数学概念、问题解决