Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
Félix Marty
commited on
Commit
·
025ff03
1
Parent(s):
9005b4d
update space
Browse files- app.py +1 -17
- onnx_export.py +2 -32
- requirements.txt +2 -2
app.py
CHANGED
|
@@ -61,7 +61,7 @@ def onnx_export(token: str, model_id: str, task: str, opset: Union[int, str]) ->
|
|
| 61 |
|
| 62 |
pr_revision = commit_info.pr_revision.replace("/", "%2F")
|
| 63 |
|
| 64 |
-
return f"#### Success 🔥 Yay! This model was successfully exported and a PR was open using your token, here: [{commit_info.pr_url}]({commit_info.pr_url}). If you would like to use the exported model without waiting for the PR to be approved, head to "
|
| 65 |
except Exception as e:
|
| 66 |
return f"#### Error: {e}"
|
| 67 |
|
|
@@ -151,20 +151,4 @@ with gr.Blocks() as demo:
|
|
| 151 |
outputs=output,
|
| 152 |
)
|
| 153 |
|
| 154 |
-
"""
|
| 155 |
-
demo = gr.Interface(
|
| 156 |
-
title="",
|
| 157 |
-
description=DESCRIPTION,
|
| 158 |
-
allow_flagging="never",
|
| 159 |
-
article="Check out the [🤗 Optimum repoository on GitHub](https://github.com/huggingface/optimum) as well!",
|
| 160 |
-
inputs=[
|
| 161 |
-
gr.Text(max_lines=1, label="Hugging Face token"),
|
| 162 |
-
gr.Text(max_lines=1, label="Model name", placeholder="textattack/distilbert-base-cased-CoLA"),
|
| 163 |
-
gr.Text(value="auto", max_lines=1, label="Task (can be left blank, will be automatically inferred)")
|
| 164 |
-
],
|
| 165 |
-
outputs=[gr.Markdown(label="output")],
|
| 166 |
-
fn=onnx_export,
|
| 167 |
-
)
|
| 168 |
-
"""
|
| 169 |
-
|
| 170 |
demo.launch()
|
|
|
|
| 61 |
|
| 62 |
pr_revision = commit_info.pr_revision.replace("/", "%2F")
|
| 63 |
|
| 64 |
+
return f"#### Success 🔥 Yay! This model was successfully exported and a PR was open using your token, here: [{commit_info.pr_url}]({commit_info.pr_url}). If you would like to use the exported model without waiting for the PR to be approved, head to https://huggingface.co/{model_id}/tree/{pr_revision}"
|
| 65 |
except Exception as e:
|
| 66 |
return f"#### Error: {e}"
|
| 67 |
|
|
|
|
| 151 |
outputs=output,
|
| 152 |
)
|
| 153 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 154 |
demo.launch()
|
onnx_export.py
CHANGED
|
@@ -1,4 +1,3 @@
|
|
| 1 |
-
import argparse
|
| 2 |
import os
|
| 3 |
import shutil
|
| 4 |
from tempfile import TemporaryDirectory
|
|
@@ -10,9 +9,8 @@ from huggingface_hub import (
|
|
| 10 |
)
|
| 11 |
from huggingface_hub.file_download import repo_folder_name
|
| 12 |
from optimum.exporters.onnx import main_export
|
| 13 |
-
from optimum.exporters.tasks import TasksManager
|
| 14 |
|
| 15 |
-
SPACES_URL = "https://huggingface.co/spaces/
|
| 16 |
|
| 17 |
|
| 18 |
def previous_pr(api: "HfApi", model_id: str, pr_title: str) -> Optional["Discussion"]:
|
|
@@ -84,7 +82,7 @@ def convert(
|
|
| 84 |
try:
|
| 85 |
pr = previous_pr(api, model_id, pr_title)
|
| 86 |
if "model.onnx" in filenames and not force:
|
| 87 |
-
raise Exception(f"Model {model_id} is already converted, skipping
|
| 88 |
elif pr is not None and not force:
|
| 89 |
url = f"https://huggingface.co/{model_id}/discussions/{pr.num}"
|
| 90 |
new_pr = pr
|
|
@@ -111,31 +109,3 @@ The exported ONNX model can be then be consumed by various backends as TensorRT
|
|
| 111 |
finally:
|
| 112 |
shutil.rmtree(folder)
|
| 113 |
return "0", new_pr
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
if __name__ == "__main__":
|
| 117 |
-
DESCRIPTION = """
|
| 118 |
-
Simple utility tool to convert automatically a model on the hub to onnx format.
|
| 119 |
-
It is PyTorch exclusive for now.
|
| 120 |
-
It works by downloading the weights (PT), converting them locally, and uploading them back
|
| 121 |
-
as a PR on the hub.
|
| 122 |
-
"""
|
| 123 |
-
parser = argparse.ArgumentParser(description=DESCRIPTION)
|
| 124 |
-
parser.add_argument(
|
| 125 |
-
"--model_id",
|
| 126 |
-
type=str,
|
| 127 |
-
help="The name of the model on the hub to convert. E.g. `gpt2` or `facebook/wav2vec2-base-960h`",
|
| 128 |
-
)
|
| 129 |
-
parser.add_argument(
|
| 130 |
-
"--task",
|
| 131 |
-
type=str,
|
| 132 |
-
help="The task the model is performing",
|
| 133 |
-
)
|
| 134 |
-
parser.add_argument(
|
| 135 |
-
"--force",
|
| 136 |
-
action="store_true",
|
| 137 |
-
help="Create the PR even if it already exists of if the model was already converted.",
|
| 138 |
-
)
|
| 139 |
-
args = parser.parse_args()
|
| 140 |
-
api = HfApi()
|
| 141 |
-
convert(api, args.model_id, task=args.task, force=args.force)
|
|
|
|
|
|
|
| 1 |
import os
|
| 2 |
import shutil
|
| 3 |
from tempfile import TemporaryDirectory
|
|
|
|
| 9 |
)
|
| 10 |
from huggingface_hub.file_download import repo_folder_name
|
| 11 |
from optimum.exporters.onnx import main_export
|
|
|
|
| 12 |
|
| 13 |
+
SPACES_URL = "https://huggingface.co/spaces/onnx/export"
|
| 14 |
|
| 15 |
|
| 16 |
def previous_pr(api: "HfApi", model_id: str, pr_title: str) -> Optional["Discussion"]:
|
|
|
|
| 82 |
try:
|
| 83 |
pr = previous_pr(api, model_id, pr_title)
|
| 84 |
if "model.onnx" in filenames and not force:
|
| 85 |
+
raise Exception(f"Model {model_id} is already converted, skipping the export.")
|
| 86 |
elif pr is not None and not force:
|
| 87 |
url = f"https://huggingface.co/{model_id}/discussions/{pr.num}"
|
| 88 |
new_pr = pr
|
|
|
|
| 109 |
finally:
|
| 110 |
shutil.rmtree(folder)
|
| 111 |
return "0", new_pr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
requirements.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
torch
|
| 2 |
transformers
|
| 3 |
-
|
| 4 |
-
|
|
|
|
| 1 |
torch
|
| 2 |
transformers
|
| 3 |
+
huggingface_hub
|
| 4 |
+
optimum[onnxruntime,exporters]>=1.9.0
|