雪花极地模型现已在 Amazon SageMaker JumpStart 中提供 机器学习博客
Snowflake Arctic 模型现已在 Amazon SageMaker JumpStart 中上线
在 2024 年 8 月 22 日,由 Natarajan Chennimalai Kumar、Armando Diaz、Matt Marzillo、Bosco Albuquerque、Jin Tan Ruan、Nidhi Gupta、Pavan Kumar Rao Navule、Supriya Puragundla 和 Niithiyn Vijeaswaran 共同撰写,发布于 Amazon SageMaker、Amazon SageMaker JumpStart、人工智能、生成式 AI、新闻发布。
评论区
重点信息
Snowflake Arctic 模型现已可通过 Amazon SageMaker JumpStart 部署和运行推理。该模型展现出在 SQL 查询、编码和遵循指令方面的卓越能力。SageMaker JumpStart 是一个机器学习中心,提供访问算法、模型和解决方案的工具,使用户能够快速入门。今天,我们很高兴地宣布,Snowflake Arctic Instruct 模型现在可以通过 Amazon SageMaker JumpStart 部署和运行推理。Snowflake Arctic 是由 Snowflake 开发的一系列企业级大型语言模型LLMs,旨在满足企业用户的需求,并在以下 基准测试 中展示出卓越的能力,尤以 SQL 查询、编码能力和准确执行指令见长。SageMaker JumpStart 是一个机器学习ML中心,提供了访问算法、模型和 ML 解决方案的便利,帮助用户轻松入门机器学习。
在本文中,我们将详细介绍如何使用 SageMaker JumpStart 发现和部署 Snowflake Arctic Instruct 模型,并提供带有具体提示的示例用例。
什么是 Snowflake Arctic
Snowflake Arctic 是一款以企业需求为目标的大型语言模型,提供领域内一流的企业智能,并具备高度竞争的成本效率。Snowflake 通过密集混合专家MoE混合变换器架构和高效的训练技术,实现了卓越的企业智能。该架构结合了一种 100 亿参数的密集型变换器模型和一个 128366B MoE MLP,共同形成 4800 亿参数分布在 128 个精细的专家之间,使用 top2 门控机制选择 170 亿个活动参数。这使得 Snowflake Arctic 能够在保持资源效率的同时,达到较高的企业智能水平。
Snowflake Arctic 通过三阶段的数据课程进行训练,前三阶段关注通用技能1 万亿个令牌,主要来自网络数据,后两个阶段则更注重企业技能分别为 15 万亿和 1 万亿个令牌,包含更多代码、SQL 和 STEM 数据。这样使得 Snowflake Arctic 模型在实现企业智能的同时,也能保持经济高效。
除了经济的训练方式,Snowflake Arctic 也具备多个创新和优化,从而提高推理效率。在小批量情况下,推理的内存带宽受到限制,Snowflake Arctic 的内存读取量比其他开放模型低四倍,从而提升推理性能。在大批量情况下,推理变为计算限制,Snowflake Arctic 的计算需求比其他模型低四倍。所有 Snowflake Arctic 模型都采用 Apache 20 许可证,提供无障碍访问权重和代码,所有的数据配方和研究见解也将提供给客户。
什么是 SageMaker JumpStart
使用 SageMaker JumpStart,您可以从广泛的公开基础模型FM中进行选择。机器学习从业者可以将 FM 部署到专用的 Amazon SageMaker 实例,从一个网络隔离的环境中开始,并使用 SageMaker 进行模型训练和定制化。您现在可以通过点击几下在 Amazon SageMaker Studio 中发现并部署 Arctic Instruct 模型,或通过 SageMaker Python SDK 以编程方式进行,从而利用 SageMaker 的 Amazon SageMaker Pipelines、Amazon SageMaker Debugger 或容器日志等功能进行模型性能和机器学习操作MLOps控制。模型部署在企业安全环境和您的虚拟私有云VPC控制下,以确保数据安全。Snowflake Arctic Instruct 模型目前可在 useast2 AWS 区域的 SageMaker Studio 中部署和推理,未来计划在其他区域提供。
发现模型
您可以通过 SageMaker JumpStart 在 SageMaker Studio UI 和 SageMaker Python SDK 中访问基础模型。以下是如何在 SageMaker Studio 中发现模型的过程。
SageMaker Studio 是一个集成开发环境IDE,提供一个单一的基于 Web 的可视化界面,您可以在这里访问专门为执行 ML 开发步骤而设计的工具,从数据准备到构建、训练和部署您的 ML 模型。有关如何开始并设置 SageMaker Studio 的更多详细信息,请参见 Amazon SageMaker Studio。
在 SageMaker Studio 中,您可以访问 SageMaker JumpStart,其中包含预训练模型、笔记本和预构建解决方案,位于 预构建和自动化解决方案 下。
在 SageMaker JumpStart 首页上,您可以通过浏览不同的模型提供者的中心来发现各种模型。您可以在 Hugging Face 中找到 Snowflake Arctic Instruct 模型。如果您没有看到 Arctic Instruct 模型,请通过关闭并重新启动来更新 SageMaker Studio 版本。有关更多信息,请参见 关闭并更新 Studio Classic 应用。
您也可以通过在搜索框中输入“Snowflake”来找到 Snowflake Arctic Instruct 模型。
您可以选择模型卡,以查看有关模型的详细信息,例如许可证、训练所用数据和如何使用模型。您还会找到两个部署模型的选项,分别是“部署”和“预览笔记本”,这将部署模型并创建一个端点。
在 SageMaker Studio 中部署模型
当您选择在 SageMaker Studio 中部署时,部署将开始。
您可以在被重定向的端点详细信息页面上监控部署进度。
通过笔记本部署模型
或者,您可以选择打开笔记本,通过示例笔记本部署模型。示例笔记本提供了有关如何进行推理部署的端到端指南,并清理资源。
要使用笔记本进行部署,您首先需要选择一个适当的模型,由 modelid 指定。您可以使用以下代码在 SageMaker 上部署所选模型:
pythonfrom sagemakerjumpstartmodel import JumpStartModelmodel = JumpStartModel(modelid = huggingfacellmsnowflakearcticinstructvllm)
predictor = modeldeploy()
这将使用默认配置在 SageMaker 上部署模型,包括默认的实例类型和默认 VPC 配置。您可以通过在 JumpStartModel 中指定非默认值来更改这些配置。如需进一步了解,请参考 API 文档。
运行推理
部署模型后,您可以通过 SageMaker predictor API 针对部署的端点运行推理。Snowflake Arctic Instruct 接受用户与助手之间的聊天历史,生成后续聊天。
pythonpredictorpredict(payload)
推理参数可控制端点的文本生成过程。max new tokens 参数控制模型生成的输出大小。这可能与单词数量不同,因为模型的词汇库与英语词汇并不相同。temperature 参数控制输出的随机性。更高的温度会导致更具创造性和幻觉的输出。所有推理参数都是可选的。
模型接受格式化的指令,要求会话角色必须以用户的提示开始,并在用户指令和助手之间交替。指令格式必须严格遵守,否则模型将生成不理想的输出。构建给模型沿用的提示的模板如下:
plaintextltimstartgtsystem{systemmessage} ltimendgtltimstartgtuser{humanmessage} ltimendgtltimstartgtassistantn
ltimstartgt 和 ltimendgt 是字符串开始BOS和结束EOS的特殊标记。模型可以包含系统、用户和助手之间的多个对话轮次,允许引入小样本示例以增强模型的回答。
以下代码展示了如何按照指令格式格式化提示:
pythonfrom typing import Dict List
def formatinstructions(instructions List[Dict[str str]]) gt List[str] 格式化指令,确保会话角色按 system/user/assistant/user/assistant/ 交替 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[0][generatedtext]strip()}n)
在接下来的部分中,我们将提供不同企业用例的示例提示。
长文本摘要
您可以使用 Snowflake Arctic Instruct 进行自定义任务,例如将长文本摘要为 JSON 格式的输出。通过文本生成,您可以执行多种任务,例如文本摘要、语言翻译、代码生成、情感分析等。发送至端点的输入负载如下所示:
pythonpayload = { inputs str (optional)parameters {maxnewtokens int topp float temperature float}}
以下是一个提示示例和模型生成的文本。所有输出均以推理参数 {maxnewtokens 512 topp 095 temperature 07 topk 50} 生成。
输入为:
pythoninstructions = [ { role user content 将此摘要转换为少于 200 字的 JSON 格式。 请将产品名称、缺陷和摘要放入 JSON 格式。
摘要: 客户:你好。 客服:你好!希望你过得愉快!为了更好地帮助你,请提供你的名字和公司。 客户:当然,我叫杰西卡特纳,来自山地滑雪冒险公司。 客服:谢谢,杰西卡。今天我能如何帮助你? 客户:我们最近订购了一批 XtremeX 头盔,在检查过程中发现几顶头盔的扣子损坏,无法正常固定。 客服:非常抱歉给您带来了不便。能否确认你的订单号是 68910? 客户:是的,没错。 客服:感谢确认。我将查看这个问题并看看我们能如何解决。您希望为损坏的头盔退款还是更换? 客户:更换比较理想,因为我们仍需这些头盔来服务客户。 客服:我理解。我将尽快开始处理损坏头盔的更换。请问有多少顶头盔的扣子损坏了? 客户:共有 10 顶头盔的扣子损坏。 客服:感谢您提供数量。我们将加速发货 10 顶功能正常的 XtremeX 头盔到您的位置。您应该在 35 个工作日内收到。 客户:谢谢你的帮助,我非常感激。 客服:不客气,杰西卡!如果您有其他问题或顾虑,请随时与我们联系。祝您有愉快的一天! }
]
然后格式化指令,并生成请求:
pythonprompt = formatinstructions(instructions)inputs = { inputs prompt parameters { temperature 01 topp 095 maxnewtokens 512 dosample False }}response = predictorpredict(inputs)printinstructions(prompt response)

我们得到以下输出:
json
输出{ productname XtremeX 头盔 defect 扣子损坏 summary 客户报告说几顶 XtremeX 头盔的扣子损坏,无法正常固定。他们希望更换,因为他们仍需要这些头盔来服务客户。客服确认了订单号,并将在 35 个工作日内发送更换头盔。}
代码生成
使用以上示例,我们可以将代码生成的提示编写如下:
pythoninstructions = [ { role user content 用 Python 编写一个写入 JSON 文件的函数: }]prompt = formatinstructions(instructions)inputs = { inputs prompt parameters { temperature 01 topp 095 maxnewtokens 400 dosample False }}response = predictorpredict(inputs)printinstructions(prompt response)
前面的代码使用 Snowflake Arctic Instruct 生成一个写入 JSON 文件的 Python 函数。它定义了一个负载字典,输入提示为“用 Python 编写一个写入 JSON 文件的函数:”,并包含一些控制生成过程的参数,例如最大生成标记数和是否启用采样。它将此负载发送到预测器可能是一个 API,接收生成的文本响应,并将其打印到控制台。打印的输出将是请求的编写 JSON 文件的 Python 函数。
以下是输出结果:
plaintext
输入ltimstartgtuser用 Python 编写一个写入 JSON 文件的函数:ltimendgtltimstartgtassistant
输出以下是一个简单的 Python 函数,用于将 Python 字典写入 JSON 文件:
魔方加速器apppythonimport json
def writejson(data