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

Projector hangs on Computing PCA when using Tensorboard2.10 with Pytorch #5924

Closed
Alisonlx opened this issue Sep 13, 2022 · 7 comments
Closed

Comments

@Alisonlx
Copy link

Alisonlx commented Sep 13, 2022

it seems tensorboard 2.10 introduces this problem, I tried to revert to 2.9.1 version. and the hanging disappears.

@rileyajones
Copy link
Contributor

Could you please provide some clear steps on how to reproduce this?

@Bomme
Copy link

Bomme commented Sep 13, 2022

I can reproduce the issue with torch==1.12.1 tensorboard==2.10.0 by running the following code:

import torch
from torch.utils.tensorboard import SummaryWriter

x = torch.rand((100, 25))

writer = SummaryWriter()
writer.add_embedding(x)

and then opening the projector view.

@rileyajones
Copy link
Contributor

This seems to have been caused by the bundler change in #5829

@baridxiai
Copy link

Any solution? I got the same issue.

@rileyajones
Copy link
Contributor

@baridfor3 We are currently recommending using 2.9.1, this is a build issue and it's hard to say how long it will take to get this patched.

@baridxiai
Copy link

@rileyajones Thanks for your answer. 2.9.1 works for me.

bmd3k added a commit that referenced this issue Sep 22, 2022
The change to use the esbuild bundler (#5829) broke the projector plugin (#5924).

The root cause is in the 'numeric' library, which we use for calculating the PCA. The library requires that the symbol 'numeric' is available in the global scope when its operations are executed by other modules. See, for example, how the definition of some of its operations refer to the string 'numeric' in the Function definition, unmodifiable by the
bundler/minification code:

https://github.com/sloisel/numeric/blob/656fa1254be540f428710738ca9c1539625777f1/src/numeric.js#L696

The esbuild bundler does not keep 'numeric' in global scope and instead renames it as part of bundling/minification. We work around this by manually adding it to global scope.

We introduce the wrapper tensorboard/webapp/third_party/numeric.ts to add 'numeric' to the global scope and require that tensorboard code import that wrapper rather than importing numeric directly. We add a CI check to ensure that numeric is not imported directly.
bmd3k added a commit to bmd3k/tensorboard that referenced this issue Sep 22, 2022
The change to use the esbuild bundler (tensorflow#5829) broke the projector plugin (tensorflow#5924).

The root cause is in the 'numeric' library, which we use for calculating the PCA. The library requires that the symbol 'numeric' is available in the global scope when its operations are executed by other modules. See, for example, how the definition of some of its operations refer to the string 'numeric' in the Function definition, unmodifiable by the
bundler/minification code:

https://github.com/sloisel/numeric/blob/656fa1254be540f428710738ca9c1539625777f1/src/numeric.js#L696

The esbuild bundler does not keep 'numeric' in global scope and instead renames it as part of bundling/minification. We work around this by manually adding it to global scope.

We introduce the wrapper tensorboard/webapp/third_party/numeric.ts to add 'numeric' to the global scope and require that tensorboard code import that wrapper rather than importing numeric directly. We add a CI check to ensure that numeric is not imported directly.
bmd3k added a commit that referenced this issue Sep 22, 2022
The change to use the esbuild bundler (#5829) broke the projector plugin (#5924).

The root cause is in the 'numeric' library, which we use for calculating the PCA. The library requires that the symbol 'numeric' is available in the global scope when its operations are executed by other modules. See, for example, how the definition of some of its operations refer to the string 'numeric' in the Function definition, unmodifiable by the
bundler/minification code:

https://github.com/sloisel/numeric/blob/656fa1254be540f428710738ca9c1539625777f1/src/numeric.js#L696

The esbuild bundler does not keep 'numeric' in global scope and instead renames it as part of bundling/minification. We work around this by manually adding it to global scope.

We introduce the wrapper tensorboard/webapp/third_party/numeric.ts to add 'numeric' to the global scope and require that tensorboard code import that wrapper rather than importing numeric directly. We add a CI check to ensure that numeric is not imported directly.
@bmd3k
Copy link
Contributor

bmd3k commented Sep 26, 2022

Thanks for bringing this to our attention. The projector plugin should now be fixed in TensorBoard 2.10.1.

@bmd3k bmd3k self-assigned this Sep 26, 2022
@bmd3k bmd3k closed this as completed Sep 26, 2022
bmd3k added a commit to bmd3k/tensorboard that referenced this issue Sep 26, 2022
The change to use the esbuild bundler (tensorflow#5829) broke the projector plugin (tensorflow#5924).

The root cause is in the 'numeric' library, which we use for calculating the PCA. The library requires that the symbol 'numeric' is available in the global scope when its operations are executed by other modules. See, for example, how the definition of some of its operations refer to the string 'numeric' in the Function definition, unmodifiable by the
bundler/minification code:

https://github.com/sloisel/numeric/blob/656fa1254be540f428710738ca9c1539625777f1/src/numeric.js#L696

The esbuild bundler does not keep 'numeric' in global scope and instead renames it as part of bundling/minification. We work around this by manually adding it to global scope.

We introduce the wrapper tensorboard/webapp/third_party/numeric.ts to add 'numeric' to the global scope and require that tensorboard code import that wrapper rather than importing numeric directly. We add a CI check to ensure that numeric is not imported directly.
yatbear pushed a commit to yatbear/tensorboard that referenced this issue Mar 27, 2023
The change to use the esbuild bundler (tensorflow#5829) broke the projector plugin (tensorflow#5924).

The root cause is in the 'numeric' library, which we use for calculating the PCA. The library requires that the symbol 'numeric' is available in the global scope when its operations are executed by other modules. See, for example, how the definition of some of its operations refer to the string 'numeric' in the Function definition, unmodifiable by the
bundler/minification code:

https://github.com/sloisel/numeric/blob/656fa1254be540f428710738ca9c1539625777f1/src/numeric.js#L696

The esbuild bundler does not keep 'numeric' in global scope and instead renames it as part of bundling/minification. We work around this by manually adding it to global scope.

We introduce the wrapper tensorboard/webapp/third_party/numeric.ts to add 'numeric' to the global scope and require that tensorboard code import that wrapper rather than importing numeric directly. We add a CI check to ensure that numeric is not imported directly.
dna2github pushed a commit to dna2fork/tensorboard that referenced this issue May 1, 2023
The change to use the esbuild bundler (tensorflow#5829) broke the projector plugin (tensorflow#5924).

The root cause is in the 'numeric' library, which we use for calculating the PCA. The library requires that the symbol 'numeric' is available in the global scope when its operations are executed by other modules. See, for example, how the definition of some of its operations refer to the string 'numeric' in the Function definition, unmodifiable by the
bundler/minification code:

https://github.com/sloisel/numeric/blob/656fa1254be540f428710738ca9c1539625777f1/src/numeric.js#L696

The esbuild bundler does not keep 'numeric' in global scope and instead renames it as part of bundling/minification. We work around this by manually adding it to global scope.

We introduce the wrapper tensorboard/webapp/third_party/numeric.ts to add 'numeric' to the global scope and require that tensorboard code import that wrapper rather than importing numeric directly. We add a CI check to ensure that numeric is not imported directly.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants