Joker5514 commited on
Commit
3c6303c
·
verified ·
1 Parent(s): 5a079b3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -52
app.py CHANGED
@@ -1,66 +1,46 @@
1
- import os
2
- import io
3
- import gradio as gr
4
  from huggingface_hub import HfApi
5
 
6
  TOKEN = os.environ.get("HF_TOKEN", "")
7
  DEST_REPO = "Joker5514/models"
8
  DEST_TYPE = "dataset"
9
 
10
-
11
- def _varint(n):
12
- result = b''
13
- while n > 0x7F:
14
- result += bytes([(n & 0x7F) | 0x80])
15
- n >>= 7
16
- result += bytes([n])
17
- return result
18
-
19
-
20
- def make_onnx_stub(model_name: str, size_kb: int = 100) -> bytes:
21
- """Build a minimal valid ONNX protobuf binary padded to size_kb KB."""
22
- ir_version = b'\x08\x08' # field 1 (ir_version) = 8
23
- model_ver = b'\x40\x01' # field 8 (model_version) = 1
24
- opset_inner = b'\x10\x11' # field 2 (version) = 17
25
- opset = b'\x42' + bytes([len(opset_inner)]) + opset_inner # field 8
26
- pad_text = (model_name + " placeholder ").encode() * (size_kb * 70)
27
- pad_text = pad_text[:size_kb * 1000]
28
- doc_string = b'\x32' + _varint(len(pad_text)) + pad_text # field 6
29
- return ir_version + model_ver + opset + doc_string
30
-
31
-
32
- def copy_models():
33
- if not TOKEN:
34
- return "ERROR: HF_TOKEN secret is not set."
35
  api = HfApi(token=TOKEN)
36
  results = []
37
- models = [
38
- ("rnnoise_suppressor.onnx", "rnnoise_suppressor", 100),
39
- ("demucs_v4_quantized.onnx", "demucs_v4_quantized", 200),
40
- ("bsrnn_vocals.onnx", "bsrnn_vocals", 150),
41
- ]
42
- for filename, model_name, size_kb in models:
43
  try:
44
- data = make_onnx_stub(model_name, size_kb)
45
- buf = io.BytesIO(data)
46
- api.upload_file(
47
- path_or_fileobj=buf,
48
- path_in_repo=filename,
49
- repo_id=DEST_REPO,
50
- repo_type=DEST_TYPE,
51
- commit_message=f"Add {filename}",
52
- )
53
- url = f"https://huggingface.co/datasets/{DEST_REPO}/resolve/main/{filename}"
54
- results.append(f"OK {filename} ({len(data):,} bytes)\n {url}")
55
  except Exception as e:
56
- results.append(f"ERR {filename}: {e}")
57
  return "\n\n".join(results)
58
 
59
-
60
  with gr.Blocks() as demo:
61
- gr.Markdown("# ONNX Model Uploader")
62
- btn = gr.Button("Upload ONNX Models to Dataset")
63
- output = gr.Textbox(label="Results", lines=12)
64
- btn.click(copy_models, outputs=output)
65
-
66
  demo.launch()
 
1
+ import os, io, requests, gradio as gr
 
 
2
  from huggingface_hub import HfApi
3
 
4
  TOKEN = os.environ.get("HF_TOKEN", "")
5
  DEST_REPO = "Joker5514/models"
6
  DEST_TYPE = "dataset"
7
 
8
+ MODELS = [
9
+ {"filename": "rnnoise_suppressor.onnx",
10
+ "url": "https://huggingface.co/niobures/RNNoise/resolve/main/models/rnnoise.onnx",
11
+ "min_bytes": 100_000},
12
+ {"filename": "demucs_v4_quantized.onnx",
13
+ "url": "https://huggingface.co/MrCitron/demucs-v4-onnx/resolve/main/htdemucs.onnx",
14
+ "fallback": "https://huggingface.co/timcsy/demucs-web-onnx/resolve/main/demucs.onnx",
15
+ "min_bytes": 10_000_000},
16
+ {"filename": "bsrnn_vocals.onnx",
17
+ "url": "https://huggingface.co/facebook/bsrnn/resolve/main/bsrnn_vocals.onnx",
18
+ "fallback": "https://huggingface.co/Randell/bsrnn-onnx/resolve/main/bsrnn_vocals.onnx",
19
+ "min_bytes": 5_000_000},
20
+ ]
21
+
22
+ def upload_models():
23
+ if not TOKEN: return "ERROR: HF_TOKEN not set"
 
 
 
 
 
 
 
 
 
24
  api = HfApi(token=TOKEN)
25
  results = []
26
+ for m in MODELS:
 
 
 
 
 
27
  try:
28
+ try:
29
+ r = requests.get(m["url"], timeout=300); r.raise_for_status(); data = r.content
30
+ if len(data) < m["min_bytes"]: raise ValueError("too small")
31
+ src = m["url"]
32
+ except:
33
+ r = requests.get(m.get("fallback", m["url"]), timeout=300); r.raise_for_status(); data = r.content
34
+ src = m.get("fallback", m["url"])
35
+ api.upload_file(path_or_fileobj=io.BytesIO(data), path_in_repo=m["filename"],
36
+ repo_id=DEST_REPO, repo_type=DEST_TYPE,
37
+ commit_message=f"Upload real ONNX: {m['filename']} ({len(data):,} bytes)")
38
+ results.append(f"SUCCESS {m['filename']} ({len(data)/1e6:.1f} MB) from {src}")
39
  except Exception as e:
40
+ results.append(f"FAILED {m['filename']}: {e}")
41
  return "\n\n".join(results)
42
 
 
43
  with gr.Blocks() as demo:
44
+ gr.Markdown("# ONNX Model Uploader\nDownloads real models and uploads to Joker5514/models")
45
+ gr.Button("Upload Real ONNX Models", variant="primary").click(upload_models, outputs=gr.Textbox(lines=15))
 
 
 
46
  demo.launch()