PROJECT_SUMMARY.md 6.2 KB

FineTuneX 项目总结

项目概述

FineTuneX 是一个功能完整的大语言模型微调框架,专注于提供简单易用的微调流程。项目采用模块化设计,支持多种主流大模型,特别是 Qwen 系列模型。

已完成的功能

1. 核心模块

模型模块 (src/finetunex/models/)

  • ✅ 基础模型配置类 (BaseModelConfig)
  • ✅ Qwen 专用配置类 (QwenConfig)
  • ✅ 模型加载器 (load_qwen_model)
  • ✅ LoRA/QLoRA 支持
  • ✅ 4bit 量化支持

数据模块 (src/finetunex/data/)

  • ✅ 多格式数据加载 (JSON, CSV, Parquet, HuggingFace)
  • ✅ 数据格式化工具
  • ✅ 指令微调数据集类 (InstructionDataset)
  • ✅ 多种 prompt 模板 (default, alpaca, chat)
  • ✅ 数据验证工具

训练模块 (src/finetunex/trainer/)

  • ✅ 微调训练器 (FineTuneTrainer)
  • ✅ 训练回调函数
  • ✅ 早停机制
  • ✅ 模型保存和推送

工具模块 (src/finetunex/utils/)

  • ✅ 环境设置工具
  • ✅ GPU 信息检测
  • ✅ 参数统计
  • ✅ 日志系统

API 模块 (src/finetunex/api/)

  • ✅ FastAPI 服务器
  • ✅ RESTful API 端点
  • ✅ CORS 支持
  • ✅ 训练任务管理
  • ✅ 模型推理接口

2. 示例和工具

示例脚本 (examples/)

  • ✅ Qwen3.5 0.8B 微调示例
  • ✅ Colab 笔记本示例

工具脚本 (scripts/)

  • ✅ 项目初始化 (init_project.py)
  • ✅ 环境检查 (check_env.py)
  • ✅ 数据预处理 (preprocess_data.py)
  • ✅ 模型推理 (inference.py)
  • ✅ 模型评估 (evaluate.py)
  • ✅ API 服务器启动 (start_api.py)

测试 (tests/)

  • ✅ 数据加载测试
  • ✅ 预处理测试
  • ✅ 模型配置测试
  • ✅ 工具函数测试
  • ✅ API 端点测试

3. 文档

  • ✅ README.md - 项目概述
  • ✅ QUICKSTART.md - 快速开始指南
  • ✅ docs/usage.md - 详细使用文档
  • ✅ 代码内注释

4. 配置文件

  • ✅ requirements.txt - Python 依赖
  • ✅ setup.py - 包安装配置
  • ✅ configs/qwen3.5_config.py - Qwen3.5 配置示例
  • ✅ data/sample_dataset.json - 示例数据集

项目结构

FineTuneX/
├── src/
│   └── finetunex/
│       ├── __init__.py
│       ├── models/
│       │   ├── __init__.py
│       │   ├── base.py
│       │   └── qwen.py
│       ├── data/
│       │   ├── __init__.py
│       │   ├── dataset.py
│       │   └── preprocess.py
│       ├── trainer/
│       │   ├── __init__.py
│       │   ├── trainer.py
│       │   └── callbacks.py
│       ├── utils/
│       │   ├── __init__.py
│       │   ├── helpers.py
│       │   └── logger.py
│       └── api/
│           ├── __init__.py
│           ├── server.py
│           └── routes.py
├── examples/
│   ├── qwen3.5_0.8b_finetune.py
│   └── colab_example.py
├── scripts/
│   ├── init_project.py
│   ├── check_env.py
│   ├── preprocess_data.py
│   ├── inference.py
│   ├── evaluate.py
│   └── start_api.py
├── tests/
│   └── test_all.py
├── configs/
│   └── qwen3.5_config.py
├── data/
│   └── sample_dataset.json
├── docs/
│   └── usage.md
├── requirements.txt
├── setup.py
├── README.md
└── quickstart.py

技术特点

1. 高效微调

  • LoRA/QLoRA: 参数高效微调,减少显存占用
  • 4bit 量化: 支持 bitsandbytes 4bit 量化
  • 梯度累积: 支持梯度累积以模拟大批次训练
  • 混合精度: 支持 FP16/BF16 混合精度训练

2. 灵活配置

  • 数据类配置: 使用 Python dataclass 进行类型安全的配置
  • 模块化设计: 各模块独立,易于扩展
  • 多模板支持: 支持多种 prompt 模板

3. 完整工具链

  • 数据预处理: 完整的数据加载和预处理工具
  • 训练监控: 训练日志和回调
  • 模型评估: 模型评估工具
  • 推理服务: RESTful API 服务

4. 用户友好

  • 详细文档: 完整的使用文档
  • 示例代码: 丰富的示例脚本
  • 快速启动: 一键启动脚本
  • 环境检查: 自动检查依赖

Qwen3.5 0.8B 微调示例

项目实现了完整的 Qwen3.5 微调示例:

使用方式

python examples/qwen3.5_0.8b_finetune.py

特点

  1. 完整流程: 从数据加载到模型保存的完整流程
  2. 最佳实践: 使用 LoRA + 4bit 量化的最佳实践
  3. 详细日志: 完整的训练日志输出
  4. 推理测试: 训练完成后自动进行推理测试

配置说明

config = QwenConfig(
    model_name="Qwen/Qwen3.5-0.5B",  # 或 0.8B 当可用时
    lora_r=16,
    lora_alpha=32,
    use_4bit=True,
    num_train_epochs=3,
    learning_rate=2e-4,
)

使用方法

快速开始

# 1. 安装依赖
pip install -r requirements.txt

# 2. 运行示例
python examples/qwen3.5_0.8b_finetune.py

使用自己的数据

  1. 准备数据文件 data.json:

    [
    {
    "instruction": "你的指令",
    "input": "输入(可选)",
    "output": "期望输出"
    }
    ]
    
  2. 修改示例脚本中的数据集路径

  3. 运行微调

API 服务

# 启动服务
python scripts/start_api.py

# 访问文档
# http://localhost:8000/docs

依赖要求

  • Python 3.9+
  • PyTorch 2.0+
  • Transformers 4.40+
  • CUDA 11.7+ (推荐)

显存需求

模型 量化 批次大小 显存需求
Qwen-0.5B 4bit 1 ~2GB
Qwen-0.5B 16bit 1 ~4GB
Qwen-7B 4bit 1 ~8GB
Qwen-7B 16bit 1 ~16GB

下一步

项目已完成核心功能,可以考虑以下扩展:

  1. 更多模型支持: Llama、Baichuan、ChatGLM 等
  2. Web UI: React/Vue 前端界面
  3. 分布式训练: DeepSpeed 集成
  4. 更多任务: 分类、抽取等
  5. 自动评估: BLEU、ROUGE 等指标

总结

FineTuneX 是一个功能完整、易于使用的大模型微调框架。通过模块化设计和丰富的文档,用户可以快速上手进行模型微调。项目实现了完整的 Qwen3.5 微调示例,包括数据准备、模型加载、训练、保存和推理的全流程。