Open13

M1MacのPyCharmで動くAI自動作曲環境(仮)を整えたい

log5log5

セットアップ後にminicondaのもろもろが出来上がっているので、PyCharm上でPython interpreter として Conda を指定。

(~/miniconda/condabin/conda を選んだらなんかうまく行った)

log5log5

PyCharmエディタが「music21が見つからない」と赤線を引くので、入れる

$ conda install -c conda-forge music21
log5log5

PyCharmエディタが「tensorflow_probabilityがない」と赤線を引くので、入れる

$ conda install -c conda-forge tensorflow-probability
log5log5

サンプルコードについて、MusicXMLの取り込みまではうまくいくが、なんか怒られる...

  File "/Users/judau/miniconda/lib/python3.10/site-packages/tensorflow_probability/python/layers/distribution_layer.py", line 171, in _fn
    value_is_seq = isinstance(d.dtype, collections.Sequence)
AttributeError: Exception encountered when calling layer "multivariate_normal_tri_l" (type MultivariateNormalTriL).

module 'collections' has no attribute 'Sequence'

たぶん、Python 3.10 以降の collections の変更によるものだろうけど、condaのpython 3.10 のはずなのにおかしいなぁ...
と思って distribution_layer.py を見に行ったら, 171 行目が

value_is_seq = isinstance(d.dtype, collections.Sequence)

になってた😭

ちなみにGithub見に行ったら治ってたっぽいのだが...
https://github.com/tensorflow/probability/commit/76ff71ba27a5a035fa6220e6132744ac89a56fdf
これどうやって取り込めばいいんだ...

めんどくさかったのでローカルのを直接 abc に書き換える。(よくない)

log5log5

暫定的に上の良くない方法で直して実行してみると、モデル学習が動き出しはしたものの...またなんか謎なエラーに

2 root error(s) found.
  (0) NOT_FOUND:  could not find registered platform with id: 0x*********
	 [[{{node StatefulPartitionedCall_9}}]]
	 [[gradient_tape/model/multivariate_normal_tri_l/MultivariateNormalTriL/model_multivariate_normal_tri_l_MultivariateNormalTriL_fill_scale_tril/forward/model_multivariate_normal_tri_l_MultivariateNormalTriL_fill_scale_tril_transform_diagonal/forward/zeros/_94]]
  (1) NOT_FOUND:  could not find registered platform with id: 0x*********
	 [[{{node StatefulPartitionedCall_9}}]]
0 successful operations.
0 derived errors ignored. [Op:__inference_train_function_8939]

さすがにこれはTensorFlowの知識なしでは解決できなそう...

log5log5

よくよくみるとこのメッセージもだいぶ不穏...

2023-01-02 16:24:38.648524: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:306] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.
2023-01-02 16:24:38.648544: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:272] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: <undefined>)

参考: https://developer.apple.com/forums/thread/693292

log5log5

手がかりになるかも知れないメッセージも埋まってた

WARNING:tensorflow:Please fix your imports. Module tensorflow.python.training.tracking.data_structures has been moved to tensorflow.python.trackable.data_structures. The old module will be deleted in version 2.11.