Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import wandb | |
def fetch_runs_to_df(api, projects, selected_project): | |
data = [] | |
if selected_project == "All": | |
# return all runs from all projects | |
for project_name, details in projects.items(): | |
entity = details["entity"] | |
project = details["project"] | |
runs = api.runs(f"{entity}/{project}") | |
for run in runs: | |
data.append({ | |
"Run Name": run.name, | |
"ID": run.id, | |
"Created At": run.created_at, | |
"State": run.state, | |
"Tags": ", ".join(run.tags) # Join tags into a single string | |
}) | |
df = pd.DataFrame(data) | |
else: | |
# Get the selected project's details | |
entity = projects[selected_project]["entity"] | |
project = projects[selected_project]["project"] | |
runs = api.runs(f"{entity}/{project}") | |
for run in runs: | |
data.append({ | |
"Run Name": run.name, | |
"ID": run.id, | |
"Created At": run.created_at, | |
"State": run.state, | |
"Tags": ", ".join(run.tags) # Join tags into a single string | |
}) | |
df = pd.DataFrame(data) | |
return df | |
def fetch_run(api, projects, selected_project, selected_run_id): | |
# Fetch run details based on the selected project | |
if selected_project == "All": | |
# Find the project for the selected run_id | |
for project_name, details in projects.items(): | |
entity = details["entity"] | |
project = details["project"] | |
try: | |
run = api.run(f"{entity}/{project}/{selected_run_id}") | |
break | |
except wandb.errors.CommError: | |
continue | |
else: | |
st.error(f"Run ID {selected_run_id} not found in any project.") | |
else: | |
entity = projects[selected_project]["entity"] | |
project = projects[selected_project]["project"] | |
run = api.run(f"{entity}/{project}/{selected_run_id}") | |
return run | |
def fetch_models_to_df(api, projects, selected_project, df): | |
data = [] | |
for index, row in df.iterrows(): | |
try: | |
if selected_project == "All": | |
# Determine the project for the current run | |
for project_name, details in projects.items(): | |
entity = details["entity"] | |
project = details["project"] | |
try: | |
run = api.run(f"{entity}/{project}/{row['ID']}") | |
break | |
except wandb.errors.CommError: | |
continue | |
else: | |
st.error(f"Run ID {row['ID']} not found in any project.") | |
continue | |
else: | |
entity = projects[selected_project]["entity"] | |
project = projects[selected_project]["project"] | |
run = api.run(f"{entity}/{project}/{row['ID']}") | |
metrics = run.summary | |
model_name = run.config.get("model_name", "Unknown") # Fetch model name from the config, defaulting to "Unknown" | |
data.append({ | |
"Model Name": model_name, # Add model name to the table | |
"Run Name": row["Run Name"], | |
"ID": row["ID"], | |
"Accuracy": metrics.get("accuracy"), # Example metric | |
"Loss": metrics.get("loss") # Example metric | |
}) | |
except wandb.errors.CommError: | |
continue | |
data_df = pd.DataFrame(data) | |
return data_df | |