From ca356fb59c25e60817e2831a137a7b3005e7f6d9 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Sun, 10 May 2026 00:10:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: Nanbeige/Nanbeige4-3B-Thinking-2510 Source: Original Platform --- .gitattributes | 36 +++++++++ README.md | 157 ++++++++++++++++++++++++++++++++++++++++ added_tokens.json | 9 +++ config.json | 27 +++++++ figures/nbg.png | Bin 0 -> 15639 bytes figures/performance.png | Bin 0 -> 67296 bytes pytorch_model.bin | 3 + special_tokens_map.json | 27 +++++++ tokenizer.json | 3 + tokenizer.model | 3 + tokenizer_config.json | 103 ++++++++++++++++++++++++++ 11 files changed, 368 insertions(+) create mode 100644 .gitattributes create mode 100644 README.md create mode 100644 added_tokens.json create mode 100644 config.json create mode 100644 figures/nbg.png create mode 100644 figures/performance.png create mode 100644 pytorch_model.bin create mode 100644 special_tokens_map.json create mode 100644 tokenizer.json create mode 100644 tokenizer.model create mode 100644 tokenizer_config.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..52373fe --- /dev/null +++ b/.gitattributes @@ -0,0 +1,36 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md new file mode 100644 index 0000000..661b6c3 --- /dev/null +++ b/README.md @@ -0,0 +1,157 @@ +--- +license: apache-2.0 +language: +- en +- zh +library_name: transformers +pipeline_tag: text-generation +tags: +- llm +- nanbeige +--- +
+ +Nanbeige Logo +
+ + +# 1. Introduction + +Nanbeige4-3B-Thinking is a **3B-parameter reasoning model** within the fourth-generation Nanbeige LLM family. +It showcases that even compact models can achieve advanced reasoning abilities through continuous enhancements in data quality and training methodologies. +To support research and technological advancement in the open-source community, we have open-sourced the Nanbeige4-3B-Thinking model together with its technical methodology. + +
+ + +
+ +# 2. Model Summary + +Pre-Training
+ + * We constructed a comprehensive **23T-tokens** training corpus from web texts, books, code, and papers, meticulously filtered through a hybrid strategy of tagging-based scoring and retrieval-based recalling. + This foundation was then augmented with **knowledge-dense and reasoning-intensive synthetic data**, including Q&A pairs, textbooks, and Long-COTs, which significantly benefited the downstream task performance. + + + + * We designed an innovative **FG-WSD (Fine-Grained Warmup-Stable-Decay)** training scheduler, meticulously refining the conventional WSD approach. +This scheduler was implemented with a **fine-grained, quality-progressive data curriculum**, dividing the Stable stage into multiple phases with progressively improved data mixtures. Compared to the vanilla WSD, our method achieved notable performance gains. During the Decay stage, we increased the proportion of math, code, synthetic QA, and synthetic Long-COT data to further enhance reasoning capabilities. + + + | Stage | Training Tokens | Learning Rate | + |-------------------------------|-----------------|-----------------------| + | Warmup Stage | 0.1T | 0 ——> 4.5e-4 | + | Diversity-Enriched Stable Stage| 12.4T | Constant 4.5e-4 | + | High-Quality Stable Stage | 6.5T | Constant 4.5e-4 | + | Decay and Long-Context Stage | 4T | 4.5e-4 ——> 1.5e-6 |

+ + +Post-Training
+ + * **SFT phase.** We constructed a collection of over **30 million** high-quality Long Chain-of-Thought (Long-CoT) samples to support **multi-stage curriculum learning**. +By integrating both rule-based and model-based verification methods, we not only ensured sample accuracy but also enhanced the comprehensiveness and instructional value of each training example compared to alternative candidates. +This rich diversity in instructions and high response quality equipped the model to achieve outstanding performance across a variety of benchmarks.
+ + * **Distill.** Following SFT, we employed the Nanbeige flagship reasoning model as the teacher model to distill the Nanbeige4-3B-Thinking model, and further enhanced the performance. + We observed that on-policy distillation provides greater benefits for mathematical reasoning tasks, while off-policy distillation is more effective for general tasks such as human-preference alignment.
+ + * **RL phase.** We then advanced to a **multi-stage, on-policy reinforcement learning phase**. +This approach leverages **verifiable rewards** to enhance reasoning capability and a **preference reward model** to improve alignment, utilizing a carefully filtered blend of real-world and synthetic data calibrated for appropriate difficulty.


+ +# 3. Model Performance +For model performance comparison, we benchmark our model against recent reasoning LLMs from the Qwen3 series. +All models are evaluated under identical configurations to ensure fairness. +The results show that our model outperforms the baselines across a range of mainstream benchmarks, including **math, science, creative writing, tool use, and human preference alignment**. + +| Model | AIME24 | AIME25 | GPQA | Super-GPQA | Science-QA | Writing-Bench | BFCL-V4-Agentic | Arena-hard2 | +|----------------|--------|--------|------|------------|------------|--------------|----------------|-------------| +| Qwen3-8B-Thinking-2504 | 76.0 | 67.3 | 62.0 | 39.1 | 24.8 | 74.8 | 14.4 | 26.4 | +| Qwen3-14B-Thinking-2504 | 79.3 | 70.4 | 64.0 | 46.8 | 23.2 | 77.2 | 17.0 |40.5 | +| Qwen3-4B-Thinking-2507 | 83.3 | 81.3 | 67.2 | 46.7 | 24.4 | 84.3 | 14.3 | 37.7 | +| **Nanbeige4-3B-Thinking-2510** | **87.5** | **81.7** | **77.2** | **51.4** | **26.0** | **85.5** | **17.2** | **42.9** | + + +## 4. Quickstart + +For the chat scenario: +``` +from transformers import AutoModelForCausalLM, AutoTokenizer +tokenizer = AutoTokenizer.from_pretrained( + 'Nanbeige/Nanbeige4-3B-Thinking-2510', + use_fast=False, + trust_remote_code=True +) +model = AutoModelForCausalLM.from_pretrained( + 'Nanbeige/Nanbeige4-3B-Thinking-2510', + torch_dtype='auto', + device_map='auto', + trust_remote_code=True +) +messages = [ + {'role': 'user', 'content': 'Which number is bigger, 9.11 or 9.8?'} +] +prompt = tokenizer.apply_chat_template( + messages, + add_generation_prompt=True, + tokenize=False +) +input_ids = tokenizer(prompt, add_special_tokens=False, return_tensors='pt').input_ids +output_ids = model.generate(input_ids.to('cuda'), eos_token_id=166101) +resp = tokenizer.decode(output_ids[0][len(input_ids[0]):], skip_special_tokens=True) +print(resp) +``` + +For the tool use scenario: +``` +from transformers import AutoModelForCausalLM, AutoTokenizer +tokenizer = AutoTokenizer.from_pretrained( + 'Nanbeige/Nanbeige4-3B-Thinking-2510', + use_fast=False, + trust_remote_code=True +) +model = AutoModelForCausalLM.from_pretrained( + 'Nanbeige/Nanbeige4-3B-Thinking-2510', + torch_dtype='auto', + device_map='auto', + trust_remote_code=True +) +messages = [ + {'role': 'user', 'content': 'Help me check the weather in Beijing now'} +] +tools = [{'type': 'function', + 'function': {'name': 'SearchWeather', + 'description': 'Find out current weather in a certain place on a certain day.', + 'parameters': {'type': 'dict', + 'properties': {'location': {'type': 'string', + 'description': 'A city in china.'}, + 'required': ['location']}}}}] +prompt = tokenizer.apply_chat_template( + messages, + tools, + add_generation_prompt=True, + tokenize=False +) +input_ids = tokenizer(prompt, add_special_tokens=False, return_tensors='pt').input_ids +output_ids = model.generate(input_ids.to('cuda'), eos_token_id=166101) +resp = tokenizer.decode(output_ids[0][len(input_ids[0]):], skip_special_tokens=True) +print(resp) +``` + + +# 5. Limitations + +While we place great emphasis on the safety of the model during the training process, striving to ensure that its outputs align with ethical and legal requirements, it may not completely avoid generating unexpected outputs due to the model's size and probabilistic nature. These outputs may include harmful content such as bias or discrimination. Please don't propagate such content. We do not assume any responsibility for the consequences resulting from the dissemination of inappropriate information. +
+ +# 6. Citation +If you find our model useful or want to use it in your projects, please kindly cite this Huggingface project. +
+ +# 7. Contact +If you have any questions, please raise an issue or contact us at nanbeige@126.com. +
diff --git a/added_tokens.json b/added_tokens.json new file mode 100644 index 0000000..8805f6d --- /dev/null +++ b/added_tokens.json @@ -0,0 +1,9 @@ +{ + "": 166104, + "": 166106, + "": 166103, + "": 166105, + "<|endoftext|>": 166102, + "<|im_end|>": 166101, + "<|im_start|>": 166100 +} diff --git a/config.json b/config.json new file mode 100644 index 0000000..f45523c --- /dev/null +++ b/config.json @@ -0,0 +1,27 @@ +{ + "architectures": [ + "LlamaForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": 1, + "eos_token_id": 166101, + "hidden_act": "silu", + "hidden_size": 2560, + "initializer_range": 0.02, + "intermediate_size": 10496, + "max_position_embeddings": 65536, + "model_type": "llama", + "num_attention_heads": 20, + "num_hidden_layers": 32, + "num_key_value_heads": 4, + "pretraining_tp": 1, + "rms_norm_eps": 1e-05, + "rope_scaling": null, + "rope_theta": 5000000, + "tie_word_embeddings": false, + "torch_dtype": "bfloat16", + "transformers_version": "4.38.2", + "use_cache": true, + "vocab_size": 166144 +} diff --git a/figures/nbg.png b/figures/nbg.png new file mode 100644 index 0000000000000000000000000000000000000000..3466c5a7576bf8a142a80596cb73707fbc523d6c GIT binary patch literal 15639 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 literal 0 HcmV?d00001 diff --git a/figures/performance.png b/figures/performance.png new file mode 100644 index 0000000000000000000000000000000000000000..b77797b5ef2e36f4f6c35ccbae851bb4df01bce1 GIT binary patch literal 67296 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 zJefao", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + } + ], + "bos_token": "<|im_start|>", + "eos_token": "<|im_end|>", + "pad_token": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + }, + "unk_token": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + } +} diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..f23c3b2 --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d8f0326910136aca20831249220b38ce5299527647bc8c6b65404485c479740 +size 18451122 diff --git a/tokenizer.model b/tokenizer.model new file mode 100644 index 0000000..5dc56ce --- /dev/null +++ b/tokenizer.model @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb41d04798b714520a9b075727b0226538b7330254299062742c50ec8374bc36 +size 2782298 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..dcbfdb4 --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,103 @@ +{ + "add_bos_token": true, + "add_eos_token": false, + "add_prefix_space": true, + "added_tokens_decoder": { + "0": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false, + "special": true + }, + "1": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false, + "special": true + }, + "2": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false, + "special": true + }, + "166100": { + "content": "<|im_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "166101": { + "content": "<|im_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "166102": { + "content": "<|endoftext|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "166103": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false, + "special": false + }, + "166104": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false, + "special": false + }, + "166105": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false, + "special": false + }, + "166106": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false, + "special": false + } + }, + "additional_special_tokens": [ + "<|endoftext|>" + ], + "bos_token": "<|im_start|>", + "chat_template": "\n {%- if tools %}\n {{- '<|im_start|>system\n' }}\n {%- if messages[0].role == 'system' %}\n {{- messages[0].content + '\n\n' }}\n {%- else %} \n {{- '你是一位工具函数调用专家,你会得到一个问题和一组可能的工具函数。根据问题,你需要进行一个或多个函数/工具调用以实现目的,请尽量尝试探索通过工具解决问题。\n如果没有一个函数可以使用,请直接使用自然语言回复用户。\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 XML tags:\n\" }}\n {%- for tool in tools %}\n {{- \"\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\n\n\nFor each function call, return a json object with function name and arguments within XML tags:\n\n{\\\"name\\\": , \\\"arguments\\\": }\n<|im_end|>\n\" }}\n {%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }}\n {%- else %} \n {{- '<|im_start|>system\n你是南北阁,一款由BOSS直聘自主研发并训练的专业大语言模型。<|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 message.content is string and not(message.content.startswith('') and message.content.endswith('')) %}\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.content is string %}\n {%- set content = message.content %}\n {%- else %}\n {%- set content = '' %}\n {%- endif %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) %}\n {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is string %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '' in content %}\n {%- set reasoning_content = content.split('')[0].rstrip('\n').split('')[-1].lstrip('\n') %}\n {%- set content = content.split('')[-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\n' + reasoning_content.strip('\n') + '\n\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 {{- '\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' }}\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\n' }}\n {{- content }}\n {{- '\n' }}\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 {%- endif %}\n", + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "extra_special_tokens": {}, + "legacy": true, + "model_max_length": 1000000000000000019884624838656, + "pad_token": "", + "sp_model_kwargs": {}, + "spaces_between_special_tokens": false, + "tokenizer_class": "LlamaTokenizer", + "unk_token": "", + "use_default_system_prompt": false +}