Spaces:
Running
Running
zhan1206
fix: comprehensive audit fixes - Thinking Dial unification, deployment scripts, README, bilingual filter, data download
bce487e | # Fusion - 六边形开源大模型 | |
| **集百家之长,铸六边形开源大模型** | |
| [](LICENSE) | |
| []() | |
| []() | |
| ## 项目简介 | |
| 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 | | |
| ### 安装依赖 | |
| ```bash | |
| git clone https://github.com/zhan1206/fusion-llm.git | |
| cd fusion-llm | |
| pip install -r requirements.txt | |
| ``` | |
| ### Mini 模型快速训练 | |
| Mini 模型是一个小型字符级模型,用于快速验证训练流程,无需 GPU。 | |
| ```bash | |
| python train/train_mini.py | |
| ``` | |
| 训练产物保存在 `output/mini_model/`。 | |
| ### LoRA 微调(需要 GPU) | |
| ```bash | |
| python train/lora_finetune.py --model_size 8B | |
| ``` | |
| ### 全参微调(需要 GPU) | |
| ```bash | |
| python train/full_finetune.py --model_size 8B | |
| ``` | |
| ### 推理 | |
| ```python | |
| 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) | |
| ``` | |
| 或使用推理控制板: | |
| ```bash | |
| 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 注意力机制 | |
| ```python | |
| # models/sbla_attention.py | |
| class SlidingBlockLatentAttention(nn.Module): | |
| """ | |
| 滑动分块潜注意力 | |
| - 块内:高秩潜空间(保留细节) | |
| - 块间:极低秩潜向量(传递上下文) | |
| """ | |
| ``` | |
| ### 2. Thinking Dial 控制 | |
| ```python | |
| # 训练时标注 think_rank | |
| {"text": "证明勾股定理", "think_rank": 3} | |
| # 推理时通过 ThinkingDialProcessor 注入 thinking depth token | |
| ``` | |
| ### 3. SentencePiece Tokenizer | |
| 项目使用 SentencePiece 训练专用 tokenizer,支持中英双语和 Fusion 特殊 token: | |
| ```bash | |
| # 用自定义语料训练 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](LICENSE) | |
| - 可商用 | |
| - 可修改 | |
| - 可私有部署 | |
| - 无附加条款 | |
| ## 致谢 | |
| Fusion 项目受到以下开源项目的启发: | |
| - [DeepSeek](https://github.com/deepseek-ai) - MLA 注意力机制 | |
| - [LLaMA](https://github.com/meta-llama/llama) - 基础 Transformer 架构 | |
| - [Qwen](https://github.com/QwenLM/Qwen) - 中文能力标杆 | |
| - [Transformers](https://github.com/huggingface/transformers) - 训练框架 | |
| - [DeepSpeed](https://github.com/microsoft/DeepSpeed) - 分布式训练 | |
| ## 联系方式 | |
| - 项目作者:zhan1206 | |
| - GitHub:[@zhan1206](https://github.com/zhan1206) | |
| - 问题反馈:[Issues](https://github.com/zhan1206/fusion-llm/issues) | |
| --- | |
| **Fusion 是一场回归用户主权的运动。你不必依赖我们提供的权重,也不必上传任何隐私数据。你手中的代码和算力,足以锻造属于你自己的最强模型。** | |