Meta 的 Muse Spark Open 现已登陆 Amazon SageMaker JumpStart
Meta’s Muse Spark Open now available in Amazon SageMaker JumpStart
Meta 编码优化的开放权重模型 Muse Spark Open 现已在 Amazon SageMaker JumpStart 上可用。该模型采用 MoE 架构,总参数 816B、每 token 激活 42B,支持 100 万 token 上下文窗口,输入支持文本、图像、文档、音频和音视频,输出文本,以 Muse Model License 开放权重。
Muse Spark Open 是 Meta 面向编码优化的开放权重模型,现已在 Amazon SageMaker JumpStart(Amazon SageMaker AI 的机器学习(ML)中心)中提供。该模型基于真实开发者工作流(如多文件重构和长时间调试会话)进行训练,支持 100 万 token 的上下文窗口。您只需几个步骤即可将其部署到您自己的 AWS 账户中的 SageMaker AI 端点,无需自行管理服务基础设施。SageMaker JumpStart 提供两个变体:BF16(Muse-Spark-Open-816B-A42B)和 NVFP4 量化版(Muse-Spark-Open-816B-A42B-NVFP4)。
在这篇文章中,我们将介绍 Muse Spark Open,并演示如何使用 Amazon SageMaker Studio 和 SageMaker Python SDK 部署该模型、发送首个推理请求以及进行清理。
Muse Spark Open 概述
Meta 将 Muse Spark Open 描述为一个为智能体编码工作流而训练的面向编码优化的模型,重点关注首次尝试的准确性、工具调用以及对大型代码库的理解。它是一个推理模型,接受文本、图像、文档、音频和音视频作为输入,并返回文本。
Muse Spark Open 采用混合专家(MoE)架构,总参数量为 8160 亿,其中每个 token 激活 420 亿参数。该模型拥有超大网络的容量,而它在每个 token 上花费的计算量更接近一个小得多的稠密模型。Meta 根据 Muse Model License 发布该模型的权重,其中包括 Muse Spark 使用政策。
下表总结了该模型。
| 属性 | Muse Spark Open |
| 提供商 | Meta |
| 架构 | 混合专家(MoE),推理模型 |
| 参数量 | 总计 8160 亿,激活 420 亿 |
| 上下文长度 | 100 万 token |
| 输入模态 | 文本、图像、文档、音频、音视频 |
| 输出模态 | 文本 |
| SageMaker JumpStart 中的变体 | BF16 和 NVFP4 |
| 许可证 | Muse Model License,包括 Muse Spark 使用政策 |
为长时间运行的编码智能体而构建
Meta 基于开发者在真实代码库中的实际工作方式训练了 Muse Spark Open:代码生成、调试、多文件重构以及需要长时间运行的任务。凭借 100 万 token 的上下文窗口,该模型可以接收整个项目,包括其依赖项、遗留代码和数千个文件。您无需为了适应上下文而将任务拆分成更小的部分。
Meta 还从一开始就将 Muse Spark Open 设计为智能体模型。Meta 表示,该模型能够规划、行动、观察结果,并在较长的时间跨度内自我纠正,而不仅仅是进行单次工具调用。作为一个推理模型,它会在行动之前先思考任务,并且 SageMaker AI 端点会在返回答案的同时返回其推理过程,因此您可以了解智能体正在做什么以及为什么这样做。Meta 训练了该模型来浏览网页、协调子智能体完成可拆分的工作,以及跨桌面、移动和浏览器环境操作计算机。这些是模型自身的能力。在 SageMaker AI 上,您的应用程序或智能体框架提供模型所调用的工具、浏览器和计算机使用环境。除了代码之外,Meta 报告称 Muse Spark Open 还能对图像、文档、音频和视频进行推理。
该模型的两个特性决定了它的服务方式。首先,稀疏激活使每个 token 的计算量保持较低,但服务仍需要足够的 GPU 内存来容纳全部 8160 亿参数,因此实例的选择归根结底取决于内存容量。其次,NVFP4 变体以 NVIDIA 的 4 位浮点格式存储权重,所需的内存大约是 BF16 权重的四分之一。在 SageMaker AI 上,这一差异决定了实例的选择:NVFP4 变体运行在 ml.p5e.48xlarge 上,而 BF16 变体运行在 ml.p6-b300.48xlarge 上。因此,在按成本规划容量时,NVFP4 是首选尝试的变体。请在自己的工作负载上对其进行评估,以确认质量符合你的使用场景。
通过在 SageMaker AI 上使用开放权重,你还可以掌控部署。终端节点在你的 AWS 账户中运行,因此你的源代码和提示词将由你配置和控制的基础设施进行处理。你可以将终端节点接入自己的 Amazon Virtual Private Cloud (Amazon VPC),使用 AWS Key Management Service (AWS KMS) 中的密钥加密其存储卷,并为容器开启网络隔离。你还可以选择实例类型和扩展限制,并固定模型版本,这样模型只会在你重新部署时才会变更。
用例
你可以将 Muse Spark Open 用于广泛的应用场景。Meta 对编码和智能体工作流的关注使其适合以下用例:
- 面向私有代码库的编码助手:在完整项目作为上下文的情况下,回答关于大型代码库的问题、重构代码并进行调试,同时代码在你的账户中的终端节点上处理。
- 长时间运行的编码智能体:运行能够规划变更、跨多个文件编辑、在你自己的沙箱中运行测试,并根据结果调整方向的智能体。
- 多模态工程工作流:将截图、设计文档,或包含音频和视频的缺陷报告录像,转化为复现计划或修复草案。
开始使用 SageMaker JumpStart
你可以从 SageMaker Studio 或使用 SageMaker Python SDK 部署 Muse Spark Open。这两种方式都会在你的账户中创建一个实时的 SageMaker AI 终端节点。
前提条件
开始之前,请确保你具备以下条件:
- 一个具有创建 SageMaker AI 模型和终端节点权限的 AWS 账户。
- 一个用于 SageMaker AI 的 AWS Identity and Access Management (IAM) 执行角色。在本演练中,
AmazonSageMakerFullAccess托管策略就足够了。对于生产环境,请将该角色的范围限定为你的部署所需的操作和资源。详情请参阅 How to use SageMaker AI execution roles。 - 一个有权访问 SageMaker Studio 的 SageMaker AI 域(用于 Studio 方式)。设置说明请参阅 Use quick setup for Amazon SageMaker AI。
- 终端节点实例类型的服务配额:NVFP4 变体需要 ml.p5e.48xlarge for endpoint usage,BF16 变体需要 ml.p6-b300.48xlarge for endpoint usage。要申请提高配额,请参阅 Requesting a quota increase。
- 对于 SDK 方式:需要 Python 3.10 或更高版本以及 SageMaker Python SDK v3(
pip install --upgrade sagemaker)。 - 一个在 SageMaker JumpStart 中提供 Muse Spark Open 的 AWS 区域。发布时,Muse Spark Open 在美国东部(弗吉尼亚北部)和美国东部(俄亥俄)区域可用。要查看其他区域的可用性,请在你所在的区域打开 SageMaker JumpStart。
托管 Muse Spark Open 的实例是多 GPU 实例,只要终端节点在运行,无论是否处理请求,都需要为其付费。使用完毕后,请按照本文的清理部分所述删除终端节点。费率请参阅 Amazon SageMaker AI 定价。
使用 SageMaker Studio 部署
SageMaker Studio 方式适合首次评估:您可以在一个模型详情卡片中找到模型、查看其许可证并进行部署。
在 SageMaker JumpStart 中查找 Muse Spark Open
- 打开 SageMaker Studio。
- 在导航窗格中,选择 JumpStart。
- 在搜索框中输入 Muse Spark Open。
- 选择 Muse-Spark-Open-816B-A42B(BF16 变体)或 Muse-Spark-Open-816B-A42B-NVFP4(NVFP4 变体),以打开其模型详情卡片。
图 1 展示了模型详情卡片,其中列出了模型描述、许可证以及 Deploy(部署)选项。
图 1:SageMaker JumpStart 中的 Muse Spark Open 模型详情卡片
部署模型
- 在模型详情卡片上,选择 Deploy(部署)。
- Muse Spark Open 是受限制访问的模型,因此 SageMaker Studio 会显示其最终用户许可协议(EULA)。请阅读并接受该协议以继续。
- 对于 Endpoint name(终端节点名称),保留自动生成的名称或输入您自己的名称。
- 对于 Instance type(实例类型),NVFP4 选择 ml.p5e.48xlarge,BF16 选择 ml.p6-b300.48xlarge。SageMaker Studio 仅列出该模型支持的实例类型。
- 对于 Initial instance count(初始实例数量),输入 1。
- (可选)在 Advanced options(高级选项)下,选择 VPC 和 AWS KMS 密钥,或开启网络隔离。
- 选择 Deploy(部署)。
图 2 展示了 NVFP4 变体的部署设置。
图 2:Muse Spark Open 的部署设置
部署通常需要 15–20 分钟,期间 SageMaker AI 会预置实例并加载权重。当终端节点状态变为 InService 时,终端节点即可处理请求,如图 3 所示。
图 3:处于服务状态的 Muse Spark Open 终端节点
使用 SageMaker Python SDK 部署
SageMaker JumpStart 通过模型 ID 标识每个变体:
- BF16:
meta-vlm-muse-spark-open-816b-a42b。 - NVFP4:
meta-vlm-muse-spark-open-816b-a42b-nvfp4。
以下代码使用 SageMaker Python SDK v3 部署 NVFP4 变体。您可以在 SageMaker Studio 笔记本中运行它,该笔记本使用您域的执行角色。在其他任何具有 AWS 凭证的 Python 环境中,请通过 role_arn 参数传入您的 SageMaker AI 执行角色。Muse Spark Open 是受限制访问的模型,因此必须设置 accept_eula=True 才能部署它。要固定特定模型版本,请在 JumpStartConfig 中添加 model_version。
from sagemaker.core.jumpstart.configs import JumpStartConfig
from sagemaker.serve import ModelBuilder
from sagemaker.train.configs import Compute
# NVFP4 variant; for BF16, use "meta-vlm-muse-spark-open-816b-a42b" with ml.p6-b300.48xlarge
model_id = "meta-vlm-muse-spark-open-816b-a42b-nvfp4"
jumpstart_config = JumpStartConfig(
model_id=model_id,
accept_eula=True, # Confirms that you accept Meta's license terms
)
model_builder = ModelBuilder.from_jumpstart_config(
jumpstart_config=jumpstart_config,
compute=Compute(instance_type="ml.p5e.48xlarge"),
# role_arn="<your-sagemaker-execution-role-arn>", # Required outside SageMaker Studio
)
model = model_builder.build(model_name="muse-spark-open-nvfp4")
endpoint = model_builder.deploy(endpoint_name="muse-spark-open-nvfp4")运行推理
终端节点处于服务状态后,使用 invoke 方法向其发送请求。该终端节点接受带有 messages 列表的 OpenAI 兼容聊天载荷,并返回聊天补全结果。最终答案位于 message.content 中,模型的推理过程位于 message.reasoning_content 中,usage.reasoning_tokens 则报告推理所使用的 token 数量。由于 Muse Spark Open 是推理模型,请在 max_tokens 中为其推理过程和最终答案留出足够的空间。
import json
payload = {
"messages": [
{
"role": "user",
"content": "Write a Python function that validates ISO 8601 dates, and add pytest unit tests for it.",
}
],
"max_tokens": 4096,
}
response = endpoint.invoke(
body=json.dumps(payload),
content_type="application/json",
)
result = json.loads(response.body.read().decode("utf-8"))
message = result["choices"][0]["message"]
print("Reasoning:", message.get("reasoning_content"))
print("Answer:", message["content"])该终端节点还支持流式传输。要在生成 token 时逐个接收,请在请求正文中添加 "stream": true,并调用 endpoint.invoke_with_response_stream 而非 invoke。
清理
为避免继续产生费用,请在不再需要终端节点时将其删除。如果您是使用 SDK 部署的,请删除模型、终端节点和终端节点配置:
from sagemaker.core.resources import EndpointConfig
endpoint_config = EndpointConfig.get(endpoint_config_name=endpoint.endpoint_name)
model.delete()
endpoint.delete()
endpoint_config.delete()如果您是从 SageMaker Studio 部署的,请在 SageMaker AI 控制台中删除终端节点:选择 Inference,然后选择 Endpoints,选中该终端节点,再选择 Actions、Delete。
结论
在这篇文章中,我们展示了如何将 Muse Spark Open——Meta 面向编码优化的开放权重模型——从 SageMaker JumpStart 部署到您自己 AWS 账户中的终端节点。您使用了 SageMaker Studio 或 SageMaker Python SDK,并向模型发送了第一个推理请求。在选择用于生产的实例之前,请先在您自己的代码库上对两个变体进行基准测试。
要开始使用,请在 SageMaker Studio 的 SageMaker JumpStart 中搜索 Muse Spark Open。有关更多部署选项(例如推理组件和优化后的部署配置),请参阅 Amazon SageMaker AI Developer Guide 中的 JumpStart 基础模型使用。在部署之前,请查看 Muse Model License,SageMaker JumpStart 会在您部署模型时显示该许可协议。如需帮助规划生产部署,请联系 AWS。
关于作者
来源:AWS Machine Learning Blog · aws.amazon.com


