README.md 4.73 KB
Newer Older
wangkx1's avatar
wangkx1 committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# 模型下载管理器

一个基于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界面

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

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

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