fusion-llm-demo / README.md
zhan1206
fix: v5 remove empty tokenizer.json, unify think tokens, integrate tokenizer into training pipeline
bae07a4
|
Raw
History Blame
5.41 kB

Fusion - 六边形开源大模型

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

License: Apache 2.0 Python 3.8+ PyTorch

项目简介

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

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

核心特性

滑动分块潜注意力(SBLA)

  • 长序列切为定长块,块内高秩潜空间 + 块间极低秩潜向量
  • 支持 32K 上下文窗口,KV 缓存仅为传统 GQA 的 1/8(SBLA 架构可扩展至 256K)
  • 在 24 GB 显卡上即可对 14B 模型进行长文档微调与推理

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

  • 通过 think_rank(0-3)控制推理深度
  • 0:直接作答(闲聊、翻译)
  • 3:长思维链模式(数学、代码调试)
  • 一个模型同时拥有快响应与深推理

双母语独立训练

  • 中文达到 Qwen 同等深度,英文自然度对标 LLaMA 3.1
  • 根除"翻译腔",中英独立文化人格

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

  • 使用开源教师模型改写高信誉源
  • 生成风格统一、论证清晰的教学文本

快速开始

硬件要求

模型版本 全参微调 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 是一场回归用户主权的运动。你不必依赖我们提供的权重,也不必上传任何隐私数据。你手中的代码和算力,足以锻造属于你自己的最强模型。