AI_TRAINER:基于 Flask + PyTorch 的深度学习训练与测试平台项目

🧠 ITPP — 统一训练平台 (Integrated Training Platform) 一个基于 Flask + PyTorch 的深度学习训练与测试平台,支持 CNN 图像分类 和 Transformer 生成式文本模型 的全流程训练、管理与测试。

分支3Tags3
AI_TRAINER Logo

统一训练平台

基于 Flask + PyTorch 的深度学习训练与测试平台:覆盖 CNN / ViT 图像分类、扩散图像生成与编辑、Decoder-only 文本生成(LLM)、多模态图文单流 六类模型的全流程训练、管理与测试。注意力机制(full / flash / linear)像搭积木一样在 Web 端自由切换,训练产物统一导出为 Safetensors 标准包(权重 + config.json + 分词器文件 + LICENSE)。

Warning

⚠️ 自 v1.2.1 版本开始,将不再支持旧的 .pth 模型文件! 平台已全面切换为 Safetensors 单一格式:模型权重统一为 model.safetensors + config.json 旁车元数据,词表统一为 *_token2char.json;模型列表、下载导出与 测试加载均只识别 .safetensors。如仍有历史 .pth 模型文件,请先在 v1.2.1 之前的 版本中迁移或重新训练后再升级。

用户和管理员的使用说明请查看使用说明查找表

生态联动:CodeMate × CostCut-Infer


使用说明查找表

用户使用说明 管理员使用说明
docs/DirectionsUser.md docs/DirectionsAdmin.md

更新日志

v1.2.1 当前版本亮点

  • 新增语言分类模型:字符级 Transformer 双向编码器,按类别文件夹组织数据即可训练; LLM 上传数据放宽为同级散放 txt 或按文件夹组织均可
  • 混合注意力积木搭建器:LLM 训练页 Scratch 式拖拽"full/flash/linear"积木, 逐层装配注意力;层数不足自动循环已搭序列、超出自动截断并提醒,支持首尾特殊层设置; ViT 同样支持统一注意力与拖拽式逐层混合注意力
  • 扩散模型 DDIM 快速采样:生成/编辑支持指定步数的 DDIM 确定性采样(训练页可选轻量子类型)
  • 模型架构积木化:新增 ViT 图像分类、扩散图像生成/编辑、多模态图文单流; 注意力机制 full / flash(默认) / linear 在 Web 端像搭积木一样切换;MoE 修复广播 bug
  • AI 学习页:新增 16+ 可视化章节(梯度下降二次函数演示、激活函数曲线、 卷积扫描动画、温度采样等),侧边栏导航布局
  • 标准模型导出包:所有模型一键下载 Safetensors 标准结构 (model.safetensors + config.json + vocab.json / merges.txt + 多模态视觉编码器权重 + LICENSE)
  • 测试页全覆盖:七类模型(含手部检测)均可选模型 → 自动填充本地模板 → 一键运行测试
  • 资源占用上限:默认取系统一半资源(CPU 线程 / 内存),超限拒绝新训练,管理端可调
  • 存储治理:轮转日志(单文件 5MB×5)、管理员自动/手动清理过期文件与日志; 行为日志存储上限可调(默认 1000 条、-1 无上限,新增一条自动删除最旧一条), 日志查询分页返回 + 索引优化,防止大结果撑爆内存
  • 性能优化:移除训练人工延时、DataLoader 多进程化(受限环境自动回退单进程)
  • CI/CD:.gitcode/workflows 流水线自动执行全量编译检查与六类训练 E2E 回归

历史

  • v1.1.0 队列管理系统与带宽限制系统
  • v1.0.1 大量体验修复(进度保持、分词、admin 页面等)

技术栈

层级 技术
后端框架 Flask + flask-cors
深度学习 PyTorch + torchvision(可选 torch.compile 加速)
模型格式 SafeTensors(权重)+ config.json 元数据旁车
图像处理 OpenCV(中文路径安全解码)、torchvision
手势识别 MediaPipe Tasks
系统监控 psutil(CPU/RAM 监控与资源上限)
数据库 SQLite3 (WAL 模式)
分词 字符级词表(JSON) + 平台 BPE 分词器
前端 HTML5 + CSS3 + Vanilla JS
CI/CD GitCode Pipeline(.gitcode/workflows,E2E 回归自动化)
打包部署 PyInstaller + Inno Setup

项目结构

Windows_ITPP/
├── app.py                  # 应用入口(启动进度条 + 服务启动)
├── app_logger.py           # 全局请求日志(轮转 + 内存友好)
├── config.py               # 全局配置
├── database.py             # SQLite3 数据库管理
├── model.py                # 数据管线(LRU缓存 / ImageDataset / TextDataset)
├── model_io.py             # 模型存取统一入口(safetensors + 元数据旁车)
├── state.py                # 训练任务状态(内存)
├── cleanup.py              # 存储清理机制
├── resource_limits.py      # 资源占用上限(默认系统一半)
├── requirements.txt        # Python 依赖
├── test_templates/         # 测试页本地示例代码(image/text/diffusion/multimodal 等)
├── .gitcode/               # GitCode CI/CD 流水线
│   ├── workflows/ci.yml    #   编译检查 + 六类训练 E2E 回归
│   └── scripts/            #   E2E 回归驱动脚本
├── architectures/          # 🧱 模型积木库(可插拔)
│   ├── attention.py        #   注意力注册表:full / flash(默认) / linear
│   ├── blocks.py           #   TransformerBlock / 双向编码块(ViT)
│   └── moe.py              #   MoE 专家混合层(修复版)
├── model_zoo/              # 📦 模型定义代码包(按架构分文件存放;注册表见 __init__.py)
│   ├── vision.py           #   CNN(SimpleResNet) / ViT 图像分类
│   ├── text.py             #   Decoder-only 文本生成(积木式注意力+MoE)
│   ├── text_cls.py         #   语言分类(字符级双向编码器 + CLS 池化)
│   ├── diffusion.py        #   扩散生成 DDPM / 扩散编辑适配
│   ├── multimodal.py       #   多模态单流(图文 Decoder-only)
├── trainers/               # 训练器包(按训练类型分发)
│   ├── image_cls.py        #   图像分类(CNN/ViT 统一入口)
│   ├── text_gen.py         #   文本生成训练
│   ├── diffusion.py        #   扩散生成/编辑训练
│   └── multimodal.py       #   多模态图文配对训练
├── blueprints/
│   ├── auth.py             # 认证 API
│   ├── main.py             # 页面路由
│   ├── training.py         # 训练 API(含 /api/architecture_options 积木选项)
│   ├── model.py            # 模型管理 API
│   ├── test.py             # 测试 API
│   ├── profile.py          # 账号主页 API
│   ├── admin.py            # 管理员面板 API
│   └── utils.py            # 公共工具
├── static/
│   ├── css/style.css       # 全局样式
│   ├── css/ai.css          # 学习页样式
│   ├── js/main.js          # 训练页逻辑
│   ├── js/ai.js            # 学习页逻辑
│   └── tokenizer_bpe.json  # BPE 分词模型(精简版)
├── templates/
│   ├── homepage.html       # 首页(公开)
│   ├── index.html          # 训练面板(LLM/图像/多模态三分区)
│   ├── login.html          # 登录/注册
│   ├── check.html          # 模型测试
│   ├── ai.html             # AI 基础学习
│   ├── profile.html        # 账号主页
│   └── admin.html          # 管理员面板
├── docs/
│   ├── DirectionsUser.md   # 用户使用说明
│   ├── DirectionsAdmin.md  # 管理员使用说明
│   └── EXTENSION_DEV.md    # 扩展开发指南(CodeMate 联动)
├── uploads/                # 训练数据(运行时生成,不入库)
├── models/                 # 模型文件产物(运行时生成,不入库;代码包见上)
├── test_data/              # 测试数据(运行时生成,不入库)
└── training_platform.db    # SQLite 数据库(运行时生成,不入库)

模型架构总览

分区 架构 说明
大语言模型 Transformer (Decoder-only) 文本生成:注意力积木可切换 full/flash(默认)/linear,可选 MoE、MLA;支持拖拽搭建逐层混合注意力(层数不足自动循环、超出自动截断提醒,可设首尾特殊层)。上传数据支持同级散放 txt 或按文件夹组织
大语言模型 Text Classifier 语言分类:字符级 Transformer 双向编码器 + CLS 池化分类头,类别由顶层文件夹决定(需按类别文件夹组织数据),同样支持混合注意力
图像模型 CNN 经典卷积分类
图像模型 ViT 视觉 Transformer 分类,支持统一注意力与拖拽式逐层混合注意力
图像模型 Diffusion (DDPM) 图像生成,噪声预测式扩散;支持 DDIM 快速采样
图像模型 Diffusion Edit Adapter 图像编辑,条件拼接 + 退化对自监督;DDIM 编辑采样
多模态 Single-Stream Decoder 图文 token 单流拼接,看图续写

训练页交互:顶部主条选分区(LLM / 图像 / 多模态)→ 主条下方二级任务条选具体任务 (LLM:文本生成/语言分类;图像:分类/生成/编辑 → 再选子架构 CNN/ViT、DDPM/DDIM、 标准/轻量),各任务的专属参数卡与上传说明自动联动。

扩展新注意力或新模型:分别用 @register_attention('名字') / @register_model('名字') 注册即可自动出现在前端积木选项中,无需改动训练器与页面代码。


快速开始

环境要求

  • Python 3.11+
  • pip

安装依赖

pip install -r requirements.txt

启动服务

python app.py

启动后访问 http://127.0.0.1:5000 即可使用。


页面路由

路由 页面 登录要求
/home 首页(公开 Landing Page) 否
/train 训练面板 是
/login 登录页 否
/register 注册页(默认注册标签) 否
/check 模型测试页 是
/study AI 基础学习页 是
/profile 账号主页 是
/admin 管理员面板(仅 admin 账户) 是

API 接口

方法 路由 说明
POST /api/register 注册
POST /api/login 登录
GET /api/user_info 用户信息
POST /api/preview_zip 预览 ZIP
POST /api/upload 上传数据
GET /api/list_datasets 数据集列表
POST /api/start_training 启动训练
GET /api/task_status/<id> 训练状态
GET /api/list_models 模型列表
GET /api/download_model/<name> 下载模型
DELETE /api/delete_model/<name> 删除模型
GET /api/list_user_models 测试模型列表
POST /api/upload_test_data 上传测试数据
POST /api/run_test 运行测试
GET /api/test_template/<name> 本地测试示例代码(白名单)
GET /api/architecture_options 积木选项(可用注意力/模型架构/分区)
GET /api/profile/info 账号信息
POST /api/profile/update_username 修改用户名
POST /api/profile/update_password 修改密码
GET /api/profile/activity_logs 行为日志
GET /admin/api/users 用户列表(管理员)
POST /admin/api/user/<id>/role 修改用户角色
POST /admin/api/user/<id>/group 修改用户分组
POST /admin/api/user/<id>/delete 删除用户
POST /admin/api/user/<id>/reset_password 重置用户密码
GET /admin/api/logs 全部行为日志
GET /admin/api/device_status 设备状态信息
GET /admin/api/monitor 实时 CPU/RAM 监控
GET /admin/api/queue 训练队列状态
POST /admin/api/queue/max_concurrent 设置最大并发数
POST /admin/api/queue/cancel/<id> 取消/停止训练任务
GET /admin/api/bandwidth 带宽使用统计
POST /admin/api/bandwidth/default 设置默认带宽限制
POST /admin/api/bandwidth/user/<id> 设置用户带宽限制
GET /admin/api/cleanup/status 存储占用统计与清理配置
POST /admin/api/cleanup/config 设置自动清理保留天数
POST /admin/api/cleanup/run 手动清除模型/上传数据/日志
GET /admin/api/logs 分页获取行为日志(page/page_size)
GET/POST /admin/api/log_limits 日志存储上限(-1=无上限,默认1000)
GET /admin/api/resource_limits 查看资源占用上限与当前用量
POST /admin/api/resource_limits 设置资源上限(默认系统一半,0=不限)

数据库

表名 说明
users 用户信息(含 role 角色、group_name 分组)
files 上传文件记录
models 训练模型记录
activity_logs 行为日志

数据库初始化时自动创建管理员账户 admin / 123456。


许可证

本项目基于 BSD 3-Clause 许可证开源(见根目录 LICENSE)。

平台训练产出的所有标准模型导出包(model.safetensors + config.json + 分词器文件) 均内嵌同一份 BSD-3-Clause LICENSE 文件,随模型一起分发。

项目介绍

🧠 ITPP — 统一训练平台 (Integrated Training Platform) 一个基于 Flask + PyTorch 的深度学习训练与测试平台,支持 CNN 图像分类 和 Transformer 生成式文本模型 的全流程训练、管理与测试。

定制我的领域