poolside/Laguna-M.1 · Hugging Face - 225B-A23B

Reddit r/LocalLLaMA 模型

摘要

Poolside 发布了 Laguna M.1,这是一个 225B 参数的混合专家模型,每个 token 激活 23B 参数,专为代理编程和长周期任务设计。它在 SWE-bench 基准测试上取得了有竞争力的结果,并采用 Apache 2.0 许可证发布。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/18 17:33

poolside/Laguna-M.1 · Hugging Face Source: https://huggingface.co/poolside/Laguna-M.1 poolside-banner 获取 API 密钥 (https://platform.poolside.ai/)·发布博客文章 (https://poolside.ai/blog/laguna-a-deeper-dive)·技术报告 (https://poolside.ai/assets/laguna/laguna-m1-xs2-technical-report.pdf)

Laguna M.1 是一个拥有 225B 总参数的混合专家模型,每个 token 激活 23B 参数,专为智能编码和长周期任务设计。

有关我们如何训练该模型的更多详细信息,包括我们的模型工厂方法、训练后配方、异步离策略智能体强化学习以及评估,请查看我们的发布博客文章 (https://poolside.ai/blog/laguna-a-deeper-dive) 和技术报告 (https://poolside.ai/assets/laguna/laguna-m1-xs2-technical-report.pdf)。

https://huggingface.co/poolside/Laguna-M.1#highlights 亮点

  • 用于智能编码的大型稀疏 MoE:Laguna M.1 是一个 70 层 MoE Transformer,总参数 225B,每个 token 激活 23B 参数。
  • 高容量专家路由:在 3 个密集 SwiGLU 层之后,Laguna M.1 使用 67 个稀疏 MoE 层,包含 256 个专家,top-k=16 路由和无辅助损失的负载均衡。
  • 全局注意力架构:Laguna M.1 在所有层中使用全局注意力,包含 64 个 Q-head、8 个 KV-head 以及 softplus 注意力输出门控。
  • 原生推理支持:在工具调用之间穿插思考,支持按请求启用和禁用思考。
  • 强大的智能体基准性能:Laguna M.1 在 SWE-bench Verified、SWE-bench Multilingual、SWE-Bench Pro 和 Terminal-Bench 2.0 上与最先进的开源权重模型和前沿模型竞争。
  • Apache 2.0 许可证:可自由用于商业和非商业目的。

https://huggingface.co/poolside/Laguna-M.1#model-overview 模型概述

  • 训练:预训练、后训练和强化学习阶段
  • 参数数量:总 225B,每个 token 激活 23B
  • 优化器:Muon
  • 层数:70 层,全局注意力
  • 专家:256 个专家,1 个共享专家;top-k=16 路由
  • 密集层:前 3 层为密集 SwiGLU;其余 67 层为稀疏 MoE
  • 注意力:64 个 Q-head,8 个 KV-head,头维度 128,带 softplus 注意力输出门控
  • 位置编码:RoPE with YaRN
  • 模态:文本到文本
  • 上下文长度:262,144 个 token
  • 推理支持:穿插思考并保留思考内容

https://huggingface.co/poolside/Laguna-M.1#benchmark-results 基准结果

模型参数SWE-bench VerifiedSWE-bench MultilingualSWE-bench Pro (Public Dataset)Terminal-Bench 2.0
Laguna M.1225B-A23B74.6%63.1%49.2%45.8%
Devstral 2123B dense72.2%61.3%-32.6%
GLM-4.7355B-A32B73.8%66.7%-41.0%
DeepSeek-V4 Flash284B-A13B79.0%73.3%52.6%56.9%
Qwen3.5-397B-A17B397B-A17B76.2%69.3%50.9%52.5%
Claude Sonnet 4.6-79.6%--59.1%

我们使用了所有比较模型在每个基准上公开的最高引用分数。在几乎所有情况下,这些都是发布博客文章或等效来源中发布的官方分数,Claude Sonnet 4.6 作为相近模型规模的前沿专有参考。“-”表示模型提供商未报告的分数。

Laguna M.1 的所有基准测试均使用我们的 pool 智能体框架 (https://github.com/poolsideai/pool) 完成,最大步数为 500 步,并在沙箱中执行。所有 Laguna M.1 基准测试使用相同的采样参数:温度=1.0、top_k=20,启用思考模式,上下文长度为 256K token。所有任务均在自己的沙箱中运行,使用 8 GB RAM/2 CPUs,Terminal-Bench 2.0 例外,使用 48 GB RAM/32 CPUs。部分基础任务镜像和验证器已打补丁,以修复任务设置中固有的基础设施可靠性问题,例如验证器使用的外部注册表中第三方依赖项的速率限制。所有四个智能体基准均使用打补丁后的镜像运行。我们还在 Laguna M.1 评估运行后使用了奖励破解裁判,经过联合裁判审查和手动审查后,未发现显著的奖励破解问题。

  • SWE-bench Verified:4 次运行的平均 pass@1
  • SWE-bench Multilingual:4 次运行的平均 pass@1
  • SWE-Bench Pro:4 次运行的平均 pass@1
  • Terminal-Bench 2.0:4 次运行的平均 pass@1;48 GB RAM/32 CPUs

https://huggingface.co/poolside/Laguna-M.1#usage 使用

Laguna M.1 在 vLLM、SGLang、Transformers 和 TRT-LLM(感谢 NVIDIA 团队的支持)中获得上游支持。

https://huggingface.co/poolside/Laguna-M.1#pool pool

pool 是一个轻量级的基于终端的编码智能体,也是一个双 Agent 客户端协议 (https://agentclientprotocol.com/get-started) 客户端-服务器。适用于 macOS 和 Linux 的下载和安装:

curl -fsSL https://downloads.poolside.ai/pool/install.sh | bash

启动并“使用 Poolside 登录”以获取免费 API 密钥。

pool

在任何 ACP 客户端 (https://agentclientprotocol.com/get-started/clients) 中使用。自动配置 Zed 和 JetBrains:

pool acp setup --editor zed|jetbrains

https://huggingface.co/poolside/Laguna-M.1#feedback-and-issues 反馈与问题

使用 /feedback 提交反馈,并阅读 GitHub 上的完整文档 (https://github.com/poolsideai/pool)。

https://huggingface.co/poolside/Laguna-M.1#deployment 部署

https://huggingface.co/poolside/Laguna-M.1#vllm vLLM

使用 vLLM 在本地提供 Laguna M.1 服务,并从任何兼容 OpenAI 的客户端进行查询(参见控制推理 (https://huggingface.co/poolside/Laguna-M.1#controlling-reasoning) 以了解工具调用、流式传输和推理提取):

Laguna 支持已通过 vllm-project/vllm#41129 (https://github.com/vllm-project/vllm/pull/41129)(与 Laguna XS.2 (https://huggingface.co/poolside/Laguna-XS.2) 共享)落地到 vLLM,并在 vLLM 0.21.0 及更高版本中可用。

pip install 'vllm>=0.21.0'
vllm serve \
    --model poolside/Laguna-M.1 \
    --tool-call-parser poolside_v1 \
    --reasoning-parser poolside_v1 \
    --enable-auto-tool-choice \
    --served-model-name laguna \
    --default-chat-template-kwargs '{"enable_thinking": true}'

请参阅 vLLM 配方页面 (https://recipes.vllm.ai/poolside/Laguna-XS.2) 以获取我们 Laguna XS.2 模型的更多部署指导,该模型共享相同的实现。FP8 和 NVFP4 量化检查点可在 Laguna-M.1-FP8 (https://huggingface.co/poolside/Laguna-M.1-FP8) 和 Laguna-M.1-NVFP4 (https://huggingface.co/poolside/Laguna-M.1-NVFP4) 获取;量化检测根据 quantization_config 自动完成,因此替换模型 ID 后,相同的命令即可工作。

https://huggingface.co/poolside/Laguna-M.1#sglang SGLang

Laguna M.1 可以使用 SGLang 的 OpenAI 兼容服务器提供服务,包括支持工具调用、流式响应和推理解析:

Laguna 支持已通过 sgl-project/sglang#24204 (https://github.com/sgl-project/sglang/pull/24204) 添加到 SGLang。该集成与 Laguna XS.2 (https://huggingface.co/poolside/Laguna-XS.2) 共享,并已在 SGLang main 上可用。

# Laguna M.1 support is currently on SGLang main, so install from source
git clone https://github.com/sgl-project/sglang.git
cd sglang
pip install -e "python[all]"
sglang serve \
    --model-path poolside/Laguna-M.1 \
    --tool-call-parser poolside_v1 \
    --reasoning-parser poolside_v1 \
    --tp 8 \
    --host 0.0.0.0

量化的 Laguna M.1 检查点也可通过 Laguna-M.1-FP8 (https://huggingface.co/poolside/Laguna-M.1-FP8) 和 Laguna-M.1-NVFP4 (https://huggingface.co/poolside/Laguna-M.1-NVFP4) 获取。SGLang 读取检查点的 quantization_config,因此替换模型 ID 后,您可以使用相同的启动命令。有关更多 SGLang 特定的部署细节,请参阅 SGLang Cookbook (https://docs.sglang.io/cookbook/autoregressive/Poolside/Laguna-XS.2),它使用相同的 Laguna 实现路径。

https://huggingface.co/poolside/Laguna-M.1#transformers Transformers

Laguna 在 Transformers v5.7.0 及更高版本中得到支持 (huggingface/transformers#45673 (https://github.com/huggingface/transformers/pull/45673))。

Laguna M.1 是一个 225B 参数的模型;在 Transformers 中加载 BF16 检查点需要大量的多 GPU 内存(device_map="auto" 会在可用设备之间分片)。对于单节点服务,建议使用 vLLM 或 SGLang。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "poolside/Laguna-M.1"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    dtype=torch.bfloat16,
    device_map="auto",
)

messages = [
    {"role": "user", "content": "Write a Python retry wrapper with exponential backoff."},
]

# Reasoning is on by default; pass enable_thinking=False to skip the block.
inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    return_tensors="pt",
    enable_thinking=True,
).to(model.device)

outputs = model.generate(inputs, max_new_tokens=1024, do_sample=True, temperature=1.0, top_k=20)
print(tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=True))

https://huggingface.co/poolside/Laguna-M.1#trt-llm TRT-LLM

感谢 NVIDIA 团队,Laguna 在 TensorRT-LLM 中得到支持——模型支持已落地于 NVIDIA/TensorRT-LLM#13559 (https://github.com/NVIDIA/TensorRT-LLM/pull/13559),partial-RoPE 融合已添加于 #15110 (https://github.com/NVIDIA/TensorRT-LLM/pull/15110)。从包含这些 PR 的 main 分支(或这些 PR 发布后的版本)构建 TensorRT-LLM。

from tensorrt_llm import LLM, SamplingParams

llm = LLM(model="poolside/Laguna-M.1", trust_remote_code=True)
sampling = SamplingParams(max_tokens=1024, temperature=1.0, top_k=20)
out = llm.generate(["Write a Python retry wrapper with exponential backoff."], sampling)
print(out[0].outputs[0].text)

如果您的 TensorRT-LLM 构建固定了 transformers < 4.58,则 configuration_laguna.py 需要一个小的兼容性 shim;请使用支持 PR 中的 laguna_minimal_overlay.sh 辅助脚本,并针对覆盖目录加载 TRT-LLM。量化检测根据 quantization_config 自动完成,因此相同配方适用于 FP8 (https://huggingface.co/poolside/Laguna-M.1-FP8) 和 NVFP4 (https://huggingface.co/poolside/Laguna-M.1-NVFP4) 变体,无需额外标志。

https://huggingface.co/poolside/Laguna-M.1#controlling-reasoning 控制推理

Laguna M.1 具有原生推理支持,旨在与保留思考功能最佳配合使用,其中先前助手消息中的 reasoning 内容保留在消息历史中。该模型通常会在调用工具之前以及在工具调用之间进行推理。

import json
from openai import OpenAI

client = OpenAI(
    base_url="https://inference.poolside.ai/v1",
    api_key="...",
)
model = "poolside/laguna-m.1"

tools = [{"type": "function", "function": {
    "name": "shell",
    "description": "Execute a bash command and return the output.",
    "parameters": {"type": "object", "properties": {"cmd": {"type": "string"}}, "required": ["cmd"]},
}}]

messages = [
    {"role": "system", "content": "You are a coding agent with access to a shell tool."},
    {"role": "user", "content": "Run uname -a"},
]

# Thinking is enabled by default when the server sets --default-chat-template-kwargs {"enable_thinking": True}
# When using the Poolside API (https://inference.poolside.ai/v1), this flag is set by default
response = client.chat.completions.create(
    model=model,
    messages=messages,
    tools=tools,
    stream=True,
)

reasoning, content, tool_calls = "", "", []
for chunk in response:
    delta = chunk.choices[0].delta
    if hasattr(delta, "reasoning_content") and delta.reasoning_content:
        reasoning += delta.reasoning_content
    if hasattr(delta, "content") and delta.content:
        content += delta.content
    if hasattr(delta, "tool_calls") and delta.tool_calls:
        for tc in delta.tool_calls:
            if tc.index >= len(tool_calls):
                tool_calls.append({"id": tc.id, "function": {"name": "", "arguments": ""}})
            if tc.function.name:
                tool_calls[tc.index]["function"]["name"] = tc.function.name
            if tc.function.arguments:
                tool_calls[tc.index]["function"]["arguments"] += tc.function.arguments

print(f"Reasoning: {reasoning}\nContent: {content}\nTool calls: {tool_calls}\n")

# Return reasoning in the next request for best performance
messages.append({
    "role": "assistant",
    "content": content,
    "reasoning_content": reasoning,
    "tool_calls": [{"id": tc["id"], "type": "function", "function": tc["function"]} for tc in tool_calls]
})
messages.append({
    "role": "tool",
    "tool_call_id": tool_calls[0]["id"],
    "content": json.dumps({"stdout": "Darwin arm64", "exit_code": "0"})
})

response = client.chat.completions.create(
    model=model,
    messages=messages,
    tools=tools,
    stream=True,
)

reasoning, content = "", ""
for chunk in response:
    delta = chunk.choices[0].delta
    if hasattr(delta, "reasoning_content") and delta.reasoning_content:
        reasoning += delta.reasoning_content
    if hasattr(delta, "content") and delta.content:
        content += delta.content

print(f"Reasoning: {reasoning}\nContent: {content}")

https://huggingface.co/poolside/Laguna-M.1#disabling-reasoning 禁用推理

您可以通过在请求中将 enable_thinking 设置为 False,或者不在启动服务器时提供 --default-chat-template-kwargs {"enable_thinking": True} 或其等效项来禁用思考。

from openai import OpenAI

client = OpenAI()
completion = client.chat.completions.create(
    model="poolside/laguna-m.1",
    messages=[
        {"role": "user", "content": "Write a retry wrapper with exponential backoff."}
    ],
    extra_body={
        "chat_template_kwargs": {
            "enable_thinking": False
        },
    },
    stream=True
)

for chunk in completion:
    print(chunk.choices[0].delta)

对于智能编码用例,我们建议启用思考并保留消息历史中的推理内容,如控制推理 (https://huggingface.co/poolside/Laguna-M.1#controlling-reasoning) 部分所述。

https://huggingface.co/poolside/Laguna-M.1#license 许可证

本模型采用 Apache 2.0 许可证 (https://huggingface.co/poolside/Laguna-M.1/blob/main/LICENSE.md) 许可。

https://huggingface.co/poolside/Laguna-M.1#intended-and-responsible-use 预期用途与责任使用

Laguna M.1 专为软件工程和智能编码用例设计,您有责任确认其适合您的预期应用。Laguna M.1 受 Apache 2.0 许可证 (https://huggingface.co/poolside/Laguna-M.1/blob/main/LICENSE.md) 约束,并且其使用应符合 Poolside 的可接受使用政策 (https://poolside.ai/legal/acceptable-use-policy)。我们建议不要规避 Laguna M.1 的安全护栏,除非您实施了适用于您的用例的充分等效的缓解措施。请将安全漏洞或安全问题报告至 [email protected]。

相似文章

poolside/Laguna-S-2.1-NVFP4

Hugging Face Models Trending

Poolside发布了Laguna S 2.1,这是一个1176亿参数的混合专家(MoE)模型,其中85亿参数被激活,专为智能体编程设计,具备滑动窗口注意力、原生推理支持和本地部署能力。

Laguna S 2.1

Hacker News Top

Poolside发布Laguna S 2.1,一个总参数量118B的混合专家(MoE)模型,每个token激活8B参数,支持长达100万token的上下文,在长周期编程基准测试中取得了有竞争力的成绩,并被誉为同重量级中最具能力的自主编程模型。

介绍 Laguna XS 2.1(5分钟阅读)

TLDR AI

Poolside 发布 Laguna XS 2.1,这是一个 33B 参数的混合专家模型,每个 token 激活 3B 参数,专为智能编码设计,在 SWE-bench Multilingual 及其他基准测试上有所改进,现已在宽松的 OpenMDW-1.1 许可证下提供。

poolside/Laguna-XS.2

Hugging Face Models Trending

Poolside 发布 Laguna XS.2,这是一个拥有 33B 总参数、3B 激活参数的 MoE 模型,专为智能体编码设计,可在配备 36GB RAM 的 Mac 上本地部署。