Spaces:
Runtime error
Runtime error
| import pandas as pd | |
| import json | |
| from pathlib import Path | |
| from mlflow import log_metric | |
| import time | |
| import os | |
| from glob import glob | |
| TIMEOUT = 240 # Number of seconds to stop the script after the last update of the json file | |
| POLLING_FREQUENCY = 10 # Try to read the updates in the file every 10 seconds | |
| # Wait for the file to be found | |
| start = time.time() | |
| while not len(glob(str(Path("local-worker") / "live_performances" / "*" / "performances.json"))) > 0: | |
| time.sleep(POLLING_FREQUENCY) | |
| if time.time() - start >= TIMEOUT: | |
| raise TimeoutError("The performance file does not exist, maybe no test task has been executed yet.") | |
| path_to_json = Path(glob(str(Path("local-worker") / "live_performances" / "*" / "performances.json"))[0]) | |
| logged_rows = [] | |
| last_update = time.time() | |
| while (time.time() - last_update) <= TIMEOUT: | |
| if last_update == os.path.getmtime(str(path_to_json)): | |
| time.sleep(POLLING_FREQUENCY) | |
| continue | |
| last_update = os.path.getmtime(str(path_to_json)) | |
| time.sleep(1) # Waiting for the json to be fully written | |
| dict_perf = json.load(path_to_json.open()) | |
| df = pd.DataFrame(dict_perf) | |
| for _, row in df.iterrows(): | |
| if row["testtask_key"] in logged_rows: | |
| continue | |
| logged_rows.append(row["testtask_key"]) | |
| step = int(row["round_idx"]) if row["round_idx"] is not None else int(row["testtask_rank"]) | |
| log_metric(f"{row['metric_name']}_{row['worker']}", row["performance"], step) | |