tensorboardX: tensorboardX is incompatible with protobuf 4.21.0
This is originally found when our CI server installed protobuf 4.12.0, which was released today, as a dependency of the tensorboardX.
$ pip3 install tensorboardX # installs the newest protobuf as a dependency
$ python3
Python 3.8.13 (default, Mar 17 2022, 16:53:17)
[Clang 9.1.0 (clang-902.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from tensorboardX import SummaryWriter
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/dtakahashi/Library/Python/3.8/lib/python/site-packages/tensorboardX/__init__.py", line 5, in <module>
from .torchvis import TorchVis
File "/Users/dtakahashi/Library/Python/3.8/lib/python/site-packages/tensorboardX/torchvis.py", line 11, in <module>
from .writer import SummaryWriter
File "/Users/dtakahashi/Library/Python/3.8/lib/python/site-packages/tensorboardX/writer.py", line 17, in <module>
from .comet_utils import CometLogger
File "/Users/dtakahashi/Library/Python/3.8/lib/python/site-packages/tensorboardX/comet_utils.py", line 7, in <module>
from .summary import _clean_tag
File "/Users/dtakahashi/Library/Python/3.8/lib/python/site-packages/tensorboardX/summary.py", line 13, in <module>
from .proto.summary_pb2 import Summary
File "/Users/dtakahashi/Library/Python/3.8/lib/python/site-packages/tensorboardX/proto/summary_pb2.py", line 16, in <module>
from tensorboardX.proto import tensor_pb2 as tensorboardX_dot_proto_dot_tensor__pb2
File "/Users/dtakahashi/Library/Python/3.8/lib/python/site-packages/tensorboardX/proto/tensor_pb2.py", line 16, in <module>
from tensorboardX.proto import resource_handle_pb2 as tensorboardX_dot_proto_dot_resource__handle__pb2
File "/Users/dtakahashi/Library/Python/3.8/lib/python/site-packages/tensorboardX/proto/resource_handle_pb2.py", line 36, in <module>
_descriptor.FieldDescriptor(
File "/Users/dtakahashi/Library/Python/3.8/lib/python/site-packages/google/protobuf/descriptor.py", line 560, in __new__
_message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
1. Downgrade the protobuf package to 3.20.x or lower.
2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
>>>
Environment
$ pip3 list | grep -E "torch|proto|tensor"
protobuf 4.21.0
tensorboard 2.7.0
tensorboard-data-server 0.6.1
tensorboard-plugin-wit 1.8.0
tensorboardX 2.5
torch 1.10.1
$ python3 --version
Python 3.8.13
Thank you very much in advance.
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Reactions: 1
- Comments: 16 (5 by maintainers)
tensorboard now supports protobuf 4, can we reopen this and upgrade/unpin?
+1, brax uses tensorboardX and we are seeing this problem too.
But also, thanks for tensorboardX, we find it quite useful 😃
Got your point, will have it fixed this weekend. Thanks for the report.
@lanpa I just tried and it’s working for Brax:
So looks like I’m OK with 3.20.1 - thanks for checking. I hope that when tensorboard upstream fixes this protobuf compatibility issue, it allows you to undo this change.
pip install -U protobuf==3.20.1 hope this helps you