Spaces:
Runtime error
Runtime error
Fix quality
Browse files
app.py
CHANGED
|
@@ -34,9 +34,9 @@ TASK_TO_ID = {
|
|
| 34 |
SUPPORTED_TASKS = list(TASK_TO_ID.keys())
|
| 35 |
|
| 36 |
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
st.title("Evaluation as a Service")
|
| 41 |
st.markdown(
|
| 42 |
"""
|
|
@@ -65,18 +65,22 @@ if metadata is None:
|
|
| 65 |
st.warning("No evaluation metadata found. Please configure the evaluation job below.")
|
| 66 |
|
| 67 |
with st.expander("Advanced configuration"):
|
| 68 |
-
|
| 69 |
selected_task = st.selectbox(
|
| 70 |
"Select a task",
|
| 71 |
SUPPORTED_TASKS,
|
| 72 |
index=SUPPORTED_TASKS.index(metadata[0]["task_id"]) if metadata is not None else 0,
|
| 73 |
)
|
| 74 |
-
|
| 75 |
configs = get_dataset_config_names(selected_dataset)
|
| 76 |
selected_config = st.selectbox("Select a config", configs)
|
| 77 |
|
| 78 |
-
|
| 79 |
-
splits_resp = http_get(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 80 |
if splits_resp.status_code == 200:
|
| 81 |
split_names = []
|
| 82 |
all_splits = splits_resp.json()
|
|
@@ -90,11 +94,15 @@ with st.expander("Advanced configuration"):
|
|
| 90 |
index=split_names.index(metadata[0]["splits"]["eval_split"]) if metadata is not None else 0,
|
| 91 |
)
|
| 92 |
|
| 93 |
-
|
| 94 |
rows_resp = http_get(
|
| 95 |
path="/rows",
|
| 96 |
domain=DATASETS_PREVIEW_API,
|
| 97 |
-
params={
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
).json()
|
| 99 |
col_names = list(pd.json_normalize(rows_resp["rows"][0]["row"]).columns)
|
| 100 |
|
|
@@ -136,7 +144,7 @@ with st.expander("Advanced configuration"):
|
|
| 136 |
st.markdown("`tags` column")
|
| 137 |
with col2:
|
| 138 |
tokens_col = st.selectbox(
|
| 139 |
-
"This column should contain the
|
| 140 |
col_names,
|
| 141 |
index=col_names.index(get_key(metadata[0]["col_mapping"], "tokens")) if metadata is not None else 0,
|
| 142 |
)
|
|
@@ -247,7 +255,11 @@ with st.form(key="form"):
|
|
| 247 |
print("Selected models:", selected_models)
|
| 248 |
|
| 249 |
selected_models = filter_evaluated_models(
|
| 250 |
-
selected_models,
|
|
|
|
|
|
|
|
|
|
|
|
|
| 251 |
)
|
| 252 |
print("Selected models:", selected_models)
|
| 253 |
|
|
@@ -278,7 +290,10 @@ with st.form(key="form"):
|
|
| 278 |
}
|
| 279 |
print(f"Payload: {payload}")
|
| 280 |
project_json_resp = http_post(
|
| 281 |
-
path="/projects/create",
|
|
|
|
|
|
|
|
|
|
| 282 |
).json()
|
| 283 |
print(project_json_resp)
|
| 284 |
|
|
@@ -293,7 +308,11 @@ with st.form(key="form"):
|
|
| 293 |
payload=payload,
|
| 294 |
token=HF_TOKEN,
|
| 295 |
domain=AUTOTRAIN_BACKEND_API,
|
| 296 |
-
params={
|
|
|
|
|
|
|
|
|
|
|
|
|
| 297 |
).json()
|
| 298 |
print(data_json_resp)
|
| 299 |
if data_json_resp["download_status"] == 1:
|
|
@@ -306,10 +325,11 @@ with st.form(key="form"):
|
|
| 306 |
if train_json_resp["success"]:
|
| 307 |
st.success(f"β
Successfully submitted evaluation job with project ID {project_id}")
|
| 308 |
st.markdown(
|
| 309 |
-
|
| 310 |
Evaluation takes appoximately 1 hour to complete, so grab a β or π΅ while you wait:
|
| 311 |
|
| 312 |
-
* π Click [here](https://huggingface.co/spaces/autoevaluate/leaderboards) to view the
|
|
|
|
| 313 |
"""
|
| 314 |
)
|
| 315 |
else:
|
|
|
|
| 34 |
SUPPORTED_TASKS = list(TASK_TO_ID.keys())
|
| 35 |
|
| 36 |
|
| 37 |
+
#######
|
| 38 |
+
# APP #
|
| 39 |
+
#######
|
| 40 |
st.title("Evaluation as a Service")
|
| 41 |
st.markdown(
|
| 42 |
"""
|
|
|
|
| 65 |
st.warning("No evaluation metadata found. Please configure the evaluation job below.")
|
| 66 |
|
| 67 |
with st.expander("Advanced configuration"):
|
| 68 |
+
# Select task
|
| 69 |
selected_task = st.selectbox(
|
| 70 |
"Select a task",
|
| 71 |
SUPPORTED_TASKS,
|
| 72 |
index=SUPPORTED_TASKS.index(metadata[0]["task_id"]) if metadata is not None else 0,
|
| 73 |
)
|
| 74 |
+
# Select config
|
| 75 |
configs = get_dataset_config_names(selected_dataset)
|
| 76 |
selected_config = st.selectbox("Select a config", configs)
|
| 77 |
|
| 78 |
+
# Select splits
|
| 79 |
+
splits_resp = http_get(
|
| 80 |
+
path="/splits",
|
| 81 |
+
domain=DATASETS_PREVIEW_API,
|
| 82 |
+
params={"dataset": selected_dataset},
|
| 83 |
+
)
|
| 84 |
if splits_resp.status_code == 200:
|
| 85 |
split_names = []
|
| 86 |
all_splits = splits_resp.json()
|
|
|
|
| 94 |
index=split_names.index(metadata[0]["splits"]["eval_split"]) if metadata is not None else 0,
|
| 95 |
)
|
| 96 |
|
| 97 |
+
# Select columns
|
| 98 |
rows_resp = http_get(
|
| 99 |
path="/rows",
|
| 100 |
domain=DATASETS_PREVIEW_API,
|
| 101 |
+
params={
|
| 102 |
+
"dataset": selected_dataset,
|
| 103 |
+
"config": selected_config,
|
| 104 |
+
"split": selected_split,
|
| 105 |
+
},
|
| 106 |
).json()
|
| 107 |
col_names = list(pd.json_normalize(rows_resp["rows"][0]["row"]).columns)
|
| 108 |
|
|
|
|
| 144 |
st.markdown("`tags` column")
|
| 145 |
with col2:
|
| 146 |
tokens_col = st.selectbox(
|
| 147 |
+
"This column should contain the array of tokens",
|
| 148 |
col_names,
|
| 149 |
index=col_names.index(get_key(metadata[0]["col_mapping"], "tokens")) if metadata is not None else 0,
|
| 150 |
)
|
|
|
|
| 255 |
print("Selected models:", selected_models)
|
| 256 |
|
| 257 |
selected_models = filter_evaluated_models(
|
| 258 |
+
selected_models,
|
| 259 |
+
selected_task,
|
| 260 |
+
selected_dataset,
|
| 261 |
+
selected_config,
|
| 262 |
+
selected_split,
|
| 263 |
)
|
| 264 |
print("Selected models:", selected_models)
|
| 265 |
|
|
|
|
| 290 |
}
|
| 291 |
print(f"Payload: {payload}")
|
| 292 |
project_json_resp = http_post(
|
| 293 |
+
path="/projects/create",
|
| 294 |
+
payload=payload,
|
| 295 |
+
token=HF_TOKEN,
|
| 296 |
+
domain=AUTOTRAIN_BACKEND_API,
|
| 297 |
).json()
|
| 298 |
print(project_json_resp)
|
| 299 |
|
|
|
|
| 308 |
payload=payload,
|
| 309 |
token=HF_TOKEN,
|
| 310 |
domain=AUTOTRAIN_BACKEND_API,
|
| 311 |
+
params={
|
| 312 |
+
"type": "dataset",
|
| 313 |
+
"config_name": selected_config,
|
| 314 |
+
"split_name": selected_split,
|
| 315 |
+
},
|
| 316 |
).json()
|
| 317 |
print(data_json_resp)
|
| 318 |
if data_json_resp["download_status"] == 1:
|
|
|
|
| 325 |
if train_json_resp["success"]:
|
| 326 |
st.success(f"β
Successfully submitted evaluation job with project ID {project_id}")
|
| 327 |
st.markdown(
|
| 328 |
+
"""
|
| 329 |
Evaluation takes appoximately 1 hour to complete, so grab a β or π΅ while you wait:
|
| 330 |
|
| 331 |
+
* π Click [here](https://huggingface.co/spaces/autoevaluate/leaderboards) to view the \
|
| 332 |
+
results from your submission
|
| 333 |
"""
|
| 334 |
)
|
| 335 |
else:
|
utils.py
CHANGED
|
@@ -27,7 +27,11 @@ def http_post(path: str, token: str, payload=None, domain: str = None, params=No
|
|
| 27 |
"""HTTP POST request to the AutoNLP API, raises UnreachableAPIError if the API cannot be reached"""
|
| 28 |
try:
|
| 29 |
response = requests.post(
|
| 30 |
-
url=domain + path,
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
)
|
| 32 |
except requests.exceptions.ConnectionError:
|
| 33 |
print("β Failed to reach AutoNLP API, check your internet connection")
|
|
@@ -39,7 +43,10 @@ def http_get(path: str, domain: str, token: str = None, params: dict = None) ->
|
|
| 39 |
"""HTTP POST request to the AutoNLP API, raises UnreachableAPIError if the API cannot be reached"""
|
| 40 |
try:
|
| 41 |
response = requests.get(
|
| 42 |
-
url=domain + path,
|
|
|
|
|
|
|
|
|
|
| 43 |
)
|
| 44 |
except requests.exceptions.ConnectionError:
|
| 45 |
print("β Failed to reach AutoNLP API, check your internet connection")
|
|
@@ -58,7 +65,9 @@ def get_metadata(dataset_name: str) -> Union[Dict, None]:
|
|
| 58 |
def get_compatible_models(task, dataset_name):
|
| 59 |
# TODO: relax filter on PyTorch models once supported in AutoTrain
|
| 60 |
filt = ModelFilter(
|
| 61 |
-
task=AUTOTRAIN_TASK_TO_HUB_TASK[task],
|
|
|
|
|
|
|
| 62 |
)
|
| 63 |
compatible_models = api.list_models(filter=filt)
|
| 64 |
return [model.modelId for model in compatible_models]
|
|
|
|
| 27 |
"""HTTP POST request to the AutoNLP API, raises UnreachableAPIError if the API cannot be reached"""
|
| 28 |
try:
|
| 29 |
response = requests.post(
|
| 30 |
+
url=domain + path,
|
| 31 |
+
json=payload,
|
| 32 |
+
headers=get_auth_headers(token=token),
|
| 33 |
+
allow_redirects=True,
|
| 34 |
+
params=params,
|
| 35 |
)
|
| 36 |
except requests.exceptions.ConnectionError:
|
| 37 |
print("β Failed to reach AutoNLP API, check your internet connection")
|
|
|
|
| 43 |
"""HTTP POST request to the AutoNLP API, raises UnreachableAPIError if the API cannot be reached"""
|
| 44 |
try:
|
| 45 |
response = requests.get(
|
| 46 |
+
url=domain + path,
|
| 47 |
+
headers=get_auth_headers(token=token),
|
| 48 |
+
allow_redirects=True,
|
| 49 |
+
params=params,
|
| 50 |
)
|
| 51 |
except requests.exceptions.ConnectionError:
|
| 52 |
print("β Failed to reach AutoNLP API, check your internet connection")
|
|
|
|
| 65 |
def get_compatible_models(task, dataset_name):
|
| 66 |
# TODO: relax filter on PyTorch models once supported in AutoTrain
|
| 67 |
filt = ModelFilter(
|
| 68 |
+
task=AUTOTRAIN_TASK_TO_HUB_TASK[task],
|
| 69 |
+
trained_dataset=dataset_name,
|
| 70 |
+
library=["transformers", "pytorch"],
|
| 71 |
)
|
| 72 |
compatible_models = api.list_models(filter=filt)
|
| 73 |
return [model.modelId for model in compatible_models]
|