Update app.py
Browse files
app.py
CHANGED
|
@@ -8,7 +8,6 @@ from tqdm import tqdm
|
|
| 8 |
from huggingface_hub import login, create_repo, HfApi
|
| 9 |
import subprocess
|
| 10 |
import math
|
| 11 |
-
from dotenv import load_dotenv
|
| 12 |
import gradio as gr
|
| 13 |
import threading
|
| 14 |
import queue
|
|
@@ -86,10 +85,10 @@ def check_system_resources(model_name):
|
|
| 86 |
else:
|
| 87 |
raise MemoryError(f"❌ 系统内存不足 (需要 {required_memory_gb:.1f}GB, 可用 {available_memory_gb:.1f}GB)")
|
| 88 |
|
| 89 |
-
def setup_environment(model_name):
|
| 90 |
"""设置环境并返回设备信息"""
|
| 91 |
-
|
| 92 |
-
|
| 93 |
if not hf_token:
|
| 94 |
raise ValueError("请在环境变量中设置HF_TOKEN")
|
| 95 |
login(hf_token)
|
|
@@ -98,10 +97,10 @@ def setup_environment(model_name):
|
|
| 98 |
device, available_memory = check_system_resources(model_name)
|
| 99 |
return device
|
| 100 |
|
| 101 |
-
def create_hf_repo(repo_name, private=True):
|
| 102 |
"""创建HuggingFace仓库"""
|
| 103 |
try:
|
| 104 |
-
repo_url = create_repo(repo_name, private=private)
|
| 105 |
log(f"创建仓库成功: {repo_url}")
|
| 106 |
return repo_url
|
| 107 |
except Exception as e:
|
|
@@ -204,17 +203,17 @@ def quantize_and_push_model(model_path, repo_id, bits=8):
|
|
| 204 |
log(f"量化或上传过程中出错: {str(e)}")
|
| 205 |
raise
|
| 206 |
|
| 207 |
-
def process_model(base_model, lora_model, repo_name, progress=gr.Progress()):
|
| 208 |
"""处理模型的主函数,用于Gradio界面"""
|
| 209 |
try:
|
| 210 |
# 清空之前的日志
|
| 211 |
current_logs.clear()
|
| 212 |
|
| 213 |
# 设置环境和检查资源
|
| 214 |
-
device = setup_environment(base_model)
|
| 215 |
|
| 216 |
# 创建HuggingFace仓库
|
| 217 |
-
repo_url = create_hf_repo(repo_name)
|
| 218 |
|
| 219 |
# 设置输出目录
|
| 220 |
output_dir = os.path.join(".", "output", repo_name)
|
|
@@ -256,7 +255,7 @@ def create_ui():
|
|
| 256 |
with gr.Column():
|
| 257 |
base_model = gr.Textbox(
|
| 258 |
label="基础模型路径",
|
| 259 |
-
placeholder="例如: Qwen/Qwen2.5-
|
| 260 |
value="Qwen/Qwen2.5-7B-Instruct"
|
| 261 |
)
|
| 262 |
lora_model = gr.Textbox(
|
|
@@ -267,6 +266,10 @@ def create_ui():
|
|
| 267 |
label="HuggingFace仓库名称",
|
| 268 |
placeholder="输入要创建的仓库名称"
|
| 269 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 270 |
convert_btn = gr.Button("开始转换", variant="primary")
|
| 271 |
|
| 272 |
with gr.Column():
|
|
@@ -281,7 +284,7 @@ def create_ui():
|
|
| 281 |
# 设置事件处理
|
| 282 |
convert_btn.click(
|
| 283 |
fn=process_model,
|
| 284 |
-
inputs=[base_model, lora_model, repo_name],
|
| 285 |
outputs=output
|
| 286 |
)
|
| 287 |
|
|
|
|
| 8 |
from huggingface_hub import login, create_repo, HfApi
|
| 9 |
import subprocess
|
| 10 |
import math
|
|
|
|
| 11 |
import gradio as gr
|
| 12 |
import threading
|
| 13 |
import queue
|
|
|
|
| 85 |
else:
|
| 86 |
raise MemoryError(f"❌ 系统内存不足 (需要 {required_memory_gb:.1f}GB, 可用 {available_memory_gb:.1f}GB)")
|
| 87 |
|
| 88 |
+
def setup_environment(model_name, hf_token):
|
| 89 |
"""设置环境并返回设备信息"""
|
| 90 |
+
if not hf_token:
|
| 91 |
+
hf_token = os.getenv('HF_TOKEN', None) # try to get from env
|
| 92 |
if not hf_token:
|
| 93 |
raise ValueError("请在环境变量中设置HF_TOKEN")
|
| 94 |
login(hf_token)
|
|
|
|
| 97 |
device, available_memory = check_system_resources(model_name)
|
| 98 |
return device
|
| 99 |
|
| 100 |
+
def create_hf_repo(repo_name, hf_token, private=True):
|
| 101 |
"""创建HuggingFace仓库"""
|
| 102 |
try:
|
| 103 |
+
repo_url = create_repo(repo_name, private=private, token=hf_token)
|
| 104 |
log(f"创建仓库成功: {repo_url}")
|
| 105 |
return repo_url
|
| 106 |
except Exception as e:
|
|
|
|
| 203 |
log(f"量化或上传过程中出错: {str(e)}")
|
| 204 |
raise
|
| 205 |
|
| 206 |
+
def process_model(base_model, lora_model, repo_name, hf_token, progress=gr.Progress()):
|
| 207 |
"""处理模型的主函数,用于Gradio界面"""
|
| 208 |
try:
|
| 209 |
# 清空之前的日志
|
| 210 |
current_logs.clear()
|
| 211 |
|
| 212 |
# 设置环境和检查资源
|
| 213 |
+
device = setup_environment(base_model, hf_token)
|
| 214 |
|
| 215 |
# 创建HuggingFace仓库
|
| 216 |
+
repo_url = create_hf_repo(repo_name, hf_token)
|
| 217 |
|
| 218 |
# 设置输出目录
|
| 219 |
output_dir = os.path.join(".", "output", repo_name)
|
|
|
|
| 255 |
with gr.Column():
|
| 256 |
base_model = gr.Textbox(
|
| 257 |
label="基础模型路径",
|
| 258 |
+
placeholder="例如: Qwen/Qwen2.5-14B-Instruct",
|
| 259 |
value="Qwen/Qwen2.5-7B-Instruct"
|
| 260 |
)
|
| 261 |
lora_model = gr.Textbox(
|
|
|
|
| 266 |
label="HuggingFace仓库名称",
|
| 267 |
placeholder="输入要创建的仓库名称"
|
| 268 |
)
|
| 269 |
+
hf_token = gr.Textbox(
|
| 270 |
+
label="HuggingFace Token",
|
| 271 |
+
placeholder="输入你的HuggingFace Token"
|
| 272 |
+
)
|
| 273 |
convert_btn = gr.Button("开始转换", variant="primary")
|
| 274 |
|
| 275 |
with gr.Column():
|
|
|
|
| 284 |
# 设置事件处理
|
| 285 |
convert_btn.click(
|
| 286 |
fn=process_model,
|
| 287 |
+
inputs=[base_model, lora_model, repo_name, hf_token],
|
| 288 |
outputs=output
|
| 289 |
)
|
| 290 |
|