RuadaptQwen3-8B-Hybrid

RCC MSU Created at 28.10.2025 10:26
0.326
The overall result

Ratings for leaderboard tasks

The table will scroll to the left

Task name Result Metric
YABLoCo 0.115 / 0.014
EM pass@k
stRuCom 0.244
chrF
RealCode 0.191 / 0.986
pass@k execution_success
UnitTests 0.218
CodeBLEU
ruCodeEval 0.419 / 0.548 / 0.598
pass@k
JavaTestGen 0.093 / 0.326
pass@k compile@1
ruHumanEval 0.427 / 0.57 / 0.604
pass@k
RealCodeJava 0.245 / 0.953
pass@k execution_success
CodeLinterEval 0.5 / 0.537 / 0.545
pass@k
ruCodeReviewer 0.034 / 0.181 / 0.042 / 0.078 / 0.118
chrF BLEU judge@1 judge@5 judge@10
CodeCorrectness 0.744
EM

Information about the submission

Mera version
v1.0.0
Torch Version
2.6.0
The version of the codebase
f86b2b9
CUDA version
12.4
Precision of the model weights
bf16
Seed
1234
Batch
2
Transformers version
4.57.0
The number of GPUs and their type
1 x NVIDIA H100 PCIe
Architecture
vllm

Team:

RCC MSU

Name of the ML model:

RuadaptQwen3-8B-Hybrid

Model size

8.0B

Model type:

Opened

SFT

Additional links:

Tikhomirov M., Chernyshov D. Facilitating Large Language Model Russian Adaptation with Learned Embedding Propagation //Journal of Language and Education. – 2024. – Т. 10. – №. 4. – С. 130-145.

Architecture description:

Адаптированная на русский язык Qwen3-8B с заменой токенизации

Description of the training:

см. статью

Pretrain data:

20 миллиардов токенов для cpt + t-wix

License:

Apache license 2.0

Inference parameters

Generation Parameters:
rucodeeval - do_sample=true;temperature=0.6;max_gen_toks=1024;until=["\nclass","\ndef","\n#","\nif","\nprint"]; \ncodelintereval - do_sample=true;temperature=0.6;max_gen_toks=1024;until=["\n\n"]; \nrucodereviewer - temperature=0;do_sample=false;max_gen_toks=1000;until=["\n\n"]; \nunittests - do_sample=false;max_gen_toks=1024;until=["\n\n"]; \ncodecorrectness - until=["\n\n"];do_sample=false;temperature=0; \nrealcode - do_sample=true;max_gen_toks=4096;temperature=0.7;repetition_penalty=1.05;top_p=0.8;until=["<|endoftext|>","<|im_end|>"]; \nrealcodejava - do_sample=true;max_gen_toks=4096;temperature=0.7;repetition_penalty=1.05;top_p=0.8;until=["<|endoftext|>","<|im_end|>"]; \njavatestgen - do_sample=true;max_gen_toks=4096;temperature=0.2;top_p=0.9;until=["<|endoftext|>","<|im_end|>"]; \nyabloco_oracle - max_gen_toks=2048;do_sample=false;until=["<|endoftext|>","<|im_end|>","\n\n\n","\\sclass\\s","\\sdef\\s","^def\\s","^class\\s","^if\\s","@","^#"]; \nruhumaneval - do_sample=true;temperature=0.6;max_gen_toks=1024;until=["\nclass","\ndef","\n#","\nif","\nprint"]; \nstrucom - do_sample=false;max_gen_toks=512;until=["\n\n"];

The size of the context:
rucodeeval, codelintereval, rucodereviewer, unittests, codecorrectness, realcode, realcodejava, javatestgen, yabloco_oracle, ruhumaneval, strucom - 40960

Description of the template:
{%- if tools %} \n {{- '<|im_start|>system\n' }} \n {%- if messages[0].role == 'system' %} \n {{- messages[0].content + '\n\n' }} \n {%- endif %} \n {{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }} \n {%- for tool in tools %} \n {{- "\n" }} \n {{- tool | tojson }} \n {%- endfor %} \n {{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }} \n{%- else %} \n {%- if messages[0].role == 'system' %} \n {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }} \n {%- endif %} \n{%- endif %} \n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %} \n{%- for message in messages[::-1] %} \n {%- set index = (messages|length - 1) - loop.index0 %} \n {%- if ns.multi_step_tool and message.role == "user" and not(message.content.startswith('<tool_response>') and message.content.endswith('</tool_response>')) %} \n {%- set ns.multi_step_tool = false %} \n {%- set ns.last_query_index = index %} \n {%- endif %} \n{%- endfor %} \n{%- for message in messages %} \n {%- if (message.role == "user") or (message.role == "system" and not loop.first) %} \n {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }} \n {%- elif message.role == "assistant" %} \n {%- set content = message.content %} \n {%- set reasoning_content = '' %} \n {%- if message.reasoning_content is defined and message.reasoning_content is not none %} \n {%- set reasoning_content = message.reasoning_content %} \n {%- else %} \n {%- if '</think>' in message.content %} \n {%- set content = message.content.split('</think>')[-1].lstrip('\n') %} \n {%- set reasoning_content = message.content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %} \n {%- endif %} \n {%- endif %} \n {%- if loop.index0 > ns.last_query_index %} \n {%- if loop.last or (not loop.last and reasoning_content) %} \n {{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content.strip('\n') + '\n</think>\n\n' + content.lstrip('\n') }} \n {%- else %} \n {{- '<|im_start|>' + message.role + '\n' + content }} \n {%- endif %} \n {%- else %} \n {{- '<|im_start|>' + message.role + '\n' + content }} \n {%- endif %} \n {%- if message.tool_calls %} \n {%- for tool_call in message.tool_calls %} \n {%- if (loop.first and content) or (not loop.first) %} \n {{- '\n' }} \n {%- endif %} \n {%- if tool_call.function %} \n {%- set tool_call = tool_call.function %} \n {%- endif %} \n {{- '<tool_call>\n{"name": "' }} \n {{- tool_call.name }} \n {{- '", "arguments": ' }} \n {%- if tool_call.arguments is string %} \n {{- tool_call.arguments }} \n {%- else %} \n {{- tool_call.arguments | tojson }} \n {%- endif %} \n {{- '}\n</tool_call>' }} \n {%- endfor %} \n {%- endif %} \n {{- '<|im_end|>\n' }} \n {%- elif message.role == "tool" %} \n {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %} \n {{- '<|im_start|>user' }} \n {%- endif %} \n {{- '\n<tool_response>\n' }} \n {{- message.content }} \n {{- '\n</tool_response>' }} \n {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %} \n {{- '<|im_end|>\n' }} \n {%- endif %} \n {%- endif %} \n{%- endfor %} \n{%- if add_generation_prompt %} \n {{- '<|im_start|>assistant\n' }} \n {%- if enable_thinking is defined and enable_thinking is false %} \n {{- '<think>\n\n</think>\n\n' }} \n {%- endif %} \n{%- endif %}