面向编程优化的开放权重模型 Muse Spark Open 已上线 Amazon SageMaker JumpStart。开发者可通过 SageMaker Studio 或 Python SDK,在自己的 AWS 账户中部署推理端点并发起请求。
Meta 面向编程优化的开放权重模型 Muse Spark Open,现已上线 Amazon SageMaker JumpStart。JumpStart 是 Amazon SageMaker AI 的机器学习(ML)中心。该模型基于真实的开发者工作流训练,包括跨文件重构和长时间调试,并支持 100 万 token 的上下文窗口。只需几步,你就能将它部署到自己 AWS 账户中的 SageMaker AI endpoint,无需自行管理推理服务基础设施。SageMaker JumpStart 提供两个版本:BF16(Muse-Spark-Open-816B-A42B)和 NVFP4 量化版(Muse-Spark-Open-816B-A42B-NVFP4)。
本文将介绍 Muse Spark Open,并演示如何通过 Amazon SageMaker Studio 和 SageMaker Python SDK 部署模型、发送首次推理请求,以及清理资源。
Meta 将 Muse Spark Open 定位为针对编程优化的模型,专为 Agent 编程工作流训练,重点提升首次尝试的准确率、工具调用能力,以及对大型代码库的理解能力。它是一个推理模型,接受文本、图像、文档、音频和音视频输入,并输出文本。
Muse Spark Open 采用 mixture-of-experts(MoE,混合专家)架构,总参数量为 8160 亿,每个 token 激活其中的 420 亿参数。这让模型具备超大规模网络的容量,同时处理每个 token 所需的计算量更接近规模小得多的稠密模型。Meta 按照 Muse Model License 发布模型权重,该许可证包含 Muse Spark Usage Policy。
下表汇总了模型信息。
Meta 按照开发者在真实代码仓库中的工作方式训练 Muse Spark Open,涵盖代码生成、调试、跨文件重构,以及需要长时间执行的任务。借助 100 万 token 的上下文窗口,模型可以接收整个项目,包括依赖、遗留代码和数千个文件。你无需为了适应上下文容量而把任务拆成更小的部分。
Meta 从一开始就将 Muse Spark Open 设计为面向 Agent 的模型。Meta 表示,该模型能够在较长的任务过程中持续规划、行动、观察结果并自我纠正,而不只是执行单次工具调用。作为推理模型,它会先推演任务,再采取行动;SageMaker AI endpoint 会同时返回推理内容和答案,让你了解 Agent 正在做什么,以及为什么这样做。Meta 训练模型浏览网页、协调 subagent 处理可拆分的工作,以及在桌面、移动端和浏览器环境中操作计算机。这些都是模型本身的能力。在 SageMaker AI 上,模型调用的工具、浏览器和计算机操作环境,需要由你的应用或 Agent 框架提供。除代码之外,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 上使用开放权重模型,也意味着你可以掌控部署。endpoint 运行在你的 AWS 账户中,因此源代码和 prompt 都在由你配置和控制的基础设施上处理。你可以将 endpoint 接入自己的 Amazon Virtual Private Cloud(Amazon VPC),使用 AWS Key Management Service(AWS KMS)中的密钥加密其存储卷,并为容器启用网络隔离。你还可以选择实例类型、设置扩缩容限制,并固定模型版本,确保模型只在重新部署时发生变化。
Muse Spark Open 可用于多种应用。Meta 对编程和 Agent 工作流的侧重,使它适合以下场景:
你可以通过 SageMaker Studio 或 SageMaker Python SDK 部署 Muse Spark Open。两种方式都会在你的账户中创建一个实时 SageMaker AI endpoint。
开始之前,请确保已具备以下条件:
pip install --upgrade sagemaker)。托管 Muse Spark Open 的实例均为多 GPU 实例。只要 endpoint 仍在运行,无论是否处理请求,都会产生费用。完成使用后,请按照本文清理部分的说明删除 endpoint。费率请参阅 Amazon SageMaker AI 定价。
SageMaker Studio 适合首次评估:你可以在同一张模型详情卡片中找到模型、查看许可证并完成部署。
图 1 展示了模型详情卡片,其中列出了模型说明、许可证和 Deploy 选项。
图 1:SageMaker JumpStart 中的 Muse Spark Open 模型详情卡片
图 2 展示了 NVFP4 版本的部署设置。
图 2:Muse Spark Open 的部署设置
部署通常需要 15–20 分钟,期间 SageMaker AI 会预置实例并加载权重。当 endpoint 状态变为 InService 时,即可接收请求,如图 3 所示。
图 3:已进入服务状态的 Muse Spark Open endpoint
SageMaker JumpStart 使用以下 model ID 区分两个版本:
以下代码使用 SageMaker Python SDK v3 部署 NVFP4 版本。你可以在 SageMaker Studio notebook 中运行,代码会使用所属 domain 的执行角色。如果在其他配置了 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")
endpoint 进入服务状态后,使用 invoke 方法发送请求。endpoint 接受兼容 OpenAI 格式的聊天请求体,其中包含 messages 列表,并返回 chat completion。最终答案位于 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"])
endpoint 还支持流式输出。要在 token 生成时实时接收,请在请求体中添加 "stream": true,并调用 endpoint.invoke_with_response_stream,替代 invoke。
不再需要 endpoint 时,请将其删除,以停止产生费用。如果使用 SDK 部署,请删除模型、endpoint 和 endpoint 配置:
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 控制台中删除 endpoint:依次选择 Inference、Endpoints,选中对应 endpoint,然后选择 Actions、Delete。
本文演示了如何通过 SageMaker JumpStart,将 Meta 面向编程优化的开放权重模型 Muse Spark Open 部署到自己 AWS 账户中的 endpoint。你使用 SageMaker Studio 或 SageMaker Python SDK 完成了部署,并向模型发送了首次推理请求。在选择生产环境实例之前,请在自己的代码仓库上对两个版本进行基准测试。
要开始使用,请在 SageMaker Studio 的 SageMaker JumpStart 中搜索 Muse Spark Open。有关 inference components 和优化部署配置等更多部署选项,请参阅《Amazon SageMaker AI Developer Guide》中的《JumpStart foundation model usage》。部署前,请阅读 Muse Model License,SageMaker JumpStart 会在部署模型时展示该许可证。如需协助规划生产部署,请联系 AWS。