- 项目名称 :高效序列建模新范式:超越 Transformer 的探索
- 框架:PyTorch
- 数据集:GLUE Benchmark
- 目标:构建并评估 Transformer 与高效状态空间模型(如 Mamba)在序列任务中的性能与效率表现
efficient_sequence_modeling/
├── assets/ # 项目资源文件
├── data/ # 数据处理模块
│ ├── base_dataset.py # 基础数据集类
│ ├── data_processor.py # 数据预处理工具
│ ├── glue_dataset.py # GLUE 数据集加载与处理
│ ├── fusion_dataset.py # 融合模型数据集
│ └── __init__.py # 模块初始化
├── dataset/ # 数据集存储目录
│ ├── glue_data/ # 原始 GLUE 数据
│ └── glue_data_std/ # 标准化后的 GLUE 数据
├── evaluators/ # 评估模块
│ ├── evaluator.py # 模型评估工具
│ └── __init__.py # 模块初始化
├── models/ # 模型定义模块
│ ├── transformer/ # Transformer 相关模型
│ │ ├── custom_transformer.py # 自定义 Transformer 实现
│ │ └── __init__.py # 模块初始化
│ ├── efficient/ # 高效模型实现
│ │ ├── mamba.py # Mamba 模型实现
│ │ ├── linear_attention.py # 线性注意力机制
│ │ ├── pscan.py # 并行扫描算法
│ │ ├── fusion_model.py # 融合模型架构
│ │ └── __init__.py # 模块初始化
│ └── __init__.py # 模块初始化
├── scripts/ # 运行脚本
│ ├── run_baseline.py # 运行基准模型
│ ├── run_mamba.py # 运行 Mamba 模型
│ └── run_fusion.py # 运行融合模型
├── test/ # 测试目录
├── tokenizer/ # 分词器模块
│ ├── custom_bpe_tokenizer.json # 自定义 BPE 分词器配置
│ ├── tokenizerEncode.py # 分词器编码实现
│ ├── extract_glue_corpus.py # 提取 GLUE 语料库
│ └── train_tokenizer.py # 训练分词器脚本
├── tools/ # 工具脚本
│ ├── download_glue_dataset.py # 下载 GLUE 数据集
│ └── unify_glue_format.py # 统一 GLUE 数据格式
├── trainers/ # 训练模块
│ ├── trainer.py # 基础训练器
│ ├── fusion_trainer.py # 融合模型训练器
│ └── __init__.py # 模块初始化
├── ultra_long_sequence_explore/ # 超长序列探索模块
│ ├── pretrain.py # 预训练脚本
│ ├── pscan.py # 并行扫描实现
│ ├── prune.py # 模型剪枝
│ ├── finetune.py # 微调脚本
│ └── knowledge_distill.py # 知识蒸馏
├── utils/ # 工具函数
│ ├── logger.py # 日志工具
│ ├── configure.py # 配置管理
│ ├── performance.py # 性能评估
│ ├── performance_fusion.py # 融合模型性能评估
│ └── __init__.py # 模块初始化
├── __init__.py # 项目初始化
├── run.sh # 运行脚本
├── test.sh # 测试脚本
├── README.md # 项目说明
└── REPORT.md # 项目报告- 存放项目相关的资源文件,如图片、配置文件等。
-
base_dataset.py:- 定义基础数据集类,提供通用的数据集接口。
- 实现数据加载、预处理和批处理等基础功能。
-
data_processor.py:- 提供数据预处理工具,包括文本清洗、标准化等。
- 实现数据增强和转换功能。
-
glue_dataset.py:- 封装 GLUE 数据集的加载与处理逻辑。
- 支持不同任务(如 SST-2、MRPC)的数据格式。
- 实现数据集的标准化和批处理。
-
fusion_dataset.py:- 为融合模型定制的数据集类。
- 处理多模态或多任务数据。
-
glue_data/:- 存储原始 GLUE 数据集文件。
- 包含各个任务的训练集、验证集和测试集。
-
glue_data_std/:- 存储标准化处理后的 GLUE 数据集。
- 包含预处理后的数据文件。
evaluator.py:- 实现模型评估功能。
- 计算各种评估指标(如准确率、F1分数等)。
- 支持不同任务的评估方法。
custom_transformer.py:- 实现自定义的 Transformer 模型。
- 支持可配置的模型架构和参数。
-
mamba.py:- 实现 Mamba 状态空间模型。
- 提供高效的序列建模能力。
-
linear_attention.py:- 实现线性注意力机制。
- 降低注意力计算的复杂度。
-
pscan.py:- 实现并行扫描算法。
- 优化序列处理效率。
-
fusion_model.py:- 实现融合模型架构。
- 结合不同模型的优势。
-
run_baseline.py:- 运行基准模型训练的入口脚本。
- 包含完整的训练流程。
-
run_mamba.py:- 运行 Mamba 模型训练的入口脚本。
- 支持高效模型的训练和评估。
-
run_fusion.py:- 运行融合模型训练的入口脚本。
- 实现多模型融合的训练流程。
-
custom_bpe_tokenizer.json:- 自定义 BPE 分词器的配置文件。
- 定义词汇表和分词规则。
-
tokenizerEncode.py:- 实现分词器的编码功能。
- 支持文本到 token 的转换。
-
extract_glue_corpus.py:- 从 GLUE 数据集中提取语料库。
- 用于训练自定义分词器。
-
train_tokenizer.py:- 训练自定义分词器的脚本。
- 支持 BPE 等分词算法的训练。
-
download_glue_dataset.py:- 下载 GLUE 数据集的工具脚本。
- 自动处理数据下载和解压。
-
unify_glue_format.py:- 统一 GLUE 数据格式的工具。
- 确保数据格式的一致性。
-
trainer.py:- 实现基础训练器。
- 提供通用的训练流程和功能。
-
fusion_trainer.py:- 实现融合模型的训练器。
- 支持多模型联合训练。
-
pretrain.py:- 实现模型预训练脚本。
- 支持大规模数据预训练。
-
pscan.py:- 实现并行扫描算法。
- 优化长序列处理效率。
-
prune.py:- 实现模型剪枝功能。
- 优化模型大小和效率。
-
finetune.py:- 实现模型微调脚本。
- 支持特定任务的微调。
-
knowledge_distill.py:- 实现知识蒸馏功能。
- 支持模型压缩和知识迁移。
-
logger.py:- 实现日志记录功能。
- 支持训练过程的可视化和监控。
-
configure.py:- 实现配置管理功能。
- 支持模型和训练参数的配置。
-
performance.py:- 实现性能评估工具。
- 计算模型的各种性能指标。
-
performance_fusion.py:- 实现融合模型的性能评估。
- 支持多模型性能的评估。
-
__init__.py:- 项目初始化文件。
- 定义包的导入结构。
-
run.sh:- 项目运行脚本。
- 包含完整的运行流程。
-
test.sh:- 项目测试脚本。
- 支持自动化测试。
-
README.md:- 项目说明文档。
- 包含项目概述和使用说明。
-
REPORT.md:- 项目报告文档。
- 包含详细的实验和分析结果。
项目入口
├── run.sh/test.sh
├── scripts/
│ ├── run_baseline.py
│ │ ├── data/
│ │ │ ├── base_dataset.py
│ │ │ ├── data_processor.py
│ │ │ └── glue_dataset.py
│ │ ├── models/transformer/
│ │ │ └── custom_transformer.py
│ │ ├── trainers/
│ │ │ └── trainer.py
│ │ └── evaluators/
│ │ └── evaluator.py
│ │
│ ├── run_mamba.py
│ │ ├── data/
│ │ │ ├── base_dataset.py
│ │ │ ├── data_processor.py
│ │ │ └── glue_dataset.py
│ │ ├── models/efficient/
│ │ │ ├── mamba.py
│ │ │ ├── linear_attention.py
│ │ │ └── pscan.py
│ │ ├── trainers/
│ │ │ └── trainer.py
│ │ └── evaluators/
│ │ └── evaluator.py
│ │
│ └── run_fusion.py
│ ├── data/
│ │ ├── base_dataset.py
│ │ ├── data_processor.py
│ │ └── fusion_dataset.py
│ ├── models/efficient/
│ │ └── fusion_model.py
│ ├── trainers/
│ │ └── fusion_trainer.py
│ └── evaluators/
│ └── evaluator.py
│
├── tokenizer/
│ ├── tokenizerEncode.py
│ ├── extract_glue_corpus.py
│ └── train_tokenizer.py
│
├── tools/
│ ├── download_glue_dataset.py
│ └── unify_glue_format.py
│
├── ultra_long_sequence_explore/
│ ├── pretrain.py
│ ├── pscan.py
│ ├── prune.py
│ ├── finetune.py
│ └── knowledge_distill.py
│
└── utils/
├── logger.py
├── configure.py
├── performance.py
└── performance_fusion.py
-
数据流程
tools/download_glue_dataset.py下载原始数据到dataset/glue_data/tools/unify_glue_format.py处理数据格式,输出到dataset/glue_data_std/data/模块中的数据集类加载处理后的数据tokenizer/模块提供文本编码功能
-
模型训练流程
scripts/run_*.py作为入口脚本- 加载配置(
utils/configure.py) - 初始化数据集(
data/) - 构建模型(
models/) - 使用训练器(
trainers/)进行训练 - 通过评估器(
evaluators/)评估性能 - 记录日志(
utils/logger.py)
-
超长序列处理
ultra_long_sequence_explore/模块提供专门的工具- 支持预训练、微调、剪枝和知识蒸馏
- 与主训练流程通过
models/efficient/模块交互
-
工具支持
utils/提供通用工具函数tools/提供数据处理和准备工具- 所有模块都可以使用这些工具函数
-
评估和监控
evaluators/负责模型评估utils/performance.py和utils/performance_fusion.py提供性能指标计算utils/logger.py负责日志记录和可视化