跳到正文
AWS Machine Learning Blog· Aris Tsakpinis·· 2 小时前精选AI 评分60

Meta 的 Muse Spark Open 上线 Amazon SageMaker JumpStart

Meta’s Muse Spark Open now available in Amazon SageMaker JumpStart

AI 导读

Meta 的编码优化开源权重模型 Muse Spark Open 现已在 Amazon SageMaker JumpStart 上线,可在自己的 AWS 账号中部署到 SageMaker AI 端点。

推荐理由

Meta 的编码优化开源模型上线 SageMaker JumpStart,文中给出两种量化变体与对应实例,读者可据此估算部署成本。

正文 · AI 翻译

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 Usage Policy。

下表总结了该模型。

属性 Muse Spark Open
提供商 Meta
架构 混合专家(MoE),推理模型
参数 总计 816B,激活 42B
上下文长度 1M token
输入模态 文本、图像、文档、音频、音视频
输出模态 文本
SageMaker JumpStart 中的变体 BF16 和 NVFP4
许可证 Muse Model License,包含 Muse Spark Usage Policy

为长时间运行的编码智能体而构建

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

  1. 打开 SageMaker Studio。
  2. 在导航窗格中,选择 JumpStart。
  3. 在搜索框中输入 Muse Spark Open。
  4. 选择 Muse-Spark-Open-816B-A42B(BF16 变体)或 Muse-Spark-Open-816B-A42B-NVFP4(NVFP4 变体)以打开其模型详情卡。

图 1 展示了模型详情卡,其中列出了模型描述、许可证以及 Deploy 选项。

Muse Spark Open model detail card in SageMaker JumpStart with the Deploy option

图 1:SageMaker JumpStart 中的 Muse Spark Open 模型详情卡

部署模型

  1. 在模型详情卡上,选择 Deploy。
  2. Muse Spark Open 是门控模型,因此 SageMaker Studio 会显示其最终用户许可协议(EULA)。请查看协议并接受以继续。
  3. 对于 Endpoint name,保留生成的名称或输入你自己的名称。
  4. 对于 Instance type,NVFP4 选择 ml.p5e.48xlarge,BF16 选择 ml.p6-b300.48xlarge。SageMaker Studio 仅列出模型支持的实例类型。
  5. 对于 Initial instance count,输入 1。
  6. (可选)在 Advanced options 下,选择 VPC 和 AWS KMS 密钥,或开启网络隔离。
  7. 选择 Deploy。

图 2 展示了 NVFP4 变体的部署设置。

Deployment settings for the Muse Spark Open NVFP4 variant in SageMaker JumpStart

图 2:Muse Spark Open 的部署设置

部署通常需要 15–20 分钟,期间 SageMaker AI 会预置实例并加载权重。当端点状态变为 InService 时,端点即可接收请求,如图 3 所示。

Muse Spark Open endpoint showing InService status in the SageMaker AI console

图 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 才能部署它。要固定特定模型版本,请将 model_version 添加到 JumpStartConfig。

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 开发者指南中的 JumpStart 基础模型使用。在部署之前,请查看 Muse Model License,SageMaker JumpStart 会在你部署模型时显示该许可证。如需帮助规划生产部署,请联系 AWS。


关于作者

Aris Tsakpinis

Aris Tsakpinis

Aris 是生成式 AI 高级专家解决方案架构师,专注于 Amazon Bedrock 上的开放权重模型以及更广泛的生成式 AI 开源生态系统。在职业工作之外,他正在雷根斯堡大学攻读机器学习工程博士学位,研究方向是科学领域中的应用自然语言处理。

Liam Neal Reilly

Liam Neal Reilly

Liam 是 AWS 的 Amazon SageMaker JumpStart 团队的一名软件工程师,专注于开放权重 AI 模型的部署和优化。他在马萨诸塞大学阿默斯特分校获得本科学位,期间研究人机交互,并持续关注机器人技术和世界模型的发展。工作之余,他喜欢烹饪和攀岩。

来源:AWS Machine Learning Blog · aws.amazon.com