mohsenfayyaz commited on
Commit
cae17c8
·
0 Parent(s):

Reset history

Browse files
Files changed (5) hide show
  1. .gitattributes +35 -0
  2. README.md +12 -0
  3. app.py +89 -0
  4. gpus.csv +45 -0
  5. requirements.txt +2 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: PLUS Lab GPUs
3
+ emoji: ➕
4
+ colorFrom: blue
5
+ colorTo: purple
6
+ sdk: gradio
7
+ sdk_version: 5.13.1
8
+ app_file: app.py
9
+ pinned: false
10
+ ---
11
+
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import datetime
2
+ import gradio as gr
3
+ import pandas as pd
4
+ import plotly.express as px
5
+
6
+ def split_multi_users(dfs):
7
+ df = dfs.copy()
8
+ df["usernames"] = df["username"].apply(lambda x: x.split(", "))
9
+ df["count"] = 1
10
+ new_df = []
11
+ for row in df.to_dict(orient="records"):
12
+ gpu_users_num = len(row["usernames"])
13
+ for username in row["usernames"]:
14
+ new_row = row.copy()
15
+ new_row["count"] = 1 / gpu_users_num
16
+ new_row["username"] = username
17
+ new_df.append(new_row)
18
+ df = pd.DataFrame(new_df)
19
+ return df
20
+
21
+ def plot_now():
22
+ dfs = pd.read_csv("hf://spaces/pluslab/PLUS_Lab_GPUs/gpus.csv")
23
+ dfs = dfs.drop(columns=["Unnamed: 0"])
24
+ dfs = dfs.fillna("FREE")
25
+ dfs_plot = split_multi_users(dfs)
26
+ fig = px.bar(
27
+ dfs_plot, x="count", y="server", color="username",
28
+ title=f"Last Updated {min(dfs['timestamp'])}",
29
+ color_discrete_map={
30
+ "FREE": "black",
31
+ },
32
+ text=dfs_plot['username'].astype(str) + "<br>" + dfs_plot['device'].astype(str),
33
+ )
34
+ fig.update_layout(
35
+ yaxis={'categoryorder': 'array', 'categoryarray': dfs_plot["server"].unique()[::-1]},
36
+ barcornerradius=50,
37
+ )
38
+ fig.update_traces(textposition='inside', insidetextanchor='middle')
39
+ print(dfs_plot)
40
+ return fig, dfs
41
+
42
+ def plot_history(sample=True, sampling_interval_minutes=180):
43
+ dfh = pd.read_pickle("hf://spaces/pluslab/PLUS_Lab_GPUs/history.pkl.gz", )
44
+ dfh = dfh.fillna("FREE")
45
+ dfh = split_multi_users(dfh)
46
+ dfh = dfh[["polling_timestamp", "username", "count"]]
47
+ dfh = dfh.groupby(["polling_timestamp", "username"]).sum()
48
+ dfh = dfh.reset_index()
49
+ dfh = dfh.sort_values(by=["polling_timestamp", "count"], ascending=False)
50
+ if sample:
51
+ unique_timestamps = dfh["polling_timestamp"].unique()
52
+ sampled_timestamps = [unique_timestamps[0]]
53
+ for i, t in enumerate(unique_timestamps[1:]):
54
+ diff = sampled_timestamps[-1] - t
55
+ if diff > datetime.timedelta(minutes=sampling_interval_minutes):
56
+ sampled_timestamps.append(t)
57
+ dfh = dfh[dfh["polling_timestamp"].isin(sampled_timestamps)]
58
+ fig = px.area(dfh, x="polling_timestamp", y="count", color='username', color_discrete_map={"FREE": "black",}, markers=True, line_shape='spline',)
59
+ return fig, dfh
60
+
61
+
62
+ def plot_figs():
63
+ fig_now, dfn = plot_now()
64
+ try:
65
+ fig_history, dfh = plot_history()
66
+ except Exception as e:
67
+ print(e)
68
+ fig_history = None
69
+ dfh = None
70
+ return fig_now, dfn, fig_history
71
+
72
+ demo = gr.Interface(
73
+ fn=plot_figs,
74
+ inputs = [
75
+
76
+ ],
77
+ outputs = [
78
+ gr.Plot(label="GPU Status", elem_classes="plotcss"),
79
+ gr.Dataframe(label="GPU Status Details"),
80
+ gr.Plot(label="History", elem_classes="plotcss"),
81
+ ],
82
+ live=True,
83
+ flagging_options=[],
84
+ css=".plotcss {max-width: 820px !important;}"
85
+ )
86
+
87
+ if __name__ == "__main__":
88
+ demo.launch(debug=False)
89
+
gpus.csv ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ,timestamp,server,name,device,utilization.gpu [%],utilization.memory [%],temperature.gpu,power.draw [W],username
2
+ 0,2025/06/25 05:32:45.940,pluslab-a100.cs.ucla.edu,NVIDIA A100-SXM4-40GB,0,99 %,57 %,62,367.02 W,xueqing.wu
3
+ 1,2025/06/25 05:32:45.959,pluslab-a100.cs.ucla.edu,NVIDIA A100-SXM4-40GB,1,99 %,53 %,63,374.97 W,xueqing.wu
4
+ 2,2025/06/25 05:32:45.973,pluslab-a100.cs.ucla.edu,NVIDIA A100-SXM4-40GB,2,99 %,52 %,52,373.61 W,xueqing.wu
5
+ 3,2025/06/25 05:32:45.989,pluslab-a100.cs.ucla.edu,NVIDIA A100-SXM4-40GB,3,98 %,59 %,53,387.15 W,xueqing.wu
6
+ 0,2025/06/25 05:32:47.148,pluslab01-a100.cs.ucla.edu,NVIDIA A100 80GB PCIe,0,99 %,93 %,63,291.88 W,ponienkung
7
+ 1,2025/06/25 05:32:47.159,pluslab01-a100.cs.ucla.edu,NVIDIA A100 80GB PCIe,1,99 %,51 %,72,306.29 W,junyizhang
8
+ 2,2025/06/25 05:32:47.166,pluslab01-a100.cs.ucla.edu,NVIDIA A100 80GB PCIe,2,0 %,0 %,61,77.14 W,junyizhang
9
+ 3,2025/06/25 05:32:47.174,pluslab01-a100.cs.ucla.edu,NVIDIA A100 80GB PCIe,3,0 %,0 %,58,76.64 W,junyizhang
10
+ 4,2025/06/25 05:32:47.181,pluslab01-a100.cs.ucla.edu,NVIDIA A100 80GB PCIe,4,92 %,44 %,72,282.15 W,fanyin20
11
+ 5,2025/06/25 05:32:47.188,pluslab01-a100.cs.ucla.edu,NVIDIA A100 80GB PCIe,5,92 %,42 %,72,329.60 W,fanyin20
12
+ 6,2025/06/25 05:32:47.194,pluslab01-a100.cs.ucla.edu,NVIDIA A100 80GB PCIe,6,99 %,51 %,73,315.57 W,junyizhang
13
+ 7,2025/06/25 05:32:47.200,pluslab01-a100.cs.ucla.edu,NVIDIA A100 80GB PCIe,7,0 %,0 %,43,64.30 W,xueqing.wu
14
+ 0,2025/06/25 05:32:48.343,pluslab01-h100.cs.ucla.edu,NVIDIA H100 80GB HBM3,0,0 %,0 %,48,72.64 W,
15
+ 1,2025/06/25 05:32:48.360,pluslab01-h100.cs.ucla.edu,NVIDIA H100 80GB HBM3,1,0 %,0 %,48,78.20 W,
16
+ 2,2025/06/25 05:32:48.375,pluslab01-h100.cs.ucla.edu,NVIDIA H100 80GB HBM3,2,77 %,56 %,64,368.90 W,haikang
17
+ 3,2025/06/25 05:32:48.389,pluslab01-h100.cs.ucla.edu,NVIDIA H100 80GB HBM3,3,77 %,57 %,60,356.04 W,haikang
18
+ 4,2025/06/25 05:32:48.404,pluslab01-h100.cs.ucla.edu,NVIDIA H100 80GB HBM3,4,75 %,56 %,61,353.75 W,haikang
19
+ 5,2025/06/25 05:32:48.420,pluslab01-h100.cs.ucla.edu,NVIDIA H100 80GB HBM3,5,40 %,14 %,53,214.77 W,ponienkung
20
+ 6,2025/06/25 05:32:48.434,pluslab01-h100.cs.ucla.edu,NVIDIA H100 80GB HBM3,6,39 %,13 %,56,229.54 W,ponienkung
21
+ 7,2025/06/25 05:32:48.449,pluslab01-h100.cs.ucla.edu,NVIDIA H100 80GB HBM3,7,0 %,0 %,47,75.22 W,
22
+ 0,2025/06/25 05:32:49.926,pluslab-a6000.cs.ucla.edu,NVIDIA RTX A6000,0,100 %,1 %,85,187.87 W,xueqing.wu
23
+ 1,2025/06/25 05:32:49.942,pluslab-a6000.cs.ucla.edu,NVIDIA RTX A6000,1,99 %,3 %,59,194.41 W,xueqing.wu
24
+ 2,2025/06/25 05:32:49.951,pluslab-a6000.cs.ucla.edu,NVIDIA RTX A6000,2,99 %,3 %,66,199.23 W,xueqing.wu
25
+ 3,2025/06/25 05:32:49.961,pluslab-a6000.cs.ucla.edu,NVIDIA RTX A6000,3,96 %,3 %,62,190.80 W,xueqing.wu
26
+ 4,2025/06/25 05:32:49.971,pluslab-a6000.cs.ucla.edu,NVIDIA RTX A6000,4,0 %,0 %,30,22.88 W,
27
+ 5,2025/06/25 05:32:49.979,pluslab-a6000.cs.ucla.edu,NVIDIA RTX A6000,5,0 %,0 %,29,28.40 W,
28
+ 6,2025/06/25 05:32:49.986,pluslab-a6000.cs.ucla.edu,NVIDIA RTX A6000,6,0 %,0 %,31,26.89 W,
29
+ 7,2025/06/25 05:32:49.992,pluslab-a6000.cs.ucla.edu,NVIDIA RTX A6000,7,0 %,0 %,30,21.56 W,
30
+ 0,2025/06/25 05:32:51.188,pluslab01-a6000.cs.ucla.edu,NVIDIA RTX A6000,0,0 %,0 %,69,97.21 W,xueqing.wu
31
+ 1,2025/06/25 05:32:51.194,pluslab01-a6000.cs.ucla.edu,NVIDIA RTX A6000,1,0 %,0 %,60,87.13 W,xueqing.wu
32
+ 2,2025/06/25 05:32:51.197,pluslab01-a6000.cs.ucla.edu,NVIDIA RTX A6000,2,16 %,12 %,73,259.84 W,xueqing.wu
33
+ 3,2025/06/25 05:32:51.199,pluslab01-a6000.cs.ucla.edu,NVIDIA RTX A6000,3,0 %,0 %,63,86.67 W,xueqing.wu
34
+ 4,2025/06/25 05:32:51.201,pluslab01-a6000.cs.ucla.edu,NVIDIA RTX A6000,4,0 %,0 %,26,22.41 W,
35
+ 5,2025/06/25 05:32:51.205,pluslab01-a6000.cs.ucla.edu,NVIDIA RTX A6000,5,0 %,0 %,25,19.62 W,
36
+ 6,2025/06/25 05:32:51.210,pluslab01-a6000.cs.ucla.edu,NVIDIA RTX A6000,6,0 %,0 %,27,20.53 W,
37
+ 7,2025/06/25 05:32:51.214,pluslab01-a6000.cs.ucla.edu,NVIDIA RTX A6000,7,0 %,0 %,27,26.57 W,haikang
38
+ 0,2025/06/25 05:32:52.698,pluslab02-a6000.cs.ucla.edu,NVIDIA RTX A6000,0,0 %,0 %,28,26.73 W,
39
+ 1,2025/06/25 05:32:52.726,pluslab02-a6000.cs.ucla.edu,NVIDIA RTX A6000,1,0 %,0 %,26,30.76 W,
40
+ 2,2025/06/25 05:32:52.754,pluslab02-a6000.cs.ucla.edu,NVIDIA RTX A6000,2,92 %,94 %,68,264.96 W,hzhang19
41
+ 3,2025/06/25 05:32:52.782,pluslab02-a6000.cs.ucla.edu,NVIDIA RTX A6000,3,100 %,95 %,63,256.09 W,hzhang19
42
+ 4,2025/06/25 05:32:52.816,pluslab02-a6000.cs.ucla.edu,NVIDIA RTX A6000,4,100 %,75 %,71,292.37 W,xueqing.wu
43
+ 5,2025/06/25 05:32:52.836,pluslab02-a6000.cs.ucla.edu,NVIDIA RTX A6000,5,78 %,54 %,61,290.91 W,xueqing.wu
44
+ 6,2025/06/25 05:32:52.871,pluslab02-a6000.cs.ucla.edu,NVIDIA RTX A6000,6,74 %,42 %,71,291.68 W,xueqing.wu
45
+ 7,2025/06/25 05:32:52.890,pluslab02-a6000.cs.ucla.edu,NVIDIA RTX A6000,7,86 %,62 %,66,291.55 W,xueqing.wu
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ plotly==5.24.1
2
+ pandas==2.2.3