验证假设:模型可以"内化"推理过程,不输出思维链但保持准确率
结论:小模型微调不够,需要大模型全训练
详见 ROADMAP.md
实验发现:
├── 小模型 (0.5B-1.1B) + LoRA → 能吐 token,但有 bug
├── Bug:位置不对、乱吐、逻辑错误
├── 根本原因:微调只能教新词,不能教思考方式
└── 解决方案:70B+ 全训练,需要 $200k 算力
当前状态:
├── 架构设计:✅ 完成(22 tokens, dual engine, thinking loop)
├── 数据 Pipeline:✅ 运行中(flywheel 继续积累数据)
├── 小模型训练:❌ 已证明不可行
└── 大模型训练:⏳ 等待算力(MI300X 集群)
- GPU: 3060Ti 8GB (使用 QLoRA 4-bit 量化)
- RAM: 16GB+
- Disk: ~5GB (模型 + 数据)
# 1. 创建环境
setup.bat
# 2. 激活环境
venv\Scripts\activate
# 3. 下载模型 (~2.2GB)
python download_model.py
# 4. 下载数据
python download_data.py
# 5. 训练 (选一个)
python train_implicit_cot.py --type implicit --steps 500
python train_implicit_cot.py --type explicit --steps 500
python train_implicit_cot.py --type pause --steps 500
# 6. 评估
python train_implicit_cot.py --mode eval --type implicit如果你遇到 NumPy 2.x / torch 的 ABI 警告或不稳定(例如 _ARRAY_API not found),直接重跑 setup.bat 或在 venv 里执行:
pip install --upgrade --force-reinstall "numpy==1.26.4"- 新增
gpu_utils.py(来源:D:\ocr\OCR_Tools)自动读取nvidia-smi,按可用显存计算 batch / grad_accum / 精度并自动设置PYTORCH_CUDA_ALLOC_CONF。 train_implicit_cot.py与train_qwen_lora.py支持--auto-gpu/--no-auto-gpu、--safety-factor(显存使用比例)与--max-batch,默认针对 8GB VRAM 自动开启梯度检查点与 bfloat16/float16。setup.bat优先复用 OCR_Tools 的 Python 3.10 以避免 torch/bitsandbytes 兼容性问题;Torch 仅在缺失时下载,避免重复拉取大文件。
批量打标/生成数据时,推荐走本地 titan-unified-client Gateway(OpenAI 兼容 POST /v1/chat/completions),避免 spawn 多个 Node CLI 带来的内存开销:见 README_GATEWAY.md。
快速入口(Windows):
- 100 条快速回归:
test_100_fast.bat/test_100_multimodel.bat - 一键运行手册:
RUNBOOK.md - 断点分批/并行:
BATCH_GUIDE.md - 模型名对齐:
docs/GATEWAY_MODELS.md
建议开 2 个终端(或用一键脚本):
# 终端 A:跑数据飞轮(调用本地 gateway 并发打标,RAM 自适应并发)
python flywheel.py --gateway http://127.0.0.1:8081 --samples 0 --concurrency 128 --min-concurrency 4 --http-limit 512
# 终端 B:训练/benchmark 触发器(每 N 条 validated 自动训练 + 跑 GSM8K benchmark)
python flywheel_train_loop.py --train-every 2000 --patience 3 --benchmark-samples 200
# 便宜默认模型池(不指定时默认:flash/haiku/gpt-4o-mini)
# 深度抽检:批量抽样(默认每 100 条抽 25 条,用 slice-checker 评估整批,阈值 0.8)
# 需要关闭深度抽检可加:--no-slice-check
python flywheel.py --slice-batch-size 100 --slice-sample-size 25 --slice-pass-threshold 0.8一键启动(可选:同时启动 gateway):
python sync_start.py --start-gateway --gac --gac-claude-creds D:\path\to\captured_user_ids.json| 实验 | 训练目标 | 输出格式 | 假设 |
|---|---|---|---|
| explicit | 输出完整思维链 | 步骤1... 步骤2... 答案是 X |
Baseline: 传统 CoT |
| implicit | 只输出答案 | 答案是 X |
模型内化推理 |
| pause | Pause Token + 答案 | <pause><pause>答案是 X |
强制内部计算 |
如果 implicit/pause 模型的准确率接近 explicit 模型:
→ 证明推理可以被"内化"
→ Token 消耗大幅降低,智能不变
如果 implicit/pause 模型准确率明显低于 explicit:
→ 显式推理对当前模型仍然必要
→ 需要更复杂的蒸馏方法
- Accuracy: GSM8K 测试集正确率
- Token Efficiency: 平均输出 token 数
- Trade-off: Accuracy / Token 比值
implicit_cot/
├── requirements.txt # 依赖
├── setup.bat # 一键环境配置
├── download_model.py # 下载 TinyLlama
├── download_data.py # 下载 GSM8K
├── train_implicit_cot.py # 核心训练脚本
├── models/ # 模型存放
│ └── tinyllama-1.1b/
├── data/ # 数据存放
│ ├── gsm8k_train.jsonl
│ └── gsm8k_test.jsonl
└── outputs/ # 训练输出
├── tinyllama-explicit-cot/
├── tinyllama-implicit-cot/
└── tinyllama-pause-cot/
基于文献,预测结果:
| 模型 | 准确率 | 输出 Tokens | 备注 |
|---|---|---|---|
| TinyLlama (zero-shot) | ~5-10% | 50-100 | 1.1B 太小,GSM8K 难 |
| + Explicit CoT | ~15-25% | 100-200 | CoT 提升明显 |
| + Implicit CoT | ~10-20% | 10-20 | Token 降 10x,准确率略降 |
| + Pause Tokens | ~12-22% | 15-25 | Pause 弥补部分差距 |
如果 Implicit ≈ Explicit:证明假设成立,TITAN 可以优化 prompt 触发内部推理
如果实验成功:
- 扩展到更大模型 (Phi-3-mini 3.8B)
- 尝试 Teacher-Student 蒸馏
- 设计 TITAN 的 "Internal Thinking" prompt 策略
Experiment designed for TITAN AGI Context Research 2026-01-04