commit 1294cbf1d21e306dd6b71de986850b41f4c56396 Author: ModelHub XC Date: Tue Aug 25 09:39:15 2026 +0800 初始化项目,由ModelHub XC社区提供模型 Model: sugiken/Ordis-1.5B-V355-VarGH Source: Original Platform diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..e847241 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,55 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bin.* filter=lfs diff=lfs merge=lfs -text +*.bz2 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 +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack 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 +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +saved_model/**/* 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 +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zstandard filter=lfs diff=lfs merge=lfs -text +*.tfevents* filter=lfs diff=lfs merge=lfs -text +*.db* filter=lfs diff=lfs merge=lfs -text +*.ark* filter=lfs diff=lfs merge=lfs -text +**/*ckpt*data* filter=lfs diff=lfs merge=lfs -text +**/*ckpt*.meta filter=lfs diff=lfs merge=lfs -text +**/*ckpt*.index filter=lfs diff=lfs merge=lfs -text + +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.gguf* filter=lfs diff=lfs merge=lfs -text +*.ggml filter=lfs diff=lfs merge=lfs -text +*.llamafile* filter=lfs diff=lfs merge=lfs -text +*.pt2 filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text + +merges.txt filter=lfs diff=lfs merge=lfs -text + +model.safetensors filter=lfs diff=lfs merge=lfs -text + +tokenizer.json filter=lfs diff=lfs merge=lfs -text + +vocab.json filter=lfs diff=lfs merge=lfs -text \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..5a2b223 --- /dev/null +++ b/README.md @@ -0,0 +1,141 @@ +--- +license: apache-2.0 +language: + - zh + - en +base_model: Qwen/Qwen2.5-1.5B-Instruct +tags: + - anti-hallucination + - causal-reasoning + - chinese + - text-generation + - lora +pipeline_tag: text-generation +--- + +# Ordis-1.5B-V355-VarGH + +基于 Qwen2.5-1.5B-Instruct 的微调模型,使用 LoRA + 4阶段递进训练 (PIT) 方法,经历 16+ 组控制变量实验。专注于**实用能力**:反幻觉、诚实拒答("我不知道")、结构化推理。 + +> [官网](https://ordisai.com) | [GGUF 量化版](https://modelscope.cn/models/sugiken/Ordis-1.5B-V355-VarGH-GGUF) | [HuggingFace](https://huggingface.co/sugiken/Ordis-1.5B-V355-VarGH) + +--- + +## 标准评测 + +**评测条件**: lm-eval v0.4.10, 0-shot, A100-80GB,两个模型使用完全相同的评测设置。 + +微调引入了轻微的**对齐税** — 大部分标准评测分数略低于基座模型。这是预期内的结果:模型获得了反幻觉、结构化推理和诚实拒答能力,消耗了部分 1.5B 参数容量。唯一的例外是 TruthfulQA (+1.02%),反幻觉训练直接提升了真实性分数。 + +| 评测 | Ordis 1.5B | 基座 Qwen2.5-1.5B | 差值 | +|------|-----------|-------------------|------| +| TruthfulQA MC2 | **47.73%** | 46.71% | **+1.02** | +| GPQA | 27.90% | 28.35% | -0.45 | +| HellaSwag | 68.14% | 68.22% | -0.08 | +| ARC-Challenge | 45.22% | 46.84% | -1.62 | +| MMLU | 57.93% | 60.15% | -2.22 | +| GSM8K (CoT) | 50.80% | — | 不可直接对比* | +| AIME 2024 | 0% | 0% | — | + +*GSM8K 使用文本生成模式,对 chat template 配置敏感,不直接可比。AIME 超出 1.5B 模型能力范围,如实报告零分。 + +**Ordis 与基座模型的差异**在于标准评测无法衡量的实用能力:结构化自纠错、三层认知(诚实说"我不知道")、因果推理。 + +--- + +## CLadder 因果推理 + +CLadder 是基于 Judea Pearl 因果阶梯的学术评测(300题,3个层级)。[论文](https://arxiv.org/abs/2312.04350) + +| 层级 | 含义 | 得分 | +|------|------|------| +| Rung 1 (关联) | 统计相关 | 46.0% (40/87) | +| Rung 2 (干预) | 主动干预 | 50.6% (45/89) | +| Rung 3 (反事实) | "如果不同" | 62.9% (78/124) | +| **总分** | | **54.33% (163/300)** | + +参考:CLadder 论文报告 LLaMA-6.7B 约 50%,GPT-3.5 约 55-60%。 + +--- + + +## BigBench CRASS AI & 因果判断 + +由社区成员独立测试。BigBench CRASS AI(反事实场景推理)测试模型对假设性场景的推理能力。 + +| 评测 | Shot | Ordis 1.5B | 基座 Qwen2.5-1.5B | 差值 | +|------|------|-----------|-------------------|------| +| **CRASS AI** | **0** | **34.09%** | **52.27%** | **-18.18pp** | +| CRASS AI | 25 | 81.82% | 88.64% | -6.82pp | +| 因果判断 | 0 | 47.89% | 50.00% | -2.11pp | +| 因果判断 | 25 | 55.79% | 53.68% | +2.11pp | + +**关键发现**:CRASS AI 0-shot 出现显著的 -18.18pp 回退。这是对齐税在反事实推理维度的体现——反幻觉训练使模型在假设性场景下变得保守。25-shot 下差距缩小到 -6.82pp,说明能力仍在但 0-shot 默认行为已改变。 + +## 自定义评测 + +| 评测 | 得分 | +|------|------| +| 60题评测 (6个维度) | 85.0% (51/60) | +| 124分综合评测 | 75.4% (86/114) | + +**60题维度拆分:** + +| 维度 | 得分 | +|------|------| +| 推理 | 100% | +| 常识 | 100% | +| 防御过载 | 100% | +| 反幻觉 | 90% | +| 身份 | 60% | +| IDK能力 | 60% | + +--- + +## 核心能力 + +- **反幻觉**:基于推理的不确定性判断,而非安全模板 +- **三层认知**:知道什么/不知道什么/先评估再决定 +- **结构化自纠错**:承认→归因→修正→验证 +- **因果推理**:跨领域因果结构迁移 + +--- + +## 已知局限 + +- **对齐税**:标准评测分数略低于基座模型;CRASS AI 反事实推理 0-shot -18.18pp(见上表) +- **反灌输不足**:无法抵抗持续的虚假记忆注入(开环系统限制) +- **中等置信度不稳定**:1.5B 容量上限导致边界场景不确定 +- **英文身份泄漏**:基座模型先验偶尔浮现 +- **专有名词幻觉**:1.5B 参数记忆有限 + +--- + +## 使用方法 + +本仓库包含 LoRA adapter 权重: + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer +from peft import PeftModel + +base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-1.5B-Instruct") +model = PeftModel.from_pretrained(base_model, "sugiken/Ordis-1.5B-V355-VarGH") +tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-1.5B-Instruct") +``` + +推荐使用 [GGUF 量化版](https://modelscope.cn/models/sugiken/Ordis-1.5B-V355-VarGH-GGUF) 部署。 + +--- + +## 模型信息 + +| 属性 | 值 | +|------|-----| +| 基座模型 | Qwen/Qwen2.5-1.5B-Instruct | +| 参数量 | 1.5B | +| 微调方法 | LoRA (r=32, alpha=64) | +| 训练方法 | 4阶段PIT (递进身份训练) | +| 上下文 | 32K (基座), 训练时 2048 | +| 语言 | 中文 (主要), 英文 | +| 许可证 | Apache 2.0 | diff --git a/added_tokens.json b/added_tokens.json new file mode 100644 index 0000000..482ced4 --- /dev/null +++ b/added_tokens.json @@ -0,0 +1,24 @@ +{ + "": 151658, + "": 151657, + "<|box_end|>": 151649, + "<|box_start|>": 151648, + "<|endoftext|>": 151643, + "<|file_sep|>": 151664, + "<|fim_middle|>": 151660, + "<|fim_pad|>": 151662, + "<|fim_prefix|>": 151659, + "<|fim_suffix|>": 151661, + "<|im_end|>": 151645, + "<|im_start|>": 151644, + "<|image_pad|>": 151655, + "<|object_ref_end|>": 151647, + "<|object_ref_start|>": 151646, + "<|quad_end|>": 151651, + "<|quad_start|>": 151650, + "<|repo_name|>": 151663, + "<|video_pad|>": 151656, + "<|vision_end|>": 151653, + "<|vision_pad|>": 151654, + "<|vision_start|>": 151652 +} diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..bdf7919 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,54 @@ +{%- if tools %} + {{- '<|im_start|>system\n' }} + {%- if messages[0]['role'] == 'system' %} + {{- messages[0]['content'] }} + {%- else %} + {{- 'You are Qwen, created by Alibaba Cloud. You are a helpful assistant.' }} + {%- endif %} + {{- "\n\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" }} + {%- for tool in tools %} + {{- "\n" }} + {{- tool | tojson }} + {%- endfor %} + {{- "\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" }} +{%- else %} + {%- if messages[0]['role'] == 'system' %} + {{- '<|im_start|>system\n' + messages[0]['content'] + '<|im_end|>\n' }} + {%- else %} + {{- '<|im_start|>system\nYou are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n' }} + {%- endif %} +{%- endif %} +{%- for message in messages %} + {%- if (message.role == "user") or (message.role == "system" and not loop.first) or (message.role == "assistant" and not message.tool_calls) %} + {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }} + {%- elif message.role == "assistant" %} + {{- '<|im_start|>' + message.role }} + {%- if message.content %} + {{- '\n' + message.content }} + {%- endif %} + {%- for tool_call in message.tool_calls %} + {%- if tool_call.function is defined %} + {%- set tool_call = tool_call.function %} + {%- endif %} + {{- '\n\n{"name": "' }} + {{- tool_call.name }} + {{- '", "arguments": ' }} + {{- tool_call.arguments | tojson }} + {{- '}\n' }} + {%- endfor %} + {{- '<|im_end|>\n' }} + {%- elif message.role == "tool" %} + {%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != "tool") %} + {{- '<|im_start|>user' }} + {%- endif %} + {{- '\n\n' }} + {{- message.content }} + {{- '\n' }} + {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %} + {{- '<|im_end|>\n' }} + {%- endif %} + {%- endif %} +{%- endfor %} +{%- if add_generation_prompt %} + {{- '<|im_start|>assistant\n' }} +{%- endif %} diff --git a/config.json b/config.json new file mode 100644 index 0000000..dfe17c9 --- /dev/null +++ b/config.json @@ -0,0 +1,58 @@ +{ + "architectures": [ + "Qwen2ForCausalLM" + ], + "attention_dropout": 0.0, + "bos_token_id": 151643, + "dtype": "float16", + "eos_token_id": 151645, + "hidden_act": "silu", + "hidden_size": 1536, + "initializer_range": 0.02, + "intermediate_size": 8960, + "layer_types": [ + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention" + ], + "max_position_embeddings": 32768, + "max_window_layers": 21, + "model_type": "qwen2", + "num_attention_heads": 12, + "num_hidden_layers": 28, + "num_key_value_heads": 2, + "rms_norm_eps": 1e-06, + "rope_scaling": null, + "rope_theta": 1000000.0, + "sliding_window": null, + "tie_word_embeddings": true, + "transformers_version": "4.57.6", + "use_cache": true, + "use_sliding_window": false, + "vocab_size": 151936 +} diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..7f58285 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,14 @@ +{ + "bos_token_id": 151643, + "do_sample": true, + "eos_token_id": [ + 151645, + 151643 + ], + "pad_token_id": 151643, + "repetition_penalty": 1.1, + "temperature": 0.7, + "top_k": 20, + "top_p": 0.8, + "transformers_version": "4.57.6" +} diff --git a/merges.txt b/merges.txt new file mode 100644 index 0000000..80c1a19 --- /dev/null +++ b/merges.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8831e4f1a044471340f7c0a83d7bd71306a5b867e95fd870f74d0c5308a904d5 +size 1671853 diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..1f5ccf9 --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a404b935bf76bf164024271bfe461539c06709ca6c775d40f86327fedb196671 +size 3087466808 diff --git a/special_tokens_map.json b/special_tokens_map.json new file mode 100644 index 0000000..ac23c0a --- /dev/null +++ b/special_tokens_map.json @@ -0,0 +1,31 @@ +{ + "additional_special_tokens": [ + "<|im_start|>", + "<|im_end|>", + "<|object_ref_start|>", + "<|object_ref_end|>", + "<|box_start|>", + "<|box_end|>", + "<|quad_start|>", + "<|quad_end|>", + "<|vision_start|>", + "<|vision_end|>", + "<|vision_pad|>", + "<|image_pad|>", + "<|video_pad|>" + ], + "eos_token": { + "content": "<|im_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "pad_token": { + "content": "<|endoftext|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + } +} diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..017ef63 --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64e435abf9ee8a41ec7ec574a5fa95ee45edeef2e0146c8770df547ed752ebea +size 11421993 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..9eab271 --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,211 @@ +{ + "add_bos_token": false, + "add_prefix_space": false, + "added_tokens_decoder": { + "151643": { + "content": "<|endoftext|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151644": { + "content": "<|im_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151645": { + "content": "<|im_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151646": { + "content": "<|object_ref_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151647": { + "content": "<|object_ref_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151648": { + "content": "<|box_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151649": { + "content": "<|box_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151650": { + "content": "<|quad_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151651": { + "content": "<|quad_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151652": { + "content": "<|vision_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151653": { + "content": "<|vision_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151654": { + "content": "<|vision_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151655": { + "content": "<|image_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151656": { + "content": "<|video_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151657": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151658": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151659": { + "content": "<|fim_prefix|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151660": { + "content": "<|fim_middle|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151661": { + "content": "<|fim_suffix|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151662": { + "content": "<|fim_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151663": { + "content": "<|repo_name|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151664": { + "content": "<|file_sep|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + } + }, + "additional_special_tokens": [ + "<|im_start|>", + "<|im_end|>", + "<|object_ref_start|>", + "<|object_ref_end|>", + "<|box_start|>", + "<|box_end|>", + "<|quad_start|>", + "<|quad_end|>", + "<|vision_start|>", + "<|vision_end|>", + "<|vision_pad|>", + "<|image_pad|>", + "<|video_pad|>" + ], + "bos_token": null, + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "errors": "replace", + "extra_special_tokens": {}, + "max_length": 512, + "model_max_length": 131072, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "stride": 0, + "tokenizer_class": "Qwen2Tokenizer", + "truncation_side": "left", + "truncation_strategy": "longest_first", + "unk_token": null +} diff --git a/vocab.json b/vocab.json new file mode 100644 index 0000000..6c49fc6 --- /dev/null +++ b/vocab.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca10d7e9fb3ed18575dd1e277a2579c16d108e32f27439684afa0e10b1440910 +size 2776833