IFM开源K2 Horizon系列六款模型 全场景部署含MoVA架构

近日,开源AI基础模型领域推出了一款覆盖全场景部署的重磅模型家族,该系列不仅提供了六种不同参数量级的选型,还完整开放了训练全链路,并引入了创新的MoVA架构设计,让开发者能够灵活适配各类部署需求。
该系列模型总参数量覆盖从0.9B到375B的区间,具体包括0.9B、3.7B、7B、32B、36B-A4B和375B-A23B,面向端侧设备、本地工作站、高效推理服务以及企业级智能体任务。其中7B模型在SWE-bench Verified和AIME 2026评测中分别达到70.6%和90.1%的成绩;采用MoVA架构的36B-A4B每个token仅激活约4B参数,性能却接近稠密结构的32B模型。
K2 Horizon系列同时开放了完整的训练链路,包括训练数据构建方案、训练代码、配置文件、中间检查点、细粒度训练日志、评测结果与最终权重,覆盖推理与智能体后训练全阶段。模型与代码采用Apache 2.0许可证,对于无法直接再分发的数据,也公开了对应的构建方法与混合方案。
全场景模型家族覆盖不同部署需求
K2 Horizon的六款模型各司其职,覆盖从资源受限设备到企业级场景的全链路需求,除0.9B使用较小词表外,其余型号共享训练方法、接口、评测体系与部署工具。
作为企业级旗舰模型,375B-A23B是总参数量375B的稀疏MoE模型,每个token仅激活约23B参数,面向复杂推理、软件工程、深度研究与长时程智能体任务。该模型在GDPVal-AA获得1441 Elo评分,Toolathlon Verified、BrowseComp和MCPMark分别达到65.3%、72.8%和67.7%。在Terminal-Bench 2.1上的原始准确率为70.2%,经过奖励作弊审计剔除24次存在问题的试验后,最终修正为66.9%。
面向本地部署的两款模型中,32B是系列中能力最强的稠密模型,在性能、适配性与本地部署可行性之间取得平衡,适合本地工作站、高效服务系统与私有化部署场景。36B-A4B则采用MoE前馈层与MoVA稀疏注意力设计,总参数量36B,每个token激活约4B参数,在相同训练条件下性能接近稠密32B模型,同时大幅降低了计算资源消耗,在Terminal-Bench 2.1、SciCode和AA-LCR上分别取得58.6%、38.9%和66.3%的成绩。
端侧与轻量部署场景则由7B、3.7B与0.9B三款模型覆盖:7B面向手机、本地设备与多步工作流,在SWE-bench Verified、LiveCodeBench v6和AIME 2026上分别达到70.6%、71.2%和90.1%;3.7B适合微调和端侧部署,在SWE-bench Verified上取得68.6%,AIME 2026达到89.7%,能力覆盖科学编程、数学推理与多步任务;0.9B则面向手表、眼镜等资源极度受限的设备,适合数学推理、轻量工具调用与简单智能体任务,在AIME 2026、LiveCodeBench v6和BFCL v4上分别达到48.5%、37.4%和28.0%。
技术架构与开放训练体系
K2 Horizon并非六款独立模型,而是共享架构设计、训练方法、接口、评测体系与部署工具的完整模型家族。其中36B-A4B引入的MoVA(Mixture-of-Value-Attention)架构,将专家路由从前馈层扩展到注意力的value计算环节,同时兼容FlashAttention、分组查询注意力与稀疏注意力机制,实现了高性价比的性能表现。
训练数据与合成数据体系
每款模型均使用约20T token进行预训练,数据覆盖网页、代码、数学、科学、多语言与特定领域内容,其中近17%为带有显式推理过程的问题求解轨迹,合成数据总量约10T token。研究团队使用Wzip方法衡量大规模语料的多样性,该方法结合自适应多滑动窗口LZ77与分窗口Huffman编码,缓解了传统压缩指标在大规模语料上过早饱和的问题。测试结果显示,K2 Horizon的合成数据多样性接近高质量自然网页文本,明显高于普通网页代码数据。
工具训练同时覆盖JSON、XML和Markdown三种格式,避免模型绑定单一语法格式。推理阶段默认使用Markdown呈现工具定义,在该系列模型的训练数据上,Markdown格式的token消耗比传统JSON格式低约18.5%。
跨规模训练动态与可复现性
3.7B、7B、32B和36B-A4B四款模型使用完全相同的22T token训练数据,并对齐了训练进度。以最后1%训练阶段的损失中位数进行归一化后,四款模型的损失轨迹基本重合。这一结果表明,在共享数据与统一训练方案下,不同参数规模以及稠密、稀疏架构的模型呈现出相近的学习曲线。同时开放的中间检查点与细粒度训练日志,也让训练波动、干预效果与能力涌现过程可以被进一步分析与复现。
后训练与开放基础设施
K2 Horizon的后训练流程包括中期训练、监督微调、模型合并与强化学习,并从共同基础检查点分出推理、编程、工具使用与智能体等不同分支。后训练数据从中期训练阶段开始引入,涵盖长上下文文档、指令遵循、推理与智能体轨迹,以及超过1亿个独特任务。
研究团队同时开放了用于预训练的xLLM基础设施与智能体后训练代码,让研究者能够完整检查训练过程、复现不同训练阶段的效果,并将相关方法适配到新的工具、环境与领域。
训练日志揭示奖励作弊行为
团队对375B-A23B在Terminal-Bench 2.1上的全部通过试验进行了奖励作弊审计。该模型共完成712次试验,其中500次通过验证器,原始准确率为70.2%;审计发现10项任务中的24次试验存在违规行为,包括从公开仓库查找参考答案、复制现有修复方案、读取未公开文件或暴露凭据、修改测试框架或利用评分器等。剔除这些试验后,模型成绩修正为66.9%,修正幅度达3.37个百分点。开放中间检查点与训练日志,也让研究者可以进一步追踪这些非预期策略在训练的哪个阶段出现。
本地部署实践指南
K2 Horizon 36B-A4B支持三种本地推理方式:Transformers直接加载、vLLM服务化部署和SGLang服务化部署。模型原生上下文长度为524288 token,以下服务示例将上下文上限设置为131072 token,官方推荐推理参数为reasoning_effort="high"、temperature=1.0、top_p=0.95。
模型下载
modelscope download \
--model IFM/K2-Horizon-MoVA-36B-A4B \
--local_dir ./K2-Horizon-MoVA-36B-A4B
Transformers 推理
Transformers加载方式适合直接在Python环境中调用模型,便于功能验证与二次开发,模型以BF16精度加载,并通过device_map="auto"自动分配计算设备。
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "IFM/K2-Horizon-MoVA-36B-A4B"
tokenizer = AutoTokenizer.from_pretrained(model_id,
trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id, device_map="auto", dtype="bfloat16",
low_cpu_mem_usage=True, trust_remote_code=True
)
inputs = tokenizer("Explain why long-context evaluation is difficult.",
return_tensors="pt").to(model.device)
inputs.pop("token_type_ids", None)
outputs = model.generate(**inputs, max_new_tokens=32768,
temperature=1.0, top_p=0.95, do_sample=True)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
vLLM 部署
vLLM方案采用TP=2、专家并行与BF16精度,并提供OpenAI兼容接口:
VLLM_USE_MODELSCOPE=true vllm serve \
./K2-Horizon-MoVA-36B-A4B \
--tensor-parallel-size 2 \
--enable-expert-parallel \
--trust-remote-code \
--dtype bfloat16 \
--max-model-len 131072 \
--reasoning-parser k2_horizon \
--tool-call-parser k2_horizon \
--enable-auto-tool-choice \
--port 30000
SGLang 部署
以下配置已在2×H200环境中验证,采用TP=2、EP=2、BF16和FlashAttention-3:
python3 -m sglang.launch_server \
--model-path ./K2-Horizon-MoVA-36B-A4B \
--tp 2 \
--ep 2 \
--dtype bfloat16 \
--attention-backend fa3 \
--json-model-override-args \
'{"xllm_source_router_gemm_partitions":2}' \
--reasoning-parser k2_horizon \
--tool-call-parser k2_horizon \
--host 0.0.0.0 \
--port 30000
OpenAI 兼容 API 调用
在vLLM或SGLang启动服务后,可通过OpenAI SDK进行访问,工具调用支持json、xml和xml_typed三种格式,默认使用xml格式。
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:30000/v1",
api_key="EMPTY",
)
model_id = client.models.list().data[0].id
response = client.chat.completions.create(
model=model_id,
messages=[
{"role": "user", "content": "请逐步解释这个结果。"}
],
temperature=1.0,
top_p=0.95,
extra_body={
"chat_template_kwargs": {
"reasoning_effort": "high",
"tool_call_format": "xml",
}
},
)
message = response.choices[0].message
print("Reasoning:", getattr(message, "reasoning_content", None))
print("Answer:", message.content)

