gchhablani commited on
Commit
6259d16
1 Parent(s): 8e7fd4d

Add local copy of st tensorboard

Browse files
apps/article.py CHANGED
@@ -1,6 +1,6 @@
1
  import streamlit as st
2
  from apps.utils import read_markdown
3
- from streamlit_tensorboard import st_tensorboard
4
  from .utils import Toc
5
  def app(state=None):
6
  toc = Toc()
1
  import streamlit as st
2
  from apps.utils import read_markdown
3
+ from .streamlit_tensorboard import st_tensorboard
4
  from .utils import Toc
5
  def app(state=None):
6
  toc = Toc()
apps/streamlit_tensorboard.py ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # https://github.com/snehankekre/streamlit-tensorboard/blob/master/streamlit_tensorboard/__init__.py
2
+ import streamlit as st
3
+ import streamlit.components.v1 as components
4
+ from tensorboard import manager
5
+ import shlex
6
+ import random
7
+ import html
8
+ import json
9
+
10
+
11
+ def st_tensorboard(logdir="/logs/", port=6006, width=None, height=800, scrolling=True):
12
+ """Embed Tensorboard within a Streamlit app
13
+ Parameters
14
+ ----------
15
+ logdir: str
16
+ Directory where TensorBoard will look to find TensorFlow event files that it can display.
17
+ TensorBoard will recursively walk the directory structure rooted at logdir, looking for .*tfevents.* files.
18
+ Defaults to /logs/
19
+ port: int
20
+ Port to serve TensorBoard on. Defaults to 6006
21
+ width: int
22
+ The width of the frame in CSS pixels. Defaults to the report’s default element width.
23
+ height: int
24
+ The height of the frame in CSS pixels. Defaults to 800.
25
+ scrolling: bool
26
+ If True, show a scrollbar when the content is larger than the iframe.
27
+ Otherwise, do not show a scrollbar. Defaults to True.
28
+ Example
29
+ -------
30
+ >>> st_tensorboard(logdir="/logs/", port=6006, width=1080)
31
+ """
32
+
33
+ logdir = logdir
34
+ port = port
35
+ width = width
36
+ height = height
37
+
38
+ frame_id = "tensorboard-frame-{:08x}".format(random.getrandbits(64))
39
+ shell = """
40
+ <iframe id="%HTML_ID%" width="100%" height="%HEIGHT%" frameborder="0">
41
+ </iframe>
42
+ <script>
43
+ (function() {
44
+ const frame = document.getElementById(%JSON_ID%);
45
+ const url = new URL(%URL%, window.location);
46
+ const port = %PORT%;
47
+ if (port) {
48
+ url.port = port;
49
+ }
50
+ frame.src = url;
51
+ })();
52
+ </script>
53
+ """
54
+
55
+ args_string = f"--logdir {logdir} --port {port}"
56
+ parsed_args = shlex.split(args_string, comments=True, posix=True)
57
+ start_result = manager.start(parsed_args)
58
+
59
+ if isinstance(start_result, manager.StartReused):
60
+ port = start_result.info.port
61
+ print(f"Reusing TensorBoard on port {port}")
62
+
63
+ proxy_url = "http://localhost:%PORT%"
64
+
65
+ proxy_url = proxy_url.replace("%PORT%", "%d" % port)
66
+ replacements = [
67
+ ("%HTML_ID%", html.escape(frame_id, quote=True)),
68
+ ("%JSON_ID%", json.dumps(frame_id)),
69
+ ("%HEIGHT%", "%d" % height),
70
+ ("%PORT%", "0"),
71
+ ("%URL%", json.dumps(proxy_url)),
72
+ ]
73
+
74
+ for (k, v) in replacements:
75
+ shell = shell.replace(k, v)
76
+
77
+ return components.html(shell, width=width, height=height, scrolling=scrolling)
requirements.txt CHANGED
@@ -5,5 +5,4 @@ torchvision==0.10.0
5
  mtranslate==1.8
6
  black==21.7b0
7
  flax==0.3.4
8
- torch==1.9.0
9
- streamlit-tensorboard==0.0.2
5
  mtranslate==1.8
6
  black==21.7b0
7
  flax==0.3.4
8
+ torch==1.9.0