M1MacのPyCharmで動くAI自動作曲環境(仮)を整えたい
これのTensorFlow版スターターキットがM1Mac上で動くといいなと思って環境を構築中
まずは https://developer.apple.com/metal/tensorflow-plugin/ に従って、TensorFlowをM1Mac用にセットアップ
セットアップ後にminicondaのもろもろが出来上がっているので、PyCharm上でPython interpreter として Conda を指定。
(~/miniconda/condabin/conda を選んだらなんかうまく行った)
PyCharmエディタが「music21が見つからない」と赤線を引くので、入れる
$ conda install -c conda-forge music21
PyCharmエディタが「tensorflow_probabilityがない」と赤線を引くので、入れる
$ conda install -c conda-forge tensorflow-probability
サンプルコードについて、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見に行ったら治ってたっぽいのだが...
これどうやって取り込めばいいんだ...めんどくさかったのでローカルのを直接 abc に書き換える。(よくない)
暫定的に上の良くない方法で直して実行してみると、モデル学習が動き出しはしたものの...またなんか謎なエラーに
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の知識なしでは解決できなそう...
よくよくみるとこのメッセージもだいぶ不穏...
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>)
手がかりになるかも知れないメッセージも埋まってた
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.
あとで読みます!
Tensorflow on M1 Macbook Pro, error when model fit executes - https://developer.apple.com/forums/thread/721619?answerId=739446022#739446022
あとでバージョン戻してみる
Tensorflow on M1 Macbook Pro, error when model fit executes - https://developer.apple.com/forums/thread/721619?answerId=739446022#739446022
この通りにやったら普通に動いた
いったんリポジトリを作った