Compare commits
2 Commits
0a4efa5641
...
905658073a
Author | SHA1 | Date | |
---|---|---|---|
![]() |
905658073a | ||
![]() |
9806334517 |
92
README.md
92
README.md
@ -1,15 +1,91 @@
|
|||||||
# 基于文档驱动的自适应编码大模型微调框架
|
# 基于文档驱动的自适应编码大模型微调框架
|
||||||
|
|
||||||
## 简介
|
## 简介
|
||||||
本人的毕业设计
|
|
||||||
### 项目概述
|
### 项目概述
|
||||||
|
本项目是一个基于文档驱动的自适应编码大模型微调框架,通过深度解析私有库的文档以及其他资源,生成指令型语料,据此对大语言模型进行针对私有库的微调。
|
||||||
|
|
||||||
* 通过深度解析私有库的文档以及其他资源,生成指令型语料,据此对大语言模型进行针对私有库的微调。
|
### 核心功能
|
||||||
|
- 文档解析与语料生成
|
||||||
|
- 大语言模型高效微调
|
||||||
|
- 交互式训练与推理界面
|
||||||
|
- 训练过程可视化监控
|
||||||
|
|
||||||
### 项目技术
|
## 技术架构
|
||||||
|
|
||||||
* 使用unsloth框架在GPU上实现大语言模型的qlora微调
|
### 系统架构
|
||||||
* 使用langchain框架编写工作流实现批量生成微调语料
|
```
|
||||||
* 使用tinydb和sqlite实现数据的持久化
|
[前端界面] -> [模型微调] -> [数据存储]
|
||||||
* 使用gradio框架实现前端展示
|
↑ ↑ ↑
|
||||||
|
│ │ │
|
||||||
|
[Gradio] [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集成**: 实时查看损失曲线、学习率等指标
|
||||||
|
- **日志记录**: 训练过程详细日志保存
|
||||||
|
- **模型检查点**: 定期保存中间权重
|
||||||
|
|
||||||
|
## 快速开始
|
||||||
|
|
||||||
|
1. 安装依赖:
|
||||||
|
```bash
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 启动应用:
|
||||||
|
```bash
|
||||||
|
python main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 访问Web界面:
|
||||||
|
```
|
||||||
|
http://localhost:7860
|
||||||
|
```
|
||||||
|
|
||||||
|
## 许可证
|
||||||
|
MIT License
|
||||||
|
@ -82,6 +82,8 @@ def train_page():
|
|||||||
dataset, new_training_dir,
|
dataset, new_training_dir,
|
||||||
learning_rate, per_device_train_batch_size, epoch,
|
learning_rate, per_device_train_batch_size, epoch,
|
||||||
save_steps, lora_rank)
|
save_steps, lora_rank)
|
||||||
|
except Exception as e:
|
||||||
|
raise gr.Error(str(e))
|
||||||
finally:
|
finally:
|
||||||
# 确保训练结束后终止 TensorBoard 子进程
|
# 确保训练结束后终止 TensorBoard 子进程
|
||||||
tensorboard_process.terminate()
|
tensorboard_process.terminate()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user