加载中...

SudenMind

基于 AttnRes 架构的中文对话生成模型

核心特性

SudenMind 采用创新的 AttnRes 架构,为中文对话场景提供卓越性能

AttnRes 架构

每层可动态关注之前所有层的输出,信息流动更丰富

自定义 Encoder-Decoder

2层AttnRes编码器 + 6层AttnRes解码器,支持跨层残差连接

MoE 集成

所有 FFN 层替换为 MoE 层,8 个专家,top_k=2

标准对话格式

使用 ShareGPT/ChatML 格式,兼容主流模型

混合精度训练

FP16 加速,节省显存,支持 AMD ROCm

ONNX 导出

支持导出 ONNX 格式,可用 Netron 可视化模型结构

门控机制 (Gate)

创新的门控机制平衡记忆与推理,动态调整特征融合

跨层注意力机制

解码器可访问编码器所有中间状态,增强上下文理解

模型架构

基于 Attention Residuals 的 Encoder-Decoder 设计

1

输入处理

Token Embedding + Position Encoding

2

AttnRes Encoder ×2

自定义编码器(双向注意力),每层可访问之前所有层

3

AttnRes Decoder ×6

解码器(因果注意力)+ 跨层残差注意力 + MoE 前馈网络

4

输出层

Linear → Softmax → 概率分布

输入 (batch, seq_len)
    ↓
Token Embedding + Position Encoding
    ↓
AttnRes Encoder ×2
    ↓
AttnRes Decoder ×6
    ↓
Linear → Softmax
    ↓
输出 (batch, seq_len, vocab_size=65024)

AttnRes 架构详解

深入理解创新的 Attention Residuals 机制

什么是 AttnRes?

AttnRes (Attention with Residual) 是一种创新的注意力机制,允许每层不仅关注当前输入,还能动态访问之前所有层的输出。这显著增强了信息流动和特征重用能力。

核心创新点

跨层注意力机制

每个AttnRes层通过计算当前查询与所有历史层键值对的注意力分数,实现对历史信息的选择性聚焦。

门控融合机制

创新的门控网络动态平衡MoE输出和跨层残差输出,根据输入特征自适应调整特征融合比例。

信息流增强

通过残差连接和注意力机制的结合,解决了深层网络中的梯度消失问题,同时保持了特征的丰富性。

门控机制详解

Gate = σ([MoE_out; Res_out]W_g)

Output = (1 - Gate) ⊗ MoE_out + Gate ⊗ Res_out

其中σ为Sigmoid激活函数,W_g为可学习参数矩阵。这个机制使模型能够根据当前输入的特征,动态决定采用更多的创新特征(MoE输出)还是保留历史信息(残差输出)。

信息流动优势

传统Transformer:信息仅在相邻层之间流动
AttnRes架构:每层可直接访问所有前序层的丰富特征,形成密集连接的信息高速公路。

ShareGPT/ChatML 对话格式

采用业界标准格式,确保兼容性

[BOS] <|im_start|>user
你好
<|im_end|>
<|im_start|>assistant
你好!很高兴为你服务。
<|im_end|>
<|im_start|>user
今天天气怎么样?
<|im_end|>
<|im_start|>assistant
今天天气很好!
<|im_end|>
[EOS]

模型会根据 `data_utils.py` 的规则,在 assistant 填写的内容区间计算 loss。

[BOS] <|im_start|>user
你好
<|im_end|>
<|im_start|>assistant
你好!很高兴为你服务。
<|im_end|>
<|im_start|>user
今天天气怎么样?
<|im_end|>
<|im_start|>assistant

推理时,模型基于此文本续写 assistant 内容直到结束符(`<|im_end|>` 或 `[EOS]`)。

模型 格式 特点
SudenMind <|im_start|>user/assistant 使用 ShareGPT/ChatML 标准格式
OpenAI GPT-4 ⟨im_start⟩user⟨im_sep⟩{内容}⟨im_end⟩ 使用 ⟨im_sep⟩ 分隔符
Qwen ⟨im_start⟩user\n{内容}⟨im_end⟩ 与 SudenMind 格式兼容
ChatGLM2/3 [BOS] ⟨user⟩\n{内容}⟨/assistant⟩ 使用特殊标记和角色标签

快速开始

几分钟内即可体验 SudenMind 的强大功能

1

环境准备

conda create -n sudenmind python=3.10
conda activate sudenmind

# AMD ROCm 版本
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.4

# 或 CUDA 版本
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

# 其他依赖(硬性版本要求)
pip install transformers>=4.30.0 datasets>=2.0.0 sentencepiece>=0.1.99 onnx>=1.14.0 onnxruntime>=1.15.0 netron>=7.0.0
2

训练模型

python src/train.py
  • LCCC 数据集自动加载
  • ShareGPT/ChatML 格式自动转换
  • 混合精度训练 (FP16)
  • Cosine Annealing 学习率调度
  • 早停机制
3

对话测试

python src/chat.py

你好

你好!很高兴为你服务。

今天天气怎么样?

今天天气很好,阳光明媚!