AWS Machine Learning更新于

Meta 的 Muse Spark Open 现已在 Amazon SageMaker JumpStart 上可用

Meta的编程优化开源权重模型Muse Spark Open登陆Amazon SageMaker JumpStart,可在自有AWS账户中部署端点并首次推理。文章给出具体部署步骤,但模型能力多为Meta描述,质量需自行评估。

Muse Spark Open model detail card in SageMaker JumpStart with the Deploy option
配图来源 · AWS Machine Learning

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 设计为一个代理式(agentic)模型。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 账户。
  • 一个 AWS Identity and Access Management (IAM) 用于 SageMaker AI 的执行角色。在本次演练中, 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 对于 NVFP4 变体,或者 BF16 变体需要 ml.p6-b300.48xlarge for endpoint usage 对于 BF16 变体。要申请提高配额,请参阅 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 在 US East (N. Virginia) 和 US East (Ohio) 可用。要检查其他区域的可用性,请在您的区域中打开 SageMaker JumpStart。

托管 Muse Spark Open 的实例是多 GPU 实例,只要终端节点在运行,您就需要为其付费,无论它是否处理请求。完成后请删除终端节点,如本文的清理部分所述。有关费率,请参阅 Amazon SageMaker AI pricing.

使用 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 用于 NVFP4 或 ml.p6-b300.48xlarge 用于 BF16。SageMaker Studio 仅列出该模型支持的实例类型。
  5. 对于 Initial instance count,输入 1。
  6. (可选)在 高级选项,选择一个 VPC 和一个 AWS KMS 密钥,或开启网络隔离。
  7. 选择 部署.

图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 方法向其发送请求。该终端节点接受兼容 OpenAI 的聊天负载,其中包含一个 messages 列表,并返回聊天补全结果。最终答案位于 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 foundation model usage 。在部署之前,请查看 Muse Model License,SageMaker JumpStart 会在您部署模型时显示该许可。如需规划生产部署方面的帮助,请 联系 AWS.

 


关于作者

原始出处

AWS Machine Learning

内容说明

原始发布及相关权利归来源方。

机器翻译 · 请以原文为准