Commit c0705977 authored by wangkaixiong's avatar wangkaixiong 🚴🏼
Browse files

init

parent d3982d85
# Linux模型管理工具
一个基于Web的模型管理工具,用于在Linux环境下下载、上传和管理ModelScope模型,并支持上传到CsgHub平台。
## 功能特点
1. **模型下载**
- 支持通过模型ID下载ModelScope模型
- 支持多个模型ID批量下载(用英文逗号分隔)
- 可自定义本地存放路径,支持设置默认路径
- 实时显示下载进度
- 下载失败自动重试(最多10次)
2. **模型上传**
- 自动列出所有已下载但未上传的模型
- 支持批量上传和单个模型上传
- 实时显示上传进度
3. **模型管理**
- 列出所有已下载的模型
- 显示模型状态、大小、下载时间等信息
- 支持删除选中的模型
4. **配置管理**
- 设置默认模型存放路径
- 配置最大重试次数
- 配置CsgHub连接信息
## 技术栈
- **前端**:HTML5, CSS3, JavaScript, Tailwind CSS, Font Awesome
- **后端**:Python, Flask, Flask-SocketIO
- **数据存储**:SQLite
## 安装与运行
### 前提条件
- Python 3.6+
- pip
### 安装步骤
1. 克隆或下载本项目代码
2. 进入项目目录
```bash
cd model_manager_webapp
```
3. 运行启动脚本
```bash
chmod +x start.sh
./start.sh
```
启动脚本会自动:
- 创建虚拟环境
- 安装所需依赖
- 启动Web应用
4. 打开浏览器访问
```
http://localhost:5000
```
## 使用说明
### 下载模型
1. 在"模型下载"标签页中,输入模型ID(多个模型ID用英文逗号分隔)
2. 选择本地存放路径(可选,默认使用配置中的路径)
3. 点击"开始下载"按钮
4. 查看下载进度和状态
### 上传模型
1. 切换到"模型上传"标签页
2. 选择要上传的模型(可多选)
3. 点击"上传选中"按钮
4. 查看上传进度和状态
### 管理模型
1. 切换到"模型管理"标签页
2. 查看所有已下载的模型列表
3. 可通过点击删除图标删除模型
4. 对于已下载但未上传的模型,可点击上传图标单独上传
### 配置应用
1. 点击顶部导航栏的"配置"按钮
2. 修改所需配置项
3. 点击"保存配置"按钮
## 注意事项
1. 本应用目前是一个演示版本,实际的模型下载和上传功能需要集成ModelScope SDK和pycsghub库
2. 当前版本使用模拟数据展示功能,实际部署时需要替换为真实的下载和上传逻辑
3. 确保应用有足够的权限访问指定的模型存放路径
## 后续开发计划
1. 集成ModelScope SDK实现真实的模型下载
2. 集成pycsghub实现真实的模型上传
3. 添加用户认证功能
4. 支持更多模型源
5. 优化批量操作性能
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
{
"DeepSeek-OCR-2_/data/DataStore/models/exp/models/deepseek-ai": {
"model_id": "DeepSeek-OCR-2",
"local_path": "/data/DataStore/models/exp/models/deepseek-ai/DeepSeek-OCR-2",
"status": "downloaded",
"download_time": "2026-02-24T20:14:04.793600",
"upload_time": null,
"upload_repo_id": null
},
"moonshotai/Kimi-K2.5_/data/DataStore/models/exp/models": {
"model_id": "moonshotai/Kimi-K2.5",
"local_path": "/data/DataStore/models/exp/models/moonshotai/Kimi-K2.5",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"Qwen/Qwen3.5-397B-A17B-FP8_/data/DataStore/models/exp/models": {
"model_id": "Qwen/Qwen3.5-397B-A17B-FP8",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-397B-A17B-FP8",
"status": "downloaded",
"download_time": "2026-02-25T05:44:05.750740",
"upload_time": null,
"upload_repo_id": null
},
"Kimi-K2___5_/data/DataStore/models/exp/models/moonshotai": {
"model_id": "Kimi-K2___5",
"local_path": "/data/DataStore/models/exp/models/moonshotai/Kimi-K2___5",
"status": "downloaded",
"download_time": "2026-02-25T09:08:36.229119",
"upload_time": null,
"upload_repo_id": null
},
"Qwen3.5-397B-A17B-FP8_/data/DataStore/models/exp/models/Qwen": {
"model_id": "Qwen3.5-397B-A17B-FP8",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-397B-A17B-FP8",
"status": "uploaded",
"download_time": "2026-02-25T09:08:36.229180",
"upload_time": "2026-02-25T09:52:28.573598",
"upload_repo_id": "Qwen3.5-397B-A17B-FP8"
},
"moonshotai/Kimi-K2.5_/home/user/models": {
"model_id": "moonshotai/Kimi-K2.5",
"local_path": "/home/user/models/moonshotai/Kimi-K2.5",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"test/model_/tmp": {
"model_id": "test/model",
"local_path": "/tmp/test/model",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"Qwen/Qwen3.5-35B-A3B_/data/DataStore/models/exp/models": {
"model_id": "Qwen/Qwen3.5-35B-A3B",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-35B-A3B",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"Qwen/Qwen3.5-27B_/data/DataStore/models/exp/models": {
"model_id": "Qwen/Qwen3.5-27B",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-27B",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"Qwen/Qwen3.5-122B-A10B_/data/DataStore/models/exp/models": {
"model_id": "Qwen/Qwen3.5-122B-A10B",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-122B-A10B",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"Kimi-K2.5_/data/DataStore/models/exp/models/moonshotai": {
"model_id": "Kimi-K2.5",
"local_path": "/data/DataStore/models/exp/models/moonshotai/Kimi-K2.5",
"status": "failed",
"download_time": "2026-02-26T00:46:23.724967",
"upload_time": null,
"upload_repo_id": null
},
"Kimi-K2___5_/data/DataStore/models/exp/models": {
"model_id": "Kimi-K2___5",
"local_path": "/data/DataStore/models/exp/models/Kimi-K2___5",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"Qwen3.5-27B_/data/DataStore/models/exp/models/Qwen": {
"model_id": "Qwen3.5-27B",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-27B",
"status": "uploaded",
"download_time": "2026-02-26T15:12:41.148135",
"upload_time": "2026-02-26T15:18:30.857631",
"upload_repo_id": "Qwen3.5-27B"
},
"Qwen3.5-35B-A3B_/data/DataStore/models/exp/models/Qwen": {
"model_id": "Qwen3.5-35B-A3B",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-35B-A3B",
"status": "uploaded",
"download_time": "2026-02-27T09:13:18.834637",
"upload_time": "2026-02-27T09:38:03.664882",
"upload_repo_id": "Qwen3.5-35B-A3B"
}
}
\ No newline at end of file
# Linux模型管理工具
一个基于Web的模型管理工具,用于在Linux环境下下载、上传和管理ModelScope模型,并支持上传到CsgHub平台。
## 功能特点
1. **模型下载**
- 支持通过模型ID下载ModelScope模型
- 支持多个模型ID批量下载(用英文逗号分隔)
- 可自定义本地存放路径,支持设置默认路径
- 实时显示下载进度
- 下载失败自动重试(最多10次)
2. **模型上传**
- 自动列出所有已下载但未上传的模型
- 支持批量上传和单个模型上传
- 实时显示上传进度
3. **模型管理**
- 列出所有已下载的模型
- 显示模型状态、大小、下载时间等信息
- 支持删除选中的模型
4. **配置管理**
- 设置默认模型存放路径
- 配置最大重试次数
- 配置CsgHub连接信息
## 技术栈
- **前端**:HTML5, CSS3, JavaScript, Tailwind CSS, Font Awesome
- **后端**:Python, Flask, Flask-SocketIO
- **数据存储**:SQLite
## 安装与运行
### 前提条件
- Python 3.6+
- pip
### 安装步骤
1. 克隆或下载本项目代码
2. 进入项目目录
```bash
cd model_manager_webapp
```
3. 运行启动脚本
```bash
chmod +x start.sh
./start.sh
```
启动脚本会自动:
- 创建虚拟环境
- 安装所需依赖
- 启动Web应用
4. 打开浏览器访问
```
http://localhost:5000
```
## 使用说明
### 下载模型
1. 在"模型下载"标签页中,输入模型ID(多个模型ID用英文逗号分隔)
2. 选择本地存放路径(可选,默认使用配置中的路径)
3. 点击"开始下载"按钮
4. 查看下载进度和状态
### 上传模型
1. 切换到"模型上传"标签页
2. 选择要上传的模型(可多选)
3. 点击"上传选中"按钮
4. 查看上传进度和状态
### 管理模型
1. 切换到"模型管理"标签页
2. 查看所有已下载的模型列表
3. 可通过点击删除图标删除模型
4. 对于已下载但未上传的模型,可点击上传图标单独上传
### 配置应用
1. 点击顶部导航栏的"配置"按钮
2. 修改所需配置项
3. 点击"保存配置"按钮
## 注意事项
1. 本应用目前是一个演示版本,实际的模型下载和上传功能需要集成ModelScope SDK和pycsghub库
2. 当前版本使用模拟数据展示功能,实际部署时需要替换为真实的下载和上传逻辑
3. 确保应用有足够的权限访问指定的模型存放路径
## 后续开发计划
1. 集成ModelScope SDK实现真实的模型下载
2. 集成pycsghub实现真实的模型上传
3. 添加用户认证功能
4. 支持更多模型源
5. 优化批量操作性能
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
{
"DeepSeek-OCR-2_/data/DataStore/models/exp/models/deepseek-ai": {
"model_id": "DeepSeek-OCR-2",
"local_path": "/data/DataStore/models/exp/models/deepseek-ai/DeepSeek-OCR-2",
"status": "downloaded",
"download_time": "2026-02-24T20:14:04.793600",
"upload_time": null,
"upload_repo_id": null
},
"moonshotai/Kimi-K2.5_/data/DataStore/models/exp/models": {
"model_id": "moonshotai/Kimi-K2.5",
"local_path": "/data/DataStore/models/exp/models/moonshotai/Kimi-K2.5",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"Qwen/Qwen3.5-397B-A17B-FP8_/data/DataStore/models/exp/models": {
"model_id": "Qwen/Qwen3.5-397B-A17B-FP8",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-397B-A17B-FP8",
"status": "downloaded",
"download_time": "2026-02-25T05:44:05.750740",
"upload_time": null,
"upload_repo_id": null
},
"Kimi-K2___5_/data/DataStore/models/exp/models/moonshotai": {
"model_id": "Kimi-K2___5",
"local_path": "/data/DataStore/models/exp/models/moonshotai/Kimi-K2___5",
"status": "downloaded",
"download_time": "2026-02-25T09:08:36.229119",
"upload_time": null,
"upload_repo_id": null
},
"Qwen3.5-397B-A17B-FP8_/data/DataStore/models/exp/models/Qwen": {
"model_id": "Qwen3.5-397B-A17B-FP8",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-397B-A17B-FP8",
"status": "uploaded",
"download_time": "2026-02-25T09:08:36.229180",
"upload_time": "2026-02-25T09:52:28.573598",
"upload_repo_id": "Qwen3.5-397B-A17B-FP8"
},
"moonshotai/Kimi-K2.5_/home/user/models": {
"model_id": "moonshotai/Kimi-K2.5",
"local_path": "/home/user/models/moonshotai/Kimi-K2.5",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"test/model_/tmp": {
"model_id": "test/model",
"local_path": "/tmp/test/model",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"Qwen/Qwen3.5-35B-A3B_/data/DataStore/models/exp/models": {
"model_id": "Qwen/Qwen3.5-35B-A3B",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-35B-A3B",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"Qwen/Qwen3.5-27B_/data/DataStore/models/exp/models": {
"model_id": "Qwen/Qwen3.5-27B",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-27B",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"Qwen/Qwen3.5-122B-A10B_/data/DataStore/models/exp/models": {
"model_id": "Qwen/Qwen3.5-122B-A10B",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-122B-A10B",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"Kimi-K2.5_/data/DataStore/models/exp/models/moonshotai": {
"model_id": "Kimi-K2.5",
"local_path": "/data/DataStore/models/exp/models/moonshotai/Kimi-K2.5",
"status": "failed",
"download_time": "2026-02-26T00:46:23.724967",
"upload_time": null,
"upload_repo_id": null
},
"Kimi-K2___5_/data/DataStore/models/exp/models": {
"model_id": "Kimi-K2___5",
"local_path": "/data/DataStore/models/exp/models/Kimi-K2___5",
"status": "failed",
"download_time": null,
"upload_time": null,
"upload_repo_id": null
},
"Qwen3.5-27B_/data/DataStore/models/exp/models/Qwen": {
"model_id": "Qwen3.5-27B",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-27B",
"status": "uploaded",
"download_time": "2026-02-26T15:12:41.148135",
"upload_time": "2026-02-26T15:18:30.857631",
"upload_repo_id": "Qwen3.5-27B"
},
"Qwen3.5-35B-A3B_/data/DataStore/models/exp/models/Qwen": {
"model_id": "Qwen3.5-35B-A3B",
"local_path": "/data/DataStore/models/exp/models/Qwen/Qwen3.5-35B-A3B",
"status": "uploaded",
"download_time": "2026-02-27T09:13:18.834637",
"upload_time": "2026-02-27T09:38:03.664882",
"upload_repo_id": "Qwen3.5-35B-A3B"
}
}
\ No newline at end of file
This diff is collapsed.
Flask==2.0.1
Flask-SocketIO==5.1.1
eventlet==0.33.1
SQLAlchemy==1.4.23
Werkzeug==2.0.1
Jinja2==3.0.1
MarkupSafe==2.0.1
itsdangerous==2.0.1
click==8.0.1
python-engineio==4.2.1
python-socketio==5.4.0
greenlet==1.1.2
six==1.16.0
dnspython==2.2.1
\ No newline at end of file
#!/bin/bash
# 模型管理工具启动脚本
echo "========================================="
echo "Linux模型管理工具启动脚本"
echo "========================================="
# 检查Python版本
echo "检查Python版本..."
if ! command -v python3 &> /dev/null; then
echo "错误: 未找到Python3,请先安装Python3"
exit 1
fi
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}')
echo "已安装Python版本: $PYTHON_VERSION"
# 创建虚拟环境(如果不存在)
if [ ! -d "venv" ]; then
echo "创建Python虚拟环境..."
python3 -m venv venv
if [ $? -ne 0 ]; then
echo "错误: 创建虚拟环境失败"
exit 1
fi
fi
# 激活虚拟环境
echo "激活虚拟环境..."
if [ $? -ne 0 ]; then
echo "错误: 激活虚拟环境失败"
exit 1
fi
# 升级pip
echo "升级pip..."
pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
if [ $? -ne 0 ]; then
echo "警告: 升级pip失败"
fi
# 安装依赖
echo "安装依赖包..."
pip install flask flask-cors flask-socketio eventlet requests modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple
if [ $? -ne 0 ]; then
echo "警告: 安装依赖包失败,某些功能可能受限"
fi
# 创建必要的目录
echo "创建必要的目录..."
# mkdir -p ~/models
mkdir -p backend/static
mkdir -p backend/templates
# 检查端口是否被占用
PORT=2026
if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
echo "警告: 端口 $PORT 已被占用,请先关闭占用该端口的进程"
echo "您可以使用以下命令关闭占用端口的进程:"
echo "sudo lsof -t -i:$PORT | xargs kill -9"
read -p "是否继续启动?(y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi
# 启动应用
echo "========================================="
echo "启动模型管理工具..."
echo "访问地址: http://localhost:$PORT"
echo "========================================="
# 切换到backend目录
cd backend
# 启动Flask应用
python3 app.py
\ No newline at end of file
home = /usr/bin
include-system-site-packages = false
version = 3.10.12
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment