magentaセットアップをwslでしたら躓いてDockerの良さを再認識したメモ
音の自動生成を試したい!
ということでgoogleさんが作っているmagentaというツールを使おうと思いセットアップをしてみました。結構躓いたのでメモ
↓の手順で触っていきました。
1 Windowsで行うためwslの設定から
pipでインストールすると新しいtensorflowのサポートがされておらず以下の公式サイトをみつつ情報をあつめ進めていきました。
2 ハンズオンを触っていく
ここから出会ったエラーと解決を書いていますが 3 本番はここからだった
へ飛べばスキップできるものです。さくさくセットアップしたい場合は飛ばしてください。
みたいなエラーとなる pipには既にtensorflow1系は提供されていないのでpipでインストールした場所 すると という別のエラーが出てきたので、さっきの箇所は通ったようです、同じようにエラーに対応していきます。 基本的には この調子で進めると ‘‘‘
AttributeError: module 'tensorflow' has no attribute 'contrib'
‘‘‘ というエラーで行き詰ってしまいました。調べると
Migrate your TensorFlow 1 code to TensorFlow 2 | TensorFlow Core 一切のサポートが切られていて、tensorflow-addonというのも試しましたがうまくいきませんでした。 そこで、ふとmagentaのReleaseを確認したらtensorflow2のサポートのsourcecodeが貼ってあり Releases · magenta/magenta · GitHub ひとまず pipでインストールしたmagenta自体を置き換えたので pipで pipで となりpygameというものでコケてしまう
調べると
Python - pythonのライブラリをインストールしたいのですが、エラーが出てしまい進みません|teratail を発見、Python3.8を使っているから良くないみたいなのでpyenvを使ってPython3.7に切り替えると無事成功 そして最初のコマンドは通ったので が再び浮上、今回はmagenta_sessionの方で出ているようだったのでmagenta_sessionのディレクトリを全検索して magenta_session/convert_to_melody_dataset.py at master · icoxfog417/magenta_session · GitHub
の にすることで解決 magenta_session/convert_to_melody_dataset.py at master · icoxfog417/magenta_session · GitHub
の tf.data.TFRecordDataset | TensorFlow Core v2.3.0 を使うようにするのが良いそうでした に置き換えて通った が出てきて初CUDA実行の気配 ここで色々躓いて、そもそも環境のセットアップがきちんと行えておらずwsl側でgpuを認識していないようでした。driverのインストール/アンインストールなどもしたのですが改善せず。省略可能領域
python scripts/data/create_note_sequences.py
を行おうとするとそもそもtensorflowのバージョンに合っていないので def log_statistics_list(stats_list, logger_fn=tf.logging.info):
AttributeError: module 'tensorflow' has no attribute 'logging'
/home/{ユーザー名}/.local/lib/python3.8/site-packages/magenta/
に行って中身の必要箇所を置き換える手段をとりました class NoteSequenceRecordWriter(tf.python_io.TFRecordWriter):
AttributeError: module 'tensorflow' has no attribute 'python_io'
tf.hoge
を tf.compat.v1.hoge
にすれば通ります。3 本番はここからだった
Magenta v2.0.1
をダウンロードして、pipでインストールしていた場所 /home/{ユーザー名}/.local/lib/python3.8/site-packages/magenta/
で中身を全部置き換えると違うエラーとなり進んだようです。2 ハンズオンを触っていく
の労力は意味なかったようです。pipのパッケージ更新してくれんかな…ModuleNotFoundError: No module named 'tensorflow_probability'
tensorflow_probability
をインストールすれば解決ModuleNotFoundError: No module named 'tensor2tensor'
tensor2tensor
をinstallしようとするとCollecting pygame
Using cached pygame-1.9.6.tar.gz (3.2 MB)
ERROR: Command errored out with exit status 1:
python scripts/data/convert_to_melody_dataset.py --config attention_rnn
を実行していくAttributeError: module 'tensorflow' has no attribute 'app'
tf.app
から tf.compat.v1.app
で対処 pipeline_instance = md.get_pipeline(config, md.FLAGS.eval_ratio)
get_pipeline
が無いと言われるので調べると pipeline_instance = md.melody_rnn_pipeline.get_pipeline(config, md.FLAGS.eval_ratio)
TypeError: 'float' object is not iterable
md.pipeline.tf_record_iterator(tgt.SEQUENCE_FILE, pipeline_instance.input_type),
tf_record_iterator
は使われなくなるそうで今後は tf.data.TFRecordDataset(tgt.SEQUENCE_FILE, pipeline_instance.input_type),
2020-08-10 19:54:24.507256: E tensorflow/stream_executor/cuda/cuda_driver.cc:314] failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
を頼りに色々やってみたのですがWindowsがプレビューじゃないからぽいのでWindowsのダウンロードを待ちながらmagentaにはdockerもあるので、そちらを試したところ秒で処理が動いたのっでもうDockerでいいんじゃないかと思いました。wslでgpuを使いたい気持ちがあったものの結構格闘してすり減っていたのでDocker万歳ということで動かしていきます。(Windowsプレビューでも動かなかったのでもうわからないからやっぱDocker最高)
追記 (2020/08/12) wslのバージョンが足りてなかった、MicrosoftStoreからインストールが何故かできなかったのでマニュアルインストールの手段をとる docs.microsoft.com
dockerのセットアップがうまくいかず
Windows Subsystem for Linux(WSL)で Docker を利用する - simplestarの技術ブログ
Repository configuration | nvidia-docker
この2つの記事を参考にセットアップして動くことを確認
docker runするとエラーが出ていて
cgroups: cannot find cgroup mount destination
は
Docker command でドッカー練習する時のメモ | Hapicode
を参考に解決
TensorFlowからGPUが認識できているかを2行コードで確認する - 動かざることバグの如し
などをみてgpuの認識を確認
sudo mkdir /sys/fs/cgroup/systemd sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
すると動いた
以下のサイトでDockerfileのベースを探すとcuda周りのセットアップをしなくていいので最高
おわり
セットアップまでにかなり引っかかるポイントがあり折れました。自分の環境、セットアップの順番で起こったことなので他の人の環境だとまた違うことが起こる可能性は高いですが、何か参考になればと思います。(最初からDocker使う方が時短にはなる)
また個人的にjetbrains系のエディターをかなりつかうのでwsl環境と同期する方法があるのか調べると Configure an interpreter using WSL - Help | PyCharm あったのでjetbrainsを使ってwslで環境構築が終わった人は