Kimi-K2.5

MERA Created at 15.04.2026 08:08

Ratings for leaderboard tasks

The table will scroll to the left

Task name Result Place in the rating
Agricultural industry 0.668 2
Medicine and healthcare 0.773 11

Information about the submission

Mera version
v1.0.0
Torch Version
2.10.0
The version of the codebase
0ac3a14
CUDA version
12.8
Precision of the model weights
bfloat16
Seed
1234
Batch
1
Transformers version
4.57.6
The number of GPUs and their type
8 x NVIDIA A100-SXM4-80GB
Architecture
openai-chat-completions

Team:

MERA

Name of the ML model:

Kimi-K2.5

Model size

1,100.0B

Model type:

Opened

SFT

MoE

Additional links:

https://arxiv.org/abs/2602.02276

Architecture description:

Kimi K2.5 is an open-source, native multimodal agentic model built through continual pretraining on approximately 15 trillion mixed visual and text tokens atop Kimi-K2-Base. It seamlessly integrates vision and language understanding with advanced agentic capabilities, instant and thinking modes, as well as conversational and agentic paradigms.

License:

https://huggingface.co/moonshotai/Kimi-K2.5/blob/main/LICENSE

Inference parameters

Generation Parameters:
agro_bench - do_sample=false;until=[];max_gen_toks=16384;reasoning={"enabled":true,"max_tokens":10000}; \naqua_bench - do_sample=false;until=[];max_gen_toks=16384;reasoning={"enabled":true,"max_tokens":10000}; \nmed_bench - do_sample=false;until=[];max_gen_toks=16384;reasoning={"enabled":true,"max_tokens":10000};

Description of the template:
{%- macro render_content(msg) -%} {%- set c = msg.get('content') -%} {%- if c is string -%} {{ c }} {%- elif c is not none -%} {% for content in c -%} {% if content['type'] == 'image' or content['type'] == 'image_url' -%} <|media_begin|>image<|media_content|><|media_pad|><|media_end|> {% elif content['type'] == 'video' or content['type']== 'video_url'-%} <|kimi_k25_video_placeholder|> {% else -%} {{ content['text'] }} {%- endif -%} {%- endfor -%} {%- endif -%} {%- endmacro -%} {% macro set_roles(message) -%} {%- set role_name = message.get('name') or message['role'] -%} {%- if message['role'] == 'user' -%} <|im_user|>{{role_name}}<|im_middle|> {%- elif message['role'] == 'assistant' -%} <|im_assistant|>{{role_name}}<|im_middle|> {%- else -%} <|im_system|>{{role_name}}<|im_middle|> {%- endif -%} {%- endmacro -%} {%- macro render_toolcalls(message) -%} <|tool_calls_section_begin|> {%- for tool_call in message['tool_calls'] -%} {%- set formatted_id = tool_call['id'] -%} <|tool_call_begin|>{{ formatted_id }}<|tool_call_argument_begin|>{% if tool_call['function']['arguments'] is string %}{{ tool_call['function']['arguments'] }}{% else %}{{ tool_call['function']['arguments'] | tojson }}{% endif %}<|tool_call_end|> {%- endfor -%} <|tool_calls_section_end|> {%- endmacro -%} {# Find last non-tool-call assisitant message #} {%- set ns = namespace(last_non_tool_call_assistant_msg=-1) -%} {%- for idx in range(messages|length-1, -1, -1) -%} {%- if messages[idx]['role'] == 'assistant' and not messages[idx].get('tool_calls') -%} {%- set ns.last_non_tool_call_assistant_msg = idx -%} {%- break -%} {%- endif -%} {%- endfor -%} {# split all messages into history & suffix, reasoning_content in suffix should be reserved.#} {%- set hist_msgs = messages[:ns.last_non_tool_call_assistant_msg+1] -%} {%- set suffix_msgs = messages[ns.last_non_tool_call_assistant_msg+1:] -%} {%- if tools -%} {%- if tools_ts_str -%} <|im_system|>tool_declare<|im_middle|>{{ tools_ts_str }}<|im_end|> {%- else -%} <|im_system|>tool_declare<|im_middle|>{{ tools | tojson(separators=(',', ':')) }}<|im_end|> {%- endif -%} {%- endif -%} {%- for message in hist_msgs -%} {{set_roles(message)}} {%- if message['role'] == 'assistant' -%} <think></think>{{render_content(message)}} {%- if message.get('tool_calls') -%} {{render_toolcalls(message)}} {%- endif -%} {%- elif message['role'] == 'tool' -%} {%- set tool_call_id = message.tool_call_id -%} ## Return of {{ tool_call_id }} {{render_content(message)}} {%- elif message['content'] is not none -%} {{render_content(message)}} {%- endif -%} <|im_end|> {%- endfor -%} {%- for message in suffix_msgs -%} {{set_roles(message)}} {%- if message['role'] == 'assistant' -%} {%- if thinking is defined and thinking is false -%} <think></think>{{render_content(message)}} {%- else -%} {%- set rc = message.get('reasoning_content', '') -%} <think>{{rc}}</think>{{render_content(message)}} {%- endif -%} {%- if message.get('tool_calls') -%} {{render_toolcalls(message)}} {%- endif -%} {%- elif message['role'] == 'tool' -%} {%- set tool_call_id = message.tool_call_id -%} ## Return of {{ tool_call_id }} {{render_content(message)}} {%- elif message['content'] is not none -%} {{render_content(message)}} {%- endif -%} <|im_end|> {%- endfor -%} {%- if add_generation_prompt -%} <|im_assistant|>assistant<|im_middle|> {%- if thinking is defined and thinking is false -%} <think></think> {%- else -%} <think> {%- endif -%} {%- endif -%}