poolside/Laguna-M.1 · Hugging Face - 225B-A23B
摘要
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 Verified | SWE-bench Multilingual | SWE-bench Pro (Public Dataset) | Terminal-Bench 2.0 |
|---|---|---|---|---|---|
| Laguna M.1 | 225B-A23B | 74.6% | 63.1% | 49.2% | 45.8% |
| Devstral 2 | 123B dense | 72.2% | 61.3% | - | 32.6% |
| GLM-4.7 | 355B-A32B | 73.8% | 66.7% | - | 41.0% |
| DeepSeek-V4 Flash | 284B-A13B | 79.0% | 73.3% | 52.6% | 56.9% |
| Qwen3.5-397B-A17B | 397B-A17B | 76.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
Poolside发布了Laguna S 2.1,这是一个1176亿参数的混合专家(MoE)模型,其中85亿参数被激活,专为智能体编程设计,具备滑动窗口注意力、原生推理支持和本地部署能力。
Laguna S 2.1
Poolside发布Laguna S 2.1,一个总参数量118B的混合专家(MoE)模型,每个token激活8B参数,支持长达100万token的上下文,在长周期编程基准测试中取得了有竞争力的成绩,并被誉为同重量级中最具能力的自主编程模型。
介绍 Laguna XS 2.1(5分钟阅读)
Poolside 发布 Laguna XS 2.1,这是一个 33B 参数的混合专家模型,每个 token 激活 3B 参数,专为智能编码设计,在 SWE-bench Multilingual 及其他基准测试上有所改进,现已在宽松的 OpenMDW-1.1 许可证下提供。
poolside/Laguna-XS.2
Poolside 发布 Laguna XS.2,这是一个拥有 33B 总参数、3B 激活参数的 MoE 模型,专为智能体编码设计,可在配备 36GB RAM 的 Mac 上本地部署。
@cline: Laguna S 2.1 在小模型性能上取得突破,击败了体积是其三倍的模型。仅118b参数,它击败了Dee…
Poolside 发布了 Laguna S 2.1,这是一个 118B 参数的混合专家模型,每个 token 激活 8B 参数,拥有 1M 上下文窗口,声称可以击败体积是其三倍的模型,例如 DeepSeek v4 Pro、Gemini 3.6 Flash 和 Thinking Machines Inkling。