Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Time axis on Time Series-Pane reads walltime incorrect #4541

Closed
Talon24 opened this issue Jan 13, 2021 · 1 comment · Fixed by #4552
Closed

Time axis on Time Series-Pane reads walltime incorrect #4541

Talon24 opened this issue Jan 13, 2021 · 1 comment · Fixed by #4552

Comments

@Talon24
Copy link

Talon24 commented Jan 13, 2021

Environment information

Diagnostics

Diagnostics output
--- check: autoidentify
INFO: diagnose_tensorboard.py version 5e810a97d96ec99b9b6b596476f2883baa7c22b6

--- check: general
INFO: sys.version_info: sys.version_info(major=3, minor=8, micro=5, releaselevel='final', serial=0)
INFO: os.name: nt
INFO: os.uname(): N/A
INFO: sys.getwindowsversion(): sys.getwindowsversion(major=10, minor=0, build=19041, platform=2, service_pack='')

--- check: package_management
INFO: has conda-meta: False
INFO: $VIRTUAL_ENV: None

--- check: installed_packages
INFO: installed: tensorboard==2.4.0
WARNING: no installation among: ['tensorflow', 'tensorflow-gpu', 'tf-nightly', 'tf-nightly-2.0-preview', 'tf-nightly-gpu', 'tf-nightly-gpu-2.0-preview']
WARNING: no installation among: ['tensorflow-estimator', 'tensorflow-estimator-2.0-preview', 'tf-estimator-nightly']

--- check: tensorboard_python_version
INFO: tensorboard.version.VERSION: '2.4.0'

--- check: tensorflow_python_version
Traceback (most recent call last):
  File "C:\Users\Talon\PycharmProjects\kpis_project\diagnose_tensorboard.py", line 492, in main
    suggestions.extend(check())
  File "C:\Users\Talon\PycharmProjects\kpis_project\diagnose_tensorboard.py", line 75, in wrapper
    result = fn()
  File "C:\Users\Talon\PycharmProjects\kpis_project\diagnose_tensorboard.py", line 275, in tensorflow_python_version
    import tensorflow as tf
ModuleNotFoundError: No module named 'tensorflow'

--- check: tensorboard_binary_path
INFO: which tensorboard: b'G:\\Programme\\anaconda3\\Scripts\\tensorboard.exe\r\nC:\\Users\\Talon\\AppData\\Local\\Programs\\Python\\Python38-32\\Scripts\\tensorboard.exe\r\n'

--- check: addrinfos
socket.has_ipv6 = True
socket.AF_UNSPEC = <AddressFamily.AF_UNSPEC: 0>
socket.SOCK_STREAM = <SocketKind.SOCK_STREAM: 1>
socket.AI_ADDRCONFIG = <AddressInfo.AI_ADDRCONFIG: 1024>
socket.AI_PASSIVE = <AddressInfo.AI_PASSIVE: 1>
Loopback flags: <AddressInfo.AI_ADDRCONFIG: 1024>
Loopback infos: [(<AddressFamily.AF_INET6: 23>, <SocketKind.SOCK_STREAM: 1>, 0, '', ('::1', 0, 0, 0)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 0, '', ('127.0.0.1', 0))]
Wildcard flags: <AddressInfo.AI_PASSIVE: 1>
Wildcard infos: [(<AddressFamily.AF_INET6: 23>, <SocketKind.SOCK_STREAM: 1>, 0, '', ('::', 0, 0, 0)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 0, '', ('0.0.0.0', 0))]

--- check: readable_fqdn
INFO: socket.getfqdn(): '---------------------'

--- check: stat_tensorboardinfo
INFO: directory: C:\Users\Talon\AppData\Local\Temp\.tensorboard-info
INFO: os.stat(...): os.stat_result(st_mode=16895, st_ino=5910974512248343, st_dev=2521688629, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1610373192, st_mtime=1610373192, st_ctime=1610228353)
INFO: mode: 0o40777

--- check: source_trees_without_genfiles
INFO: tensorboard_roots (1): ['C:\\Users\\Talon\\AppData\\Local\\Programs\\Python\\Python38-32\\lib\\site-packages']; bad_roots (0): []

--- check: full_pip_freeze
INFO: pip freeze --all:
absl-py==0.11.0

alabaster==0.7.12

array-to-latex==0.82

astroid==2.3.2

astropy==4.0.1.post1

atomicwrites==1.3.0

attrs==19.3.0

autopep8==1.5

Babel==2.8.0

backcall==0.1.0

bcrypt==3.1.7

beautifulsoup4==4.8.1

bleach==3.1.4

browser-cookie3==0.11.1

bs4==0.0.1

cachetools==4.2.0

certifi==2019.9.11

cffi==1.13.2

cfgv==3.2.0

chardet==3.0.4

ClauseWizard==1.0.4

Click==7.0

clipboard==0.0.4

cloudpickle==1.3.0

colorama==0.4.3

colored==1.4.2

comtypes==1.1.7

coverage==5.3.1

cryptography==2.8

cycler==0.10.0

decorator==4.4.2

defusedxml==0.6.0

deprecation==2.1.0

diff-match-patch==20181111

docopt==0.6.2

docutils==0.16

entrypoints==0.3

eyed3==0.9.6

filelock==3.0.12

filetype==1.0.7

filterpy==1.4.5

flake8==3.7.9

flake8-docstrings==1.5.0

Flask==1.1.1

future==0.18.2

Gooey==1.0.4.0.0.0

google-api-core==1.24.1

google-api-python-client==1.12.8

google-auth==1.24.0

google-auth-httplib2==0.0.4

google-auth-oauthlib==0.4.2

googleapis-common-protos==1.52.0

grpcio==1.34.0

helpdev==0.6.10

httplib2==0.18.1

identify==1.5.6

idna==2.8

imageio==2.6.1

imagesize==1.2.0

importlib-metadata==0.23

inputs==0.5

intervaltree==3.0.2

ipdb==0.12.2

ipykernel==5.2.1

ipython==7.13.0

ipython-genutils==0.2.0

ipywidgets==7.5.1

iso8601==0.1.12

isort==4.3.21

itsdangerous==1.1.0

jedi==0.15.2

Jinja2==2.11.2

jira==2.0.0

joblib==0.14.1

json5==0.9.5

jsonschema==3.2.0

jupyter==1.0.0

jupyter-client==6.1.3

jupyter-console==6.1.0

jupyter-contrib-core==0.3.3

jupyter-contrib-nbextensions==0.5.1

jupyter-core==4.6.3

jupyter-highlight-selected-word==0.2.0

jupyter-latex-envs==1.4.6

jupyter-nbextensions-configurator==0.4.1

jupyterlab==2.2.0

jupyterlab-server==1.2.0

jupyterthemes==0.20.0

keyring==21.1.0

kiwisolver==1.1.0

lazy-object-proxy==1.4.3

lesscpy==0.14.0

loguru==0.5.3

lxml==4.4.2

lz4==3.0.2

Markdown==3.3.3

MarkupSafe==1.1.1

matplotlib==3.1.2

mccabe==0.6.1

mistune==0.8.4

more-itertools==7.2.0

mp3-tagger==1.0

mpmath==1.1.0

nbconvert==5.6.1

nbformat==5.0.6

networking==0.0.1

networkx==2.4

nodeenv==1.5.0

notebook==6.0.3

numexpr==2.7.1

numpy==1.18.1

numpydoc==0.9.2

oauthlib==3.1.0

opencv-python==4.4.0.42

packaging==20.3

pandas==0.25.3

pandocfilters==1.4.2

paramiko==2.7.1

parso==0.5.2

pathtools==0.1.2

pbkdf2==1.3

pbr==5.4.4

pexpect==4.8.0

pickleshare==0.7.5

pigar==0.10.0

Pillow==6.2.1

pip==20.2.4

pipenv==2020.11.15

pipreqs==0.4.10

plotly==4.9.0

pluggy==0.13.1

plumbum==1.6.9

ply==3.11

pre-commit==2.8.2

prometheus-client==0.7.1

prompt-toolkit==2.0.10

protobuf==3.14.0

psutil==5.6.7

psycopg2==2.8.5

ptyprocess==0.6.0

py==1.8.0

pyaes==1.6.1

pyasn1==0.4.8

pyasn1-modules==0.2.8

pycaw==20181226

pycodestyle==2.5.0

pycparser==2.19

pycryptodome==3.9.4

pydocstyle==5.0.2

pyflakes==2.1.1

PyGetWindow==0.0.9

Pygments==2.6.1

PyJWT==1.7.1

pylint==2.4.3

PyNaCl==1.3.0

pyparsing==2.4.5

pyperclip==1.8.0

pypiwin32==223

PyQt5==5.12.3

PyQt5-sip==12.7.1

PyQtWebEngine==5.12.1

PyRect==0.1.4

pyrsistent==0.16.0

pyserial==3.4

pyshark==0.4.2.9

python-dateutil==2.8.1

python-jsonrpc-server==0.3.4

python-language-server==0.31.10

pytz==2019.3

PyWavelets==1.1.1

pywin32==227

pywin32-ctypes==0.2.0

pywinauto==0.6.8

pywinpty==0.5.7

PyYAML==5.3.1

pyzmq==19.0.0

QDarkStyle==2.8

QtAwesome==0.7.0

qtconsole==4.7.3

QtPy==1.9.0

ranger==0.10

requests==2.22.0

requests-oauthlib==1.3.0

requests-toolbelt==0.9.1

retrying==1.3.3

rope==0.16.0

rpyc==4.1.5

rsa==4.6

scikit-image==0.16.2

scikit-learn==0.23.2

scipy==1.4.1

seaborn==0.10.0

Send2Trash==1.5.0

setuptools==47.1.0

simpleeval==0.9.10

sip==5.1.1

six==1.14.0

sklearn==0.0

snakeviz==2.1.0

snowballstemmer==2.0.0

sortedcontainers==2.1.0

soupsieve==1.9.5

Sphinx==2.4.3

sphinxcontrib-applehelp==1.0.2

sphinxcontrib-devhelp==1.0.2

sphinxcontrib-htmlhelp==1.0.3

sphinxcontrib-jsmath==1.0.1

sphinxcontrib-qthelp==1.0.3

sphinxcontrib-serializinghtml==1.1.4

spyder==4.1.3

spyder-kernels==1.9.1

sympy==1.5.1

tensorboard==2.4.0

tensorboard-plugin-wit==1.7.0

terminado==0.8.3

terminaltables==3.1.0

testpath==0.4.4

threadpoolctl==2.1.0

toml==0.10.0

tornado==6.0.4

tox==3.20.1

tqdm==4.46.1

traitlets==4.3.3

translate==3.5.0

uritemplate==3.0.1

urllib3==1.25.6

urlpath==1.1.4

virtualenv==16.7.9

virtualenv-clone==0.5.4

watchdog==0.10.2

wcwidth==0.1.9

webencodings==0.5.1

Werkzeug==0.16.0

wheel==0.36.2

widgetsnbextension==3.5.1

win32-setctime==1.0.3

wrapt==1.11.2

wxPython==4.0.7

yapf==0.29.0

yarg==0.1.9

zipp==0.6.0


Time Series - Pane:
Time Series - Pane
Scalars - Pane
Scalars - Pane

Issue description

On the Time Series - Pane, the x-axis with a time scale is wrong, it shows a date in 1970.
In the tooltip, the date is correct, and on the Scalar-pane, both is correct.

I have set the horizontal axis - option to Wall, and my data is written by writer.add_scalar()

It seems that on the x-axis wants to take a millisecond-timestamp, but gets a regular timestamp; When i multiply my timestamp by 1000, the axis on that pane is correct, but not the tooltip or the other pane.

Reproduction

import datetime
from torch.utils.tensorboard import SummaryWriter


writer = SummaryWriter("runs/test")
now =  datetime.datetime.now()
for num in range(100):
    time = now + datetime.timedelta(days=num)
    writer.add_scalar('Test/test', num, num, walltime=time.timestamp())

See how this stretches over some months in the current year as expected on the Scalars pane, but only 2 hours of 1970 on the Time Series pane

@wchargin
Copy link
Contributor

Hi @Talon24! Thanks for the report. I can reproduce this; it’s a
standard seconds/milliseconds mixup. Will send out a patch shortly.

wchargin added a commit that referenced this issue Jan 14, 2021
Summary:
The TensorBoard backend sends wall times in floating-point seconds since
epoch, and the scalars dashboard interprets them accordingly. But the
time series dashboard was interpreting them as milliseconds since epoch,
causing recent dates to be rendered around January 1970. This patch
fixes the frontend to multiply by 1000, as the scalars dashboard does.

This bug also affected relative times, which were shown compressed by a
factor of 1000 on the horizontal axis (but not in the tooltips). This
bug did not affect GPU line charts.

Fixes #4541.

Test Plan:

![Comparison screenshot of two chart views in the time series dashboard.
Before: the wall time spans a single second, labeled “06:16:46 PM
January 18, 1970”. After: the wall time starts on “04:31 PM July 17,
2019” and ends at “04:35 PM July 17, 2019”.][ss]

[ss]: https://user-images.githubusercontent.com/4317806/104562449-3a695300-55fd-11eb-81e9-15377175dfa4.png

wchargin-branch: metrics-date-milliseconds
wchargin-source: 4035248298114f38528aa16e54a1a459c39d4dc9
wchargin added a commit that referenced this issue Jan 14, 2021
Summary:
The TensorBoard backend sends wall times in floating-point seconds since
epoch, and the scalars dashboard interprets them accordingly. But the
time series dashboard was interpreting them as milliseconds since epoch,
causing recent dates to be rendered around January 1970. This patch
fixes the frontend to multiply by 1000, as the scalars dashboard does.

This bug also affected relative times, which were shown compressed by a
factor of 1000 on the horizontal axis (but not in the tooltips). This
bug did not affect GPU line charts.

Fixes #4541.

Test Plan:

![Comparison screenshot of two chart views in the time series dashboard.
Before: the wall time spans a single second, labeled “06:16:46 PM
January 18, 1970”. After: the wall time starts on “04:31 PM July 17,
2019” and ends at “04:35 PM July 17, 2019”.][ss]

[ss]: https://user-images.githubusercontent.com/4317806/104562449-3a695300-55fd-11eb-81e9-15377175dfa4.png

wchargin-branch: metrics-date-milliseconds
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants