Spaces:
Paused
Paused
Merge pull request #11 from opentensor/alpha-validators
Browse files- dashboard.py +9 -8
- opendashboards/assets/inspect.py +7 -0
- opendashboards/assets/io.py +4 -2
- opendashboards/assets/metric.py +1 -2
- opendashboards/utils/plotting.py +1 -1
dashboard.py
CHANGED
@@ -8,7 +8,7 @@ from opendashboards.assets import io, inspect, metric, plot
|
|
8 |
# cache individual file loads
|
9 |
# Hotkey churn
|
10 |
|
11 |
-
DEFAULT_PROJECT = "
|
12 |
DEFAULT_FILTERS = {"tags": {"$in": [f'1.1.{i}' for i in range(10)]}}
|
13 |
DEFAULT_SELECTED_HOTKEYS = None
|
14 |
DEFAULT_SRC = 'followup'
|
@@ -23,7 +23,7 @@ st.set_page_config(
|
|
23 |
'About': """
|
24 |
This dashboard is part of the OpenTensor project. \n
|
25 |
To see runs in wandb, go to: \n
|
26 |
-
https://wandb.ai/opentensor-dev/
|
27 |
"""
|
28 |
},
|
29 |
layout = "centered"
|
@@ -82,7 +82,8 @@ with tab1:
|
|
82 |
st.dataframe(df_long.head(num_rows) if use_long_checkbox else df.head(num_rows),
|
83 |
use_container_width=True)
|
84 |
|
85 |
-
step_types = ['all']+['augment','followup','answer']#list(df.name.unique())
|
|
|
86 |
|
87 |
### UID Health ###
|
88 |
# TODO: Live time - time elapsed since moving_averaged_score for selected UID was 0 (lower bound so use >Time)
|
@@ -93,8 +94,8 @@ with tab2:
|
|
93 |
st.subheader("UID :violet[Health]")
|
94 |
st.info(f"Showing UID health metrics for **{n_runs} selected runs**")
|
95 |
|
96 |
-
uid_src = st.radio('Select
|
97 |
-
df_uid = df_long[df_long.
|
98 |
|
99 |
metric.uids(df_uid, uid_src)
|
100 |
uids = st.multiselect('UID:', sorted(df_uid['uids'].unique()), key='uid')
|
@@ -154,8 +155,8 @@ with tab3:
|
|
154 |
|
155 |
msg_col1, msg_col2 = st.columns(2)
|
156 |
# completion_src = msg_col1.radio('Select one:', ['followup', 'answer'], horizontal=True, key='completion_src')
|
157 |
-
completion_src = st.radio('Select
|
158 |
-
df_comp = df_long[df_long.
|
159 |
|
160 |
completion_info.info(f"Showing **{completion_src}** completions for **{n_runs} selected runs**")
|
161 |
|
@@ -204,7 +205,7 @@ with tab3:
|
|
204 |
df_comp,
|
205 |
completion_col='completions',
|
206 |
uid_col='uids',
|
207 |
-
time_col='
|
208 |
length_opt=completion_length_radio,
|
209 |
)
|
210 |
|
|
|
8 |
# cache individual file loads
|
9 |
# Hotkey churn
|
10 |
|
11 |
+
DEFAULT_PROJECT = "alpha-validators"
|
12 |
DEFAULT_FILTERS = {"tags": {"$in": [f'1.1.{i}' for i in range(10)]}}
|
13 |
DEFAULT_SELECTED_HOTKEYS = None
|
14 |
DEFAULT_SRC = 'followup'
|
|
|
23 |
'About': """
|
24 |
This dashboard is part of the OpenTensor project. \n
|
25 |
To see runs in wandb, go to: \n
|
26 |
+
https://wandb.ai/opentensor-dev/alpha-validators/table?workspace=default
|
27 |
"""
|
28 |
},
|
29 |
layout = "centered"
|
|
|
82 |
st.dataframe(df_long.head(num_rows) if use_long_checkbox else df.head(num_rows),
|
83 |
use_container_width=True)
|
84 |
|
85 |
+
# step_types = ['all']+['augment','followup','answer']#list(df.name.unique())
|
86 |
+
step_types = ['all']+list(df.task.unique())
|
87 |
|
88 |
### UID Health ###
|
89 |
# TODO: Live time - time elapsed since moving_averaged_score for selected UID was 0 (lower bound so use >Time)
|
|
|
94 |
st.subheader("UID :violet[Health]")
|
95 |
st.info(f"Showing UID health metrics for **{n_runs} selected runs**")
|
96 |
|
97 |
+
uid_src = st.radio('Select task type:', step_types, horizontal=True, key='uid_src')
|
98 |
+
df_uid = df_long[df_long.task.str.contains(uid_src)] if uid_src != 'all' else df_long
|
99 |
|
100 |
metric.uids(df_uid, uid_src)
|
101 |
uids = st.multiselect('UID:', sorted(df_uid['uids'].unique()), key='uid')
|
|
|
155 |
|
156 |
msg_col1, msg_col2 = st.columns(2)
|
157 |
# completion_src = msg_col1.radio('Select one:', ['followup', 'answer'], horizontal=True, key='completion_src')
|
158 |
+
completion_src = st.radio('Select task type:', step_types, horizontal=True, key='completion_src')
|
159 |
+
df_comp = df_long[df_long.task.str.contains(completion_src)] if completion_src != 'all' else df_long
|
160 |
|
161 |
completion_info.info(f"Showing **{completion_src}** completions for **{n_runs} selected runs**")
|
162 |
|
|
|
205 |
df_comp,
|
206 |
completion_col='completions',
|
207 |
uid_col='uids',
|
208 |
+
time_col='timings',
|
209 |
length_opt=completion_length_radio,
|
210 |
)
|
211 |
|
opendashboards/assets/inspect.py
CHANGED
@@ -4,6 +4,13 @@ import pandas as pd
|
|
4 |
import opendashboards.utils.utils as utils
|
5 |
|
6 |
def clean_data(df):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
return df.dropna(subset=df.filter(regex='completions|rewards').columns, how='any')
|
8 |
|
9 |
@st.cache_data
|
|
|
4 |
import opendashboards.utils.utils as utils
|
5 |
|
6 |
def clean_data(df):
|
7 |
+
task_map = {
|
8 |
+
'question-answering': 'QA',
|
9 |
+
'summarization': 'Summarization',
|
10 |
+
'date-based question answering': 'Date QA',
|
11 |
+
'math': 'Math'
|
12 |
+
}
|
13 |
+
df['task'] = df.task.map(task_map)
|
14 |
return df.dropna(subset=df.filter(regex='completions|rewards').columns, how='any')
|
15 |
|
16 |
@st.cache_data
|
opendashboards/assets/io.py
CHANGED
@@ -39,7 +39,7 @@ def load_runs(project, filters, min_steps=10):
|
|
39 |
rules = {'hotkey': re.compile('^[0-9a-z]{48}$',re.IGNORECASE), 'version': re.compile('^\\d\.\\d+\.\\d+$'), 'spec_version': re.compile('\\d{4}$')}
|
40 |
tags = {k: tag for k, rule in rules.items() for tag in run.tags if rule.match(tag)}
|
41 |
# include bool flag for remaining tags
|
42 |
-
tags.update({k: k in run.tags for k in ('mock','
|
43 |
|
44 |
runs.append({
|
45 |
'state': run.state,
|
@@ -61,7 +61,9 @@ def load_runs(project, filters, min_steps=10):
|
|
61 |
|
62 |
progress.empty()
|
63 |
msg.empty()
|
64 |
-
|
|
|
|
|
65 |
|
66 |
|
67 |
@st.cache_data
|
|
|
39 |
rules = {'hotkey': re.compile('^[0-9a-z]{48}$',re.IGNORECASE), 'version': re.compile('^\\d\.\\d+\.\\d+$'), 'spec_version': re.compile('\\d{4}$')}
|
40 |
tags = {k: tag for k, rule in rules.items() for tag in run.tags if rule.match(tag)}
|
41 |
# include bool flag for remaining tags
|
42 |
+
tags.update({k: k in run.tags for k in ('mock','disable_set_weights')})
|
43 |
|
44 |
runs.append({
|
45 |
'state': run.state,
|
|
|
61 |
|
62 |
progress.empty()
|
63 |
msg.empty()
|
64 |
+
frame = pd.DataFrame(runs)
|
65 |
+
mappings = {'state': 'category', 'hotkey': 'category', 'version': 'category', 'spec_version': 'category'}
|
66 |
+
return frame.astype({k:v for k,v in mappings.items() if k in frame.columns})
|
67 |
|
68 |
|
69 |
@st.cache_data
|
opendashboards/assets/metric.py
CHANGED
@@ -44,8 +44,7 @@ def runs(df_long):
|
|
44 |
col3.metric('Events', fmt(df_long.groupby(['run_id','_step']).ngroups))
|
45 |
col4.metric('Completions', fmt(df_long.shape[0]))
|
46 |
|
47 |
-
|
48 |
-
aggs = df_long.groupby(name_type).agg({'uids': 'nunique', 'completions': 'nunique'})
|
49 |
print(aggs)
|
50 |
for i,c in enumerate(st.columns(len(aggs))):
|
51 |
name = aggs.index[i].title()
|
|
|
44 |
col3.metric('Events', fmt(df_long.groupby(['run_id','_step']).ngroups))
|
45 |
col4.metric('Completions', fmt(df_long.shape[0]))
|
46 |
|
47 |
+
aggs = df_long.groupby('task').agg({'uids': 'nunique', 'completions': 'nunique'})
|
|
|
48 |
print(aggs)
|
49 |
for i,c in enumerate(st.columns(len(aggs))):
|
50 |
name = aggs.index[i].title()
|
opendashboards/utils/plotting.py
CHANGED
@@ -310,7 +310,7 @@ def plot_completion_length_time(
|
|
310 |
df: pd.DataFrame,
|
311 |
uid_col: str = "uids",
|
312 |
completion_col: str = "completions",
|
313 |
-
time_col: str = "
|
314 |
uids: List[int] = None,
|
315 |
length_opt: str = 'characters',
|
316 |
) -> go.Figure:
|
|
|
310 |
df: pd.DataFrame,
|
311 |
uid_col: str = "uids",
|
312 |
completion_col: str = "completions",
|
313 |
+
time_col: str = "timings",
|
314 |
uids: List[int] = None,
|
315 |
length_opt: str = 'characters',
|
316 |
) -> go.Figure:
|