TensorboardとTensorboardXの競合エラーを解決した話

こんにちは。

素人で的外れなこと言ってるかもしらんけど許してくれる人だけ進みたまへ。

【状況】

私はWindows上のvenc仮想環境にてMelltronを動かそうとしてる無頼の者です。python3.6.8、cuda10.1、cudaDNN7.6.5とかだったはず。
pytorch/waveglow/apexなど付帯するいろいろをzipでMelltrom下へ入れる。LJSpeechはGoogle Colabで使ってたやつ流用しようとローカルへDLしたらなぜか1.3GBしかなく半分ほどファイルが失われてるらしい。(現在本家からDL中)

でもまあとりあえずtrain走らせとこうとpython train.py --output_directory=outdir --log_directory=logdir
No module named ほにゃららがいくらか発生。そこはバージョン選んでpip installしたらよかった。

【ジャブ】

一応no module問題と解決策も記しておく。

‘numba.decorators’ 0.50が入ると何かが削除されるらしい
!pip install numba==0.48

‘numpy.testing.decorators’
!pip install -U scipy

本題前にまだジャブ的な問題が起こってるので記録しておく。

TypeError: Couldn’t build proto file into descriptor pool!
Invalid proto descriptor for file “tensorboard/compat/proto/tensor_shape.proto”:

protoファイルを構築できませんでした 無効なプロト記述子うんぬん
これはprotobufを入れなおすと通してもらえた。

!pip uninstall protobuf
!pip install --no-binary=protobuf protobuf

uninstall時に「これも削除されるがよかまい?」と問われるのでy。
赤字でERROR: tensorboard 1.15.0 has requirement setuptools>=41.0.0, but you’ll have setuptools 40.6.2 which is incompatible.など言われるがとりあえず気にしない。下手に更新すると他との依存関係が怖いんよ。

ここからの前提として現時点のテンソルバージョン。
Tensorflow 1.15.2
Tensorflow-estimator 1.15.1
Tensorboard 1.15.0
TensorboardX 1.1

【ストレート】

OK, ここからが本題。

Conflict register for file “tensorboard/compat/proto/tensor_shape.proto”: tensorboard.TensorShapeProto is already defined in file “tensorboardX/src/tensor_shape.proto”. Please fix the conflict by adding package name on the proto file, or use different name for the duplication.

Google翻訳様いわく、

ファイル「tensorboard / compat / proto / tensor_shape.proto」の競合レジスタ:tensorboard.TensorShapeProtoは、ファイル「tensorboardX / src / tensor_shape.proto」ですでに定義されています。 protoファイルにパッケージ名を追加して競合を修正するか、複製に別の名前を使用してください。

これがなっかなか解決しなかった本記事の中核を成す部分。
要はTensorboardとTensorBoardXで競合を起こしていると・・・なにその虚弱な作り。どっちか1本にまとめて!
まあ我々は作っていただいたものを使わせていただく消費者の立場であるからして、でかいことは言えません。

これに対してまず
!pip install allennlp
また赤字で
ERROR: Could not find a version that satisfies the requirement torch<1.6.0,>=1.5.0 (from allennlp) (from versions: 0.1.2, 0.1.2.post1, 0.1.2.post2)
ERROR: No matching distribution found for torch<1.6.0,>=1.5.0 (from allennlp)

とか言われたけどひとまず気にしない。
まだ競合エラーが出るのを確認して !pip install allennlp-models
ERROR: Could not find a version that satisfies the requirement torch<1.6.0,>=1.5.0 (from allennlp==1.0.0->allennlp-models) (from versions: 0.1.2, 0.1.2.post1, 0.1.2.post2)
ERROR: No matching distribution found for torch<1.6.0,>=1.5.0 (from allennlp==1.0.0->allennlp-models)

気にしない。

どう影響あるかわからんけどここの段階で(やってなかったのに気付き)apexの !pip install -r requirements.txt してますね。
とりあえずallennlp入れても変化なし。ぬーん。

【カウンター(解決)】

んで、コチラにて「Tensorboard==1.14.0 TensorboardX==1.8で動作してるよ」っていう御仁を信じて
!pip install tensorboardX==1.8

これで競合エラーが出なくなった。まあLJSファイル欠損問題でNo such file or directoryは出るんですがね、わはは。

一応現在の !pip list 結果をコピペしておく。いらんやろ。

absl-py 0.9.0
astor 0.8.1
atomicwrites 1.4.0
attrs 19.3.0
audioread 2.1.8
certifi 2020.6.20
cffi 1.14.0
chardet 3.0.4
cmake 3.17.3
colorama 0.4.3
cxxfilt 0.2.1
cycler 0.10.0
decorator 4.4.2
future 0.18.2
gast 0.2.2
google-pasta 0.2.0
grpcio 1.29.0
h5py 2.10.0
idna 2.9
importlib-metadata 1.6.1
inflect 0.2.5
intel-openmp 2019.0
jamo 0.4.1
joblib 0.15.1
Keras-Applications 1.0.8
Keras-Preprocessing 1.1.2
librosa 0.6.0
llvmlite 0.31.0
Markdown 3.2.2
matplotlib 2.1.0
mkl 2019.0
mkl-include 2019.0
more-itertools 8.4.0
music21 5.7.2
ninja 1.10.0.post1
nltk 3.4.5
numba 0.48.0
numpy 1.19.0
opt-einsum 3.2.1
packaging 20.4
Pillow 7.1.2
pip 20.1.1
pluggy 0.13.1
protobuf 3.12.2
py 1.8.2
pycparser 2.20
pyparsing 2.4.7
pytest 5.4.3
python-dateutil 2.8.1
pytz 2020.1
PyYAML 5.3.1
requests 2.24.0
resampy 0.2.2
scikit-learn 0.23.1
scipy 1.5.0
setuptools 40.6.2
six 1.15.0
tensorboard 1.15.0
tensorboardX 1.8
tensorflow 1.15.2
tensorflow-estimator 1.15.1
termcolor 1.1.0
threadpoolctl 2.1.0
torch 1.6.0a0+ab8a99b
torchvision 0.6.1+cu101
tqdm 4.46.1
Unidecode 1.0.22
urllib3 1.25.9
wcwidth 0.2.4
Werkzeug 1.0.1
wheel 0.34.2
wrapt 1.12.1
zipp 3.1.0

あれこれDLしてた影響か、LJSダウンロードに残り2時間かかる。
通信制限されても皆さま機嫌よくお過ごしください。それではさようなら。