fusion-llm-demo / README.md
zhan1206
fix: comprehensive audit fixes - Thinking Dial unification, deployment scripts, README, bilingual filter, data download
bce487e
|
Raw
History Blame
6.63 kB

Fusion - 六边形开源大模型

集百家之长,铸六边形开源大模型

License: Apache 2.0 Python 3.8+ PyTorch

项目简介

Fusion 是一套面向纯本地训练与推理的开源大语言模型方案。它不只交付模型权重,更交付一整套可在消费级硬件上自行定制、微调、甚至复现预训练的全链路工具。

核心理念:用户主权 - 所有训练数据清洗、模型微调、推理部署均在本地完成,无需依赖任何云端服务。

核心特性

滑动分块潜注意力(SBLA)

  • 长序列切为定长块,块内高秩潜空间 + 块间极低秩潜向量
  • 支持 32K 上下文窗口,KV 缓存为传统 GQA 的 1/8(理论值,待大规模训练验证)
  • SBLA micro-benchmark 显示 4.2x 注意力加速(基于 mini 配置,非生产规模)
  • 在 24 GB 显卡上即可对 14B 模型进行长文档微调与推理(14B 配置模板已提供,权重需自行训练)
  • ⚠️ 以上性能数据基于小规模实验验证,0.5B+ 模型的实际性能待训练后确认

动态推理强度调节器(Thinking Dial)

  • 通过 thinking_depth(0-3)在架构层面控制推理深度
  • 0:直接作答(闲聊、翻译)
  • 3:长思维链模式(数学、代码调试)
  • 使用 thinking_embedding + thinking_gate 实现 logits 级别的深度偏置
  • 一个模型同时拥有快响应与深推理

双母语独立训练(规划中)

  • 目标:中文达到 Qwen 同等深度,英文自然度对标 LLaMA 3.1
  • 根除"翻译腔",中英独立文化人格
  • 当前状态:双语过滤架构已就绪(data_pipeline/bilingual_filter.py),尚需大规模双语训练数据与实际训练产物

教科书级知识蒸馏(T-KD)

  • 使用开源教师模型改写高信誉源
  • 生成风格统一、论证清晰的教学文本
  • 注意:T-KD 为可选增强路径,需外部教师模型权重。核心训练流程(SBLA + Thinking Dial + GRPO)不依赖蒸馏,支持冷启动

项目状态

组件 状态 说明
SBLA 注意力 ✅ 已实现 micro-benchmark 验证通过,4.2x 加速
Thinking Dial ✅ 已实现 thinking_embedding + gate,GRPO 训练
KV Cache ✅ 已实现 增量推理、GQA 支持
预训练权重 ⏳ 待训练 需 GB 级语料 + GPU
大规模验证 ⏳ 待完成 需 0.5B+ 模型训练
部署导出 ✅ 脚本就绪 GGUF/ONNX/TensorRT 脚本可用
评估框架 ✅ 已实现 BLEU/ROUGE/METEOR/BERTScore

快速开始

硬件要求

模型版本 全参微调 QLoRA 微调 推理(量化)
Fusion-0.5B 8 GB - CPU
Fusion-1.5B 16 GB 8 GB 4 GB
Fusion-8B 24 GB 8 GB 8 GB
Fusion-14B 48 GB 16 GB 16 GB

安装依赖

git clone https://github.com/zhan1206/fusion-llm.git
cd fusion-llm
pip install -r requirements.txt

Mini 模型快速训练

Mini 模型是一个小型字符级模型,用于快速验证训练流程,无需 GPU。

python train/train_mini.py

训练产物保存在 output/mini_model/

LoRA 微调(需要 GPU)

python train/lora_finetune.py --model_size 8B

全参微调(需要 GPU)

python train/full_finetune.py --model_size 8B

推理

from models.fusion_model import FusionModel, FusionConfig

config = FusionConfig(vocab_size=10000, hidden_size=256, num_hidden_layers=2)
model = FusionModel(config)
model.eval()

# 基础推理
input_ids = torch.tensor([[1, 2, 3]])  # 替换为实际 token IDs
with torch.no_grad():
    outputs = model(input_ids)

或使用推理控制板:

python inference/dashboard.py

项目结构

fusion-llm/
├── models/              # 模型架构(SBLA注意力、Thinking Dial、FusionModel)
├── train/               # 训练脚本(LoRA微调、全参微调、DPO对齐、Mini模型)
├── data_pipeline/       # 数据处理(双语过滤、T-KD蒸馏)
├── inference/           # 推理部署(Dashboard、DyQuant量化、Ollama)
├── tokenizers/          # SentencePiece tokenizer 模型文件
├── configs/             # 配置文件模板(0.5B/1.5B/8B/14B/mini)
├── scripts/             # 工具脚本(tokenizer训练、数据去重)
├── tests/               # 单元测试
└── requirements.txt     # Python 依赖

核心技术

1. SBLA 注意力机制

# models/sbla_attention.py
class SlidingBlockLatentAttention(nn.Module):
    """
    滑动分块潜注意力
    - 块内:高秩潜空间(保留细节)
    - 块间:极低秩潜向量(传递上下文)
    """

2. Thinking Dial 控制

# 训练时标注 think_rank
{"text": "证明勾股定理", "think_rank": 3}

# 推理时通过 ThinkingDialProcessor 注入 thinking depth token

3. SentencePiece Tokenizer

项目使用 SentencePiece 训练专用 tokenizer,支持中英双语和 Fusion 特殊 token:

# 用自定义语料训练 tokenizer
python scripts/train_tokenizer.py --input data/tokenizer_train.txt --vocab_size 100000 --output tokenizers/

# 用内置 sample data 快速测试
python scripts/train_tokenizer.py --create_sample_data --input data/tokenizer_train.txt
python scripts/train_tokenizer.py --input data/tokenizer_train.txt --vocab_size 500 --output tokenizers/

许可证

本项目采用 Apache License 2.0 - 详见 LICENSE

  • 可商用
  • 可修改
  • 可私有部署
  • 无附加条款

致谢

Fusion 项目受到以下开源项目的启发:

联系方式


Fusion 是一场回归用户主权的运动。你不必依赖我们提供的权重,也不必上传任何隐私数据。你手中的代码和算力,足以锻造属于你自己的最强模型。