LoRAForge 是一个现代化的云资源管理平台,旨在提供完整的云主机生命周期管理解决方案。通过直观的 Web 界面,用户可以轻松管理算力节点、定义产品规格、管理镜像库,并通过内置的 WebSSH 终端直接访问云主机实例。
- 全生命周期管理 - 从实例创建、启动、停止到删除的完整流程
- AI 算力调度 - 专为 GPU 算力优化的任务调度与资源分配
- 大模型微调 - 内置 LoRA/QLoRA 微调流程,降低 LLM 训练门槛
- 资源高效利用 - 智能调度算力节点,最大化资源利用率
- 安全可控 - 支持 Docker TLS 加密连接,细粒度权限控制
- 开箱即用 - 完善的初始化机制,自动注册 API 和菜单
本项目新增了 cloud 包,包含以下核心业务模块:
用户购买和使用的云主机实例全生命周期管理。
| 功能 | 描述 |
|---|---|
| 创建实例 | 基于镜像和产品规格快速创建容器实例 |
| 实例控制 | 启动、停止、重启、删除实例 |
| 状态监控 | 实时显示 CPU、内存、网络、磁盘 I/O 图表 (基于 SSE 实时推送) |
| WebSSH | 内置 Web 终端,支持全彩显示和窗口自适应,直接访问容器 Shell |
| 文件管理 | 在线浏览、上传、下载容器内文件,方便数据传输 |
| 自动填充 | 后端自动关联当前用户ID和容器信息 |
关联关系:
Instance (1:1) → ProductSpec (产品规格)
Instance (1:1) → ComputeNode (算力节点)
一站式大模型微调任务管理平台,支持主流开源大模型(如 LLaMA, Qwen, ChatGLM 等)的微调训练。
核心特性:
- 训练方式:支持 LoRA, QLoRA, Full Fine-tuning 等多种微调策略。
- 高级参数:
- LoRA 配置:自定义 Rank, Alpha, Dropout, Target Modules
- 训练参数:Learning Rate, Batch Size, Epochs, Warmup Ratio
- 优化器:AdamW, Lion 等
- 精度控制:BF16, FP16, FP32, INT4/INT8 量化
- 加速技术:
- ✅ Flash Attention 2
- ✅ DeepSpeed (ZeRO Stage 2/3)
- ✅ 梯度累积 (Gradient Accumulation)
- 实时监控:
- 实时查看训练日志流
- 动态 Loss 曲线展示
- 训练指标统计 (Loss, Epoch, Step)
- 数据管理:支持自定义数据集路径,支持 Alpaca, ShareGPT 等多种数据格式。
- 模型管理:训练快照自动保存,一键导出最终模型。
直接管理算力节点上的 Docker 资源,提供底层基础设施的可视化操作。
- 节点镜像:查看节点镜像列表、拉取新镜像 (支持流式日志)、删除镜像
- 节点网络:管理 Docker 网络 (Bridge, Overlay, Macvlan),支持自定义网段
- 节点数据卷:管理 Docker 数据卷,支持持久化存储卷的创建与挂载
定义云产品的硬件规格和定价策略。
字段配置:
- 名称、描述
- 显卡型号 / 数量 (如 NVIDIA RTX 4090 x4)
- CPU 核心数
- 内存容量 (GB)
- 系统盘 / 数据盘容量 (GB)
- 价格 (元/小时)
特性:支持上架/下架管理,灵活控制产品可用性
管理底层的计算资源节点,支持分布式部署。
字段配置:
- 区域、名称、描述
- IP 配置 (公网 IP / 内网 IP)
- SSH 端口、Docker API 端口
- 硬件配置 (CPU / 内存 / 显卡)
安全连接:
- ✅ 支持 Docker TLS 加密连接 (双向认证)
- ✅ 证书管理采用长文本输入 (CA证书、客户端证书、私钥)
- ✅ 连接测试功能,自动验证节点可用性
基于 WebSocket 的 Web 终端功能,无需安装 SSH 客户端即可访问容器。
核心特性:
- 🔒 安全连接 - 通过 WebSocket 建立加密终端会话,后端自动进行 Docker Exec 交互
- 📱 响应式 - 自动适配终端窗口大小 (Resize Observer)
- 💓 心跳保活 - 自动检测连接状态,防止意外断开
- 🧹 会话管理 - 自动清理超时会话 (默认30分钟)
- 🎨 彩色终端 - 支持 xterm-256color 完整色彩,完美支持 Vim, Htop 等交互式命令
技术实现:
- 后端:Gorilla WebSocket + Docker Exec API (Hijack IO)
- 前端:xterm.js + xterm-addon-fit + xterm-addon-web-links
- 双向数据流:WebSocket 输入 ⇄ Docker 容器 Stdin/Stdout
graph TD
User[用户] --> Web[Web 前端 (Vue3)]
Web --> Nginx[Nginx 网关]
Nginx --> API[后端 API (Gin)]
subgraph "管理节点 (Server)"
API --> DB[(MySQL/PgSQL)]
API --> Redis[(Redis)]
API --> Service[业务逻辑层]
Service --> DockerClient[Docker SDK]
end
subgraph "算力节点 (Compute Node)"
DockerClient --TLS--> DockerDaemon[Docker Daemon]
DockerDaemon --> Container[容器实例]
DockerDaemon --> FinetuneTask[微调任务容器]
end
Web --WebSocket--> API
API --Hijack--> Container
| 技术 | 版本 | 用途 |
|---|---|---|
| Go | 1.23+ | 后端开发语言 |
| Gin | 1.10.0 | 高性能 Web 框架 |
| GORM | 1.25.12 | ORM 数据库操作 (支持 MySQL, PgSQL, SQLite, SQL Server) |
| Docker Client | 24.0+ | 容器管理 API (Moby Project) |
| Gorilla WebSocket | 1.5.0 | WebSocket 通信 |
| Zap | 1.27.0 | 高性能结构化日志 |
| Casbin | 2.103.0 | RBAC 权限控制 |
| Viper | 1.19.0 | 配置管理 |
| 技术 | 版本 | 用途 |
|---|---|---|
| Vue | 3.5.7+ | 渐进式前端框架 |
| Vite | 6.2.3 | 下一代前端构建工具 |
| Element Plus | 2.10.2 | 基于 Vue 3 的 UI 组件库 |
| Pinia | 2.2.2 | 状态管理 |
| xterm.js | 5.3.0 | Web 终端组件 |
| ECharts | 5.5.0 | 数据可视化图表 |
| UnoCSS | 66.4.2 | 原子化 CSS 引擎 |
| Axios | 1.7.0 | HTTP 客户端 |
- 模块化设计:业务逻辑独立于
cloud包中,不侵入系统核心代码,方便升级维护 - 自动化初始化:实现
SubInitializer接口,支持通过gowatch热编译自动注册菜单、API 和权限 - 分层架构:严格遵循 Model → Service → API → Router 分层设计,职责清晰
- 实时通信:
- WebSSH: 基于 WebSocket 实现低延迟终端交互
- 监控/日志: 基于 SSE (Server-Sent Events) 实现轻量级实时数据推送
- 统一响应:标准化的 JSON 响应格式,统一错误处理
LoRAForge/
├── server/ # 后端 Go 项目
│ ├── api/v1/cloud/ # 云资源 API 接口层
│ │ ├── compute_node.go # 算力节点 API
│ │ ├── instance.go # 实例管理 API
│ │ ├── instance_stats.go # 实例监控 API (SSE)
│ │ ├── fineTuneTask.go # 微调任务 API
│ │ ├── image.go # 镜像管理 API
│ │ ├── network.go # 网络管理 API
│ │ ├── volume.go # 卷管理 API
│ │ └── product_spec.go # 产品规格 API
│ ├── service/cloud/ # 云资源业务逻辑层
│ │ ├── computeNode.go # 算力节点服务
│ │ ├── instance.go # 实例管理服务
│ │ ├── webssh.go # WebSSH 终端服务
│ │ ├── fineTuneTask.go # 微调任务服务
│ │ ├── image.go # 镜像服务
│ │ ├── network.go # 网络服务
│ │ ├── volume.go # 卷服务
│ │ └── ... # 其他服务
│ ├── model/cloud/ # 云资源数据模型
│ │ ├── compute_node.go # 算力节点模型
│ │ ├── instance.go # 实例模型
│ │ ├── fineTuneTask.go # 微调任务模型
│ │ ├── product_spec.go # 产品规格模型
│ │ └── request/ # 请求 DTO
│ ├── source/cloud/ # 初始化数据
│ │ ├── api.go # API 权限初始化
│ │ └── menu.go # 前端菜单初始化
│ └── config.yaml # 配置文件
│
├── web/ # 前端 Vue 项目
│ └── src/view/cloud/ # 云资源页面组件
│ ├── compute_node/ # 算力节点页面
│ ├── instance/ # 实例管理页面
│ ├── finetune_task/ # 微调任务页面
│ ├── image/ # 节点镜像页面
│ ├── network/ # 节点网络页面
│ ├── volume/ # 节点卷页面
│ └── product_spec/ # 产品规格页面
│
└── deploy/ # 部署配置
├── docker/ # Docker 部署
├── docker-compose/ # Docker Compose 部署
└── kubernetes/ # Kubernetes 部署
- Go: 1.23+
- Node.js: 18+
- Database: MySQL 5.7+ / PostgreSQL 12+
- Cache: Redis 6+
- Compute Node: 至少一台安装了 Docker (建议开启 TLS) 的服务器
git clone https://github.com/your-username/LoRAForge.git
cd LoRAForgecd server
# 1. 安装依赖
go mod tidy
# 2. 修改配置文件
# 复制 config.yaml 并修改数据库和 Redis 连接信息
cp config.yaml.example config.yaml
vi config.yaml
# 3. 启动服务
# 首次启动会自动初始化数据库表结构和基础数据
go run main.go
# 或使用 gowatch 热加载(推荐开发环境)
go install github.com/silenceper/gowatch@latest
gowatch后端默认运行在 http://localhost:8888,Swagger 文档地址:http://localhost:8888/swagger/index.html
cd web
# 1. 安装依赖
npm install
# 2. 启动开发服务器
npm run dev前端默认运行在 http://localhost:8080
- 打开浏览器访问
http://localhost:8080 - 使用默认超级管理员账号登录:
- 用户名:
admin - 密码:
123456
- 用户名:
- 进入 系统管理 -> 角色管理,确保当前角色拥有
cloud相关菜单和 API 的权限(系统会自动初始化,如未显示请检查初始化日志)。 - 进入 云资源管理 -> 算力节点,添加您的第一台 Docker 算力节点。
- 多租户隔离:基于 Namespace 的资源隔离
- GPU 虚拟化:支持 MPS 或 vGPU 切分
- 模型广场:集成 HuggingFace/ModelScope 模型下载与管理
- 自动扩缩容:基于负载的节点自动伸缩
- 计费系统:按量计费与充值模块
- 算力节点列表 - 展示所有可用的计算资源节点
- 产品规格管理 - 定义不同档次的云主机规格
- Docker 资源管理 - 镜像、网络、卷的统一管理
- 实例管理 - 用户云主机的完整生命周期管理(含文件/监控)
- 微调任务 - 大模型微调全流程管理
通过浏览器直接访问容器终端,支持全彩显示和窗口自适应
- RBAC 权限控制 - 基于 Casbin 的细粒度权限管理
- JWT 认证 - 无状态的 Token 认证机制
- Docker TLS - 算力节点支持 TLS 加密连接
- API 权限 - 自动注册并控制 API 访问权限
- 操作审计 - 完整的操作日志记录
欢迎贡献代码、报告问题或提出新功能建议!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目基于 MIT 协议开源。
- gin-vue-admin - 优秀的全栈管理框架
- Gin - 高性能 Go Web 框架
- Vue.js - 渐进式 JavaScript 框架
- Element Plus - 优秀的 Vue 3 UI 组件库
- xterm.js - 强大的 Web 终端组件
Built with ❤️ by LoRAForge Team
