--- base_model: unsloth/Qwen3.5-4B library_name: peft pipeline_tag: text-generation tags: - qwen - qlora - lora - chain-of-thought - reasoning - gsm8k - gguf - unsloth language: - zh - en license: mit --- # Qwen3.5-4B × Claude Opus 思维链微调模型 基于 Qwen3.5-4B 的 QLoRA/LoRA 全模块微调模型,注入 Claude Opus 4.6 的思维链(Chain-of-Thought)推理能力。**单张 24GB 显卡即可训练。** ## 模型描述 本仓库包含三种格式: | 格式 | 说明 | 大小 | |------|------|------| | **LoRA 权重 (PEFT)** | 可直接加载推理,合并回基础模型使用 | ~170 MB | | **GGUF Q4_K_M** | 4-bit 量化,llama.cpp / Ollama 部署推荐 | ~2.6 GB | | **GGUF Q8_0** | 8-bit 量化,高质量推理 | ~4.2 GB | ## 训练配置 | 配置项 | 参数 | |--------|------| | 基础模型 | Qwen3.5-4B | | LoRA 目标模块 | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj | | LoRA r / alpha | 32 / 64 | | 最大序列长度 | 16,384 | | 批次大小 | 12 | | 学习率 | 2e-4(余弦退火) | | 训练轮数 | 2 epoch | | 总步数 | 1,606 | | 优化器 | adamw_8bit | | 量化加载 | 4-bit NF4 | ## 训练结果 | 指标 | 值 | |------|------| | 初始 Loss | 1.0738 | | 最终 Loss | 0.3505 | | 最低 Loss | 0.2501 | | Loss 下降 | 81.5% | | 平均 Loss | 0.5395 | ## 评测结果:GSM8K 使用 `lm-eval` 在 GSM8K 测试集(1,319 题)上对比基线模型与 LoRA 微调模型,5-shot 评测。 ### 总体指标 | 模型 | 空响应 | 思考过程 | strict-match | flexible-extract | 校准宽松 | |------|--------|---------|-------------|-----------------|----------| | Qwen3.5-4B 基线 | 29.9% | 0% | 67.93% | 68.01% | 60.73% | | **LoRA 微调后** | **0%** | **95.8%** | 46.17% | **84.08%** | **77.86%** | > **评分标准:** > - **strict-match**:要求模型末尾输出 `#### 答案`,严格格式匹配 > - **flexible-extract**:自动从回复中提取数值答案 > - **校准宽松**:答案数字出现在推理过程中且不在题目原文中(排除假阳性) ### 关键发现 - **LoRA 模型 100% 响应率**,稳定输出推理链(95.8% 含思考过程) - **校准宽松评分 77.86%**(1027/1319),整体数学能力远超基线 - **基线 29.9% 不回答**,LoRA 完全解决该问题 - **主要短板**:格式输出不规范——flexible-extract 84% vs strict 46%,大量题目算对但未按 `####` 格式收尾 **评测命令:** ```bash lm_eval --model local-chat-completions \ --tasks gsm8k \ --model_args "model=qwen_cot,base_url=http://127.0.0.1:5003/v1/chat/completions,api_key=sk-fake,tokenized_requests=False,num_concurrent=8,max_length=16384,max_gen_toks=4096" \ --apply_chat_template \ --num_fewshot 5 \ --log_samples \ --output_path eval_results/lora_gsm8k_test_full ``` ## 使用方式 ### 方式一:LoRA 加载推理 ```python from transformers import AutoModelForCausalLM, AutoTokenizer from peft import PeftModel model_name = "unsloth/Qwen3.5-4B" tokenizer = AutoTokenizer.from_pretrained(model_name) base_model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype="auto", device_map="auto" ) model = PeftModel.from_pretrained(base_model, "mahahahug/qwen3.5-4b-opus46-cot") messages = [{"role": "user", "content": "小明有15个苹果,给了小红40%,还剩几个?请一步步思考。"}] text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) inputs = tokenizer(text, return_tensors="pt").to(model.device) output = model.generate(**inputs, max_new_tokens=2048) print(tokenizer.decode(output[0], skip_special_tokens=True)) ``` ### 方式二:llama.cpp API Server ```bash llama-server \ -ngl 1000 \ --host 0.0.0.0 --port 5003 \ --flash-attn on \ --cache-type-k q4_0 --cache-type-v q4_0 \ -c 15999 \ --repeat-penalty 1.0 \ --presence-penalty 1.5 \ --min-p 0.02 \ --top-k 30 --top-p 0.9 --temp 0.85 \ --reasoning on \ --no-mmap \ --chat-template chatml \ -m qwen3.5-4b-opus46-cot-Q4_K_M.gguf ``` 启动后可通过 `http://localhost:5003/v1/chat/completions` 调用,兼容 OpenAI API。 ### 方式三:Ollama ```bash cat > Modelfile << 'EOF' FROM ./qwen3.5-4b-opus46-cot-Q4_K_M.gguf PARAMETER temperature 0.85 PARAMETER top_k 30 PARAMETER top_p 0.9 PARAMETER min_p 0.02 PARAMETER num_ctx 16000 SYSTEM You are a helpful AI assistant that always thinks step-by-step. 请用中文回复。 EOF ollama create qwen3.5-opus-cot -f Modelfile ollama run qwen3.5-opus-cot ``` ### 方式四:llama-cli 命令行 ```bash ./llama-cli -m qwen3.5-4b-opus46-cot-Q4_K_M.gguf \ -ngl 1000 --flash-attn on -c 15999 \ --reasoning on --temp 0.85 --top-k 30 --top-p 0.9 --min-p 0.02 \ --chat-template chatml \ -p "一只农场有14只羊,除了8只都死了,还剩几只?请一步步思考。" \ -n 2048 ``` ## 数据集 使用 [Claude Opus 4.6 推理数据集](https://huggingface.co/datasets/Roman1111111/claude-opus-4.6-10000x),包含约 10,000 条 Claude Opus 4.6 的推理对话数据。训练时自动将 `reasoning` 字段注入 `<|begin_of_think|>` / `<|end_of_think|>` 标签,同时过滤超长样本。 ## 模型地址 | 平台 | 仓库 | 内容 | |------|------|------| | **HuggingFace** | [mahahahug/qwen3.5-4b-opus46-cot](https://huggingface.co/mahahahug/qwen3.5-4b-opus46-cot) | 本仓库(LoRA + GGUF) | | **ModelScope** | [oooooo0o/qwen3.5-4b-opus46-cot](https://www.modelscope.cn/models/oooooo0o/qwen3.5-4b-opus46-cot) | LoRA + GGUF Q4_K_M + GGUF Q8_0 | | **GitHub** | [Pyzmxu/qwen3.5_4b_opus](https://github.com/Pyzmxu/qwen3.5_4b_opus) | 训练代码(Unsloth + LoRA) | ## License MIT