|
|
|
|
| 层级 | 技术 |
|---|---|
| 前端 | React 18 + TypeScript + Vite + Tailwind CSS |
| 后端 | FastAPI + WebSocket + Pydantic |
| 训练 | Kohya sd-scripts + PyTorch + CUDA |
| 工具 | bitsandbytes + accelerate + safetensors |
EasyLora/
├── 🐍 server.py # FastAPI 后端服务
├── 📁 EasyLora/ # 训练核心模块
│ ├── train.py # 训练逻辑
│ └── config.py # 配置管理
├── 🌐 web/ # React 前端
│ └── src/
│ ├── ui/ # UI 组件
│ ├── store.ts # 状态管理
│ └── utils/ # 工具函数
├── 📂 workspace/ # 数据工作区
│ ├── raw_uploads/ # 原始上传
│ └── processed/dataset/ # 处理后数据
├── 📦 outputs/ # 训练产物
└── ⚙️ user_settings.json # 用户配置
| 依赖 | 版本 | 说明 |
|---|---|---|
| Python | 3.10+ | 建议使用虚拟环境 |
| Node.js | 18+ | 前端构建 |
| CUDA | 11.8+ | GPU 加速(可选) |
| VRAM | 6GB+ | 推荐 8GB 以上 |
# 创建虚拟环境
python -m venv .venv
# 激活环境 (Windows)
.\.venv\Scripts\activate
# 激活环境 (Linux/Mac)
source .venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 启动服务
python server.py🌐 后端地址:
http://127.0.0.1:8000
cd web
npm ci
npm run dev🌐 前端地址:
http://127.0.0.1:5173
graph LR
A[📤 上传图片] --> B[🏷️ 编辑标签]
B --> C[⚙️ 调整参数]
C --> D[🚀 开始训练]
D --> E[📦 获取 LoRA]
- 拖拽图片到上传区域
- 支持批量上传
- 自动预览与缩略图
- 点击图片进入编辑器
- 使用预设标签快速添加
- 支持自定义标签
| 参数 | 建议值 | 说明 |
|---|---|---|
| 学习率 | 5 (中档) | 1-10 档位,自动映射 |
| 训练步数 | 1200 | 根据图片数量调整 |
| 优化器 | AdamW8bit | 低显存推荐 |
| 保存间隔 | 200 | 0 = 仅保存最终 |
- 点击「开始训练」按钮
- 实时查看日志与进度
- 支持中途停止
点击展开详细步骤
- 优化器选择
DAdaptation (自动LR) - 系统自动设置 UNet LR = 1.0, TextEnc LR = 0.5
- 开始训练,观察日志中的 D 值
- 等待数值稳定后记录,停止训练
- 将记录的数值 ÷ 3
- 切换优化器为
Lion或AdamW8bit - 填入计算后的学习率
- 开始正式训练
| VRAM | 推荐配置 |
|---|---|
| 6GB | 优化器: AdamW8bit, Batch: 1 |
| 8GB | 优化器: AdamW8bit, Batch: 2 |
| 12GB+ | 优化器: Lion, Batch: 4 |
主要接口
| 方法 | 端点 | 说明 |
|---|---|---|
GET |
/api/settings |
获取配置 |
POST |
/api/settings |
保存配置 |
POST |
/api/upload |
上传图片 |
POST |
/api/update-caption |
更新标签 |
GET |
/api/processed-images |
已处理图片列表 |
POST |
/api/stop |
停止训练 |
WS |
/ws/train |
训练进度推送 |
常用配置项
{
"DEFAULT_OUTPUT_DIR": "./outputs",
"DEFAULT_WORKSPACE_DIR": "./workspace",
"DEFAULT_SD_WEBUI_LORA_DIR": "C:/path/to/webui/models/Lora",
"COPY_TO_SD_WEBUI_ON_FINISH": true,
"LR_SLIDER_MIN": 1e-5,
"LR_SLIDER_MAX": 1e-4,
"AUTO_ADD_MODEL_NAME_PREFIX": true
}# E2E 测试
cd web
npx playwright install
npm run test:e2eQ: 首次启动很慢?
A: 需要下载模型权重,且首次会预处理数据到 workspace/processed/
Q: 训练时显存不足?
A: 尝试使用 AdamW8bit 优化器,减小 batch size,或降低图片分辨率
Q: 如何使用自定义基座模型?
A: 在设置页面配置 DEFAULT_MODEL_SDXL / DEFAULT_MODEL_512 等路径
本项目采用 PolyForm Noncommercial License 1.0.0
- ✅ 非商业用途:免费使用、修改与再发布
- ❌ 商业用途:需取得作者书面授权
完整条款参见 LICENSE 文件
Made with ❤️ for the AI Art Community
⭐ 如果这个项目对你有帮助,请给一个 Star!

