# 基于文档驱动的自适应编码大模型微调框架
## 项目背景
本项目是广州大学计算机科学与网络工程学院计算机科学与技术专业某2025届本科生的毕业设计。

## 论文编译
论文LaTeX源码位于`paper/`目录，编译环境要求：
- 操作系统：Windows 11
- TeX发行版：TeXLive 2023+
- 编译引擎：XeLaTeX
- 字体要求：方正楷体简体(需预先安装)

## 项目简介

### 项目概述
本项目是一个基于文档驱动的自适应编码大模型微调框架，通过深度解析私有库的文档以及其他资源，生成指令型语料，据此对大语言模型进行针对私有库的微调。

### 核心功能
- 文档解析与语料生成
- 大语言模型高效微调
- 交互式训练与推理界面
- 训练过程可视化监控

## 技术架构

### 系统原理
```
[前端界面] -> [数据集生成] -> [模型微调] -> [数据存储]
    ↑               ↑               ↑             ↑
    │               │               │             │
[Gradio]     [LangChain]    [unsloth/QLoRA]  [SQLite/TinyDB]
```

### 技术栈
- **前端界面**: Gradio构建的交互式Web界面
- **模型微调**: 基于unsloth框架的QLoRA高效微调
- **数据存储**: SQLite(结构化数据) + TinyDB(非结构化数据)
- **工作流引擎**: LangChain实现文档解析与语料生成
- **训练监控**: TensorBoard集成

## 功能模块

### 1. 模型管理
- 支持多种格式的大语言模型加载
- 模型信息查看与状态管理
- 模型卸载与内存释放

### 2. 模型推理
- 对话式交互界面
- 流式响应输出
- 历史对话管理

### 3. 模型微调
- 训练参数配置(学习率、batch size等)
- LoRA参数配置(秩、alpha等)
- 训练过程实时监控
- 训练中断与恢复

### 4. 数据集生成
- 文档解析与清洗
- 指令-响应对生成
- 数据集质量评估
- 数据集版本管理

## 微调技术

### QLoRA原理
QLoRA(Quantized Low-Rank Adaptation)是一种高效的大模型微调技术，核心特点包括：
1. **4-bit量化**: 将预训练模型量化为4-bit表示，大幅减少显存占用
2. **低秩适配**: 通过低秩矩阵分解(LoRA)实现参数高效更新
3. **内存优化**: 使用梯度检查点等技术进一步降低显存需求

### 参数配置
- **学习率**: 建议2e-5到2e-4
- **LoRA秩**: 控制适配器复杂度(建议16-64)
- **LoRA Alpha**: 控制适配器更新幅度(通常设为秩的1-2倍)

### 训练监控
- **TensorBoard集成**: 实时查看损失曲线、学习率等指标
- **日志记录**: 训练过程详细日志保存
- **模型检查点**: 定期保存中间权重

## 快速开始

0. 实验要求：
* 必须要使用linux系统，尽管unsloth框架提供了Windows版本
* 必须使用NVIDIA GPU，unsloth框架依赖NVIDIA GPU
* 实验的显存需求不高，本人使用6GB显存即可完成实验，若显存不足6GB可更换3B以下参数量的模型实验

1. 安装依赖:
```bash
pip install -r requirements.txt
```

2. 启动应用:
```bash
python main.py
```

3. 访问Web界面:
```
http://localhost:7860
```

## 许可证
MIT License
