# 模型下载管理器

一个基于Gradio的模型下载、上传和管理工具，支持ModelScope模型下载和CsgHub上传。

## 功能特点

### 1. 模型下载
- 支持通过模型ID下载ModelScope模型
- 任务优先级管理（0-10，数字越大优先级越高）
- 每次仅同时下载一个模型
- 预估远程模型大小
- 根据文件数量显示下载进度
- 支持暂停、恢复、删除下载任务

### 2. 模型上传
- 上传本地模型到CsgHub平台
- 显示上传进度（按文件数量）
- 已上传的模型自动变灰显示在页面底部
- 支持暂停、恢复、删除上传任务

### 3. 本地模型管理
- 显示本地所有已下载/已上传的模型
- 支持删除本地模型
- 已上传的模型有特殊标记

### 4. 自动操作
- 下载后自动上传（可配置）
- 上传后自动删除本地文件（可配置）

### 5. 配置管理
- 设置本地模型存储目录
- 配置最大同时下载/上传数
- 配置CsgHub连接信息
- 配置自动操作选项

## 安装与运行

### 前提条件
- Python 3.7+
- pip

### 安装步骤

1. 进入项目目录
```bash
cd /data/DataStore/models/exp-net/new-moon
```

2. 安装依赖
```bash
pip install -r requirements.txt
```

3. 启动应用
```bash
python start_manager.py
```

或者直接运行：
```bash
python model_download_manager.py
```

### 快速启动
```bash
cd /data/DataStore/models/exp-net/new-moon && python start_manager.py
```

## 使用说明

### 首次使用
1. 打开浏览器访问：`http://localhost:7860`
2. 在顶部配置面板中设置本地目录路径
3. 点击"设置目录"保存配置

### 下载模型
1. 切换到"📥 下载"标签页
2. 输入模型ID（例如：`Qwen/Qwen2.5-7B-Instruct`）
3. 设置优先级（可选，默认0）
4. 点击"添加下载任务"
5. 在任务列表中查看下载进度

### 上传模型
1. 切换到"📤 上传"标签页
2. 输入已下载的模型ID
3. 点击"添加上传任务"
4. 在任务列表中查看上传进度

### 管理本地模型
1. 切换到"💾 本地模型"标签页
2. 查看本地所有模型列表
3. 点击"上传"按钮上传未上传的模型
4. 点击"删除"按钮删除本地模型

### 配置选项
- **本地目录**: 模型存储路径
- **下载后自动上传**: 下载完成后自动开始上传
- **上传后自动删除**: 上传完成后自动删除本地文件
- **最大同时下载数**: 控制并发下载数量（默认1）
- **最大同时上传数**: 控制并发上传数量（默认1）

## 注意事项

1. **首次使用**: 必须设置本地目录才能正常使用
2. **模型ID格式**: 使用`组织/模型名`格式，如`Qwen/Qwen2.5-7B-Instruct`
3. **网络连接**: 确保可以访问ModelScope和CsgHub服务
4. **磁盘空间**: 确保有足够的磁盘空间存储模型
5. **权限**: 确保有读写本地目录的权限

## 故障排除

### 常见问题

1. **无法启动应用**
   - 检查Python版本：`python --version`
   - 检查依赖安装：`pip list | grep gradio`

2. **下载失败**
   - 检查网络连接
   - 检查模型ID是否正确
   - 检查磁盘空间

3. **上传失败**
   - 检查CsgHub服务是否可用
   - 检查token配置是否正确
   - 检查本地模型是否存在

4. **界面无法加载**
   - 检查端口7860是否被占用
   - 尝试重启应用

### 日志查看
应用运行日志会输出到控制台，包含：
- 任务状态更新
- 下载/上传进度
- 错误信息

## 配置说明

### 配置文件
- `model_manager_config.json`: 应用配置文件
- `model_manager_state.json`: 任务状态文件

### 默认配置
```json
{
  "local_dir": "",
  "max_concurrent_downloads": 1,
  "max_concurrent_uploads": 1,
  "auto_upload_after_download": false,
  "auto_delete_after_upload": false,
  "csghub_config": {
    "base_url": "http://10.17.27.227:4997",
    "token": "f5dad38a9426410aa861155cd184f84a",
    "repo_type": "model",
    "revision": "main"
  }
}
```

## 开发说明

### 项目结构
```
new-moon/
├── model_download_manager.py    # 主程序
├── start_manager.py             # 启动脚本
├── requirements.txt             # 依赖列表
├── model_manager_config.json    # 配置文件
├── model_manager_state.json     # 状态文件
└── README.md                    # 说明文档
```

### 核心模块
1. **GlobalState**: 全局状态管理
2. **DownloadTask/UploadTask**: 任务管理
3. **download_worker/upload_worker**: 工作线程
4. **create_interface()**: Gradio界面

### 扩展功能
如需扩展功能，可以修改以下部分：
- 添加新的模型源
- 支持更多上传平台
- 增加模型转换功能
- 添加批量操作功能

## 许可证
本项目基于现有代码库开发，遵循原有许可证。

## 支持
如有问题或建议，请联系项目维护者。