WSL2でMusic Transfomer実行環境をセットアップ
はじめに
初投稿です。音楽を生成するAIに興味を持ち、恥ずかしながら最近になってMusic Transfomerについて知りました。Music TransfomerをWSL2で実際に動かすまでにかなり手間取ったので、備忘録として記載しようと思います。
目的
Google公式のMusic TransfomerはこちらのURLに実行するためのノートブックがありますが、2023年4月現在、magentaバージョンなどの変化により、実行できません。
そこで、ローカルのWSL2環境にmagentaをセットアップして、AI作曲することを目的とします。(本記事ではMusic Transfomerのセットアップまでを記載)
環境
WSL2がセットアップされていることが前提です。
ホストOS: Windows11
WSL2: 5.10.16.3-microsoft-standard-WSL2(Ubuntu 20.04)
CPU: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz 2.30 GHz
GPU: NVIDIAグラボを搭載していますが、今回はCPUで実行します。(うまくWSL2環境でGPUセットアップできなかった)
WSL2上へのmagentaのインストール
以下のmagentaのリポジトリのREADME.mdにあるように、Anacondaの仮想環境上にインストールすることを推奨していますので、そちらに従って、Anacondaに仮想環境を構築していきます。
なお、Anacondaインストールまでの手順は以下の記事を参考にさせていただきました。
まずはmagentaを実行するために必要なライブラリをインストール
$ sudo apt update
$ sudo apt install build-essential libasound2-dev libjack-dev portaudio19-dev
その後Anacondaをインストール
$ wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
$ bash Anaconda3-2022.05-Linux-x86_64.sh
$ source ~/.bashrc
次にmagentaの公式スクリプトを使用して、magentaの仮想環境を構築します。
$ curl https://raw.githubusercontent.com/tensorflow/magenta/main/magenta/tools/magenta-install.sh > /tmp/magenta-install.sh
$ bash /tmp/magenta-install.sh
正常に実行出来たら一度ターミナルを閉じ、再度開いて、以下のコマンドでmagenta仮想環境を起動します。
$ source activate magenta
その後、magentaリポジトリをクローンし、magentaに必要なライブラリをpipでインストールしていきます。
$ git clone https://github.com/magenta/magenta.git
$ cd magenta
$ pip install -e .
エラーなくインストールが完了すればひとまずmagentaのセットアップは完了です。ただし、最新のmagentaの状態だと、gansynthや、music_vaeは実行できたものの、Music Transfomerを使用したScore2Perfが実行できませんでした。ちなみに最新のmagentaバージョンは2.1.4
です。
そこでmagentaバージョンをダウングレードして、Music Transfomerが動く環境までダウングレードさせたというわけです。(逆に最新のmagentaバージョンで動くのである場合、無理に以下の処置は実施しないほうが良いです。)
magentaのダウングレード
さて、ダウングレードしたいわけですが、どのバージョンまで下げればよいのか、tensorflow、tensor2tensorとのバージョン互換性などの縛りもきつく、かなり難航しました。最終的に参考にしたのは、以下のリポジトリです。
こちらでMusic Transfomerが1.3.1
で実行されていること、requirements.txtでtensorflowなどのバージョンも記載されていたので、こちらにバージョンを合わせるようにしていきました。
まずは、tensorflow1.15.2
へダウングレード
$ pip install tensorflow==1.15.2
次にmagenta1.3.1
へダウングレード
pip install magenta==1.3.1
次に tensor2tensor1.15.5
へダウングレード
pip install tensor2tensor==1.15.5
次にtensorflow-probability0.7.0
へダウングレード
pip install tensorflow-probability==0.7.0
次にtensorflow-datasets3.0.0
へダウングレード
pip install tensorflow-datasets==3.0.0
最後にnumpy1.19.5
へダウングレード
pip install pip install numpy==1.19.5
以上のダウングレードを行ったところ、Music Transfomerを使用したAI作曲ができました。
一応以下のコマンドで依存関係に問題がないかはチェックしたほうが良いです。
$ pip check
No broken requirements found.
pip一覧
一応Music Transfomerを動かすことができたpipの一覧を載せておきます。
absl-py==1.2.0
apache-beam==2.18.0
astor==0.8.1
astunparse==1.6.3
attrs==23.1.0
audioread==3.0.0
avro-python3==1.10.2
backcall==0.2.0
backports.tempfile==1.0
backports.weakref==1.0.post1
bokeh==2.4.3
bz2file==0.98
cachetools==3.1.1
certifi @ file:///croot/certifi_1671487769961/work/certifi
cffi==1.15.1
charset-normalizer==3.1.0
click==8.1.3
cloudpickle==1.2.2
contextlib2==21.6.0
crcmod==1.7
cycler==0.11.0
decorator==5.1.1
dill==0.3.1.1
dm-sonnet==1.35
dm-tree==0.1.8
docopt==0.6.2
dopamine-rl==3.0.1
etils==0.9.0
fastavro==0.21.24
fasteners==0.18
Flask==2.2.5
flatbuffers==1.12
fonttools==4.38.0
future==0.18.3
gast==0.2.2
gevent==22.10.2
gin-config==0.5.0
google-api-core==1.34.0
google-api-python-client==1.12.2
google-apitools==0.5.28
google-auth==1.35.0
google-auth-httplib2==0.0.4
google-auth-oauthlib==0.4.6
google-cloud-bigquery==1.17.1
google-cloud-bigtable==1.0.0
google-cloud-core==1.7.3
google-cloud-datastore==1.7.4
google-cloud-pubsub==1.0.2
google-pasta==0.2.0
google-resumable-media==0.4.1
googleapis-common-protos==1.59.0
greenlet==2.0.2
grpc-google-iam-v1==0.12.6
grpcio==1.54.0
grpcio-status==1.48.2
gunicorn==20.1.0
gym==0.14.0
gym-notices==0.0.8
h5py==3.8.0
hdfs==2.7.0
httplib2==0.12.0
idna==3.4
imageio==2.20.0
importlib-metadata==6.6.0
importlib-resources==5.12.0
install==1.3.5
intervaltree==3.1.0
ipython==7.34.0
itsdangerous==2.1.2
jedi==0.18.2
Jinja2==3.1.2
joblib==1.2.0
keras==2.9.0
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.2
kfac==0.2.0
kiwisolver==1.4.4
libclang==16.0.0
librosa==0.7.2
llvmlite==0.32.1
magenta==1.3.1
Markdown==3.4.3
MarkupSafe==2.1.2
matplotlib==3.5.2
matplotlib-inline==0.1.6
mesh-tensorflow==0.1.21
mido==1.2.6
mir-eval==0.7
mock==2.0.0
mpmath==1.3.0
networkx==2.6.3
note-seq==0.0.3
numba==0.49.1
numpy==1.19.5
oauth2client==3.0.0
oauthlib==3.2.2
opencv-python==4.7.0.72
opt-einsum==3.3.0
packaging==23.1
pandas==1.3.5
parso==0.8.3
pbr==5.11.1
pexpect==4.8.0
pickleshare==0.7.5
Pillow==9.2.0
pretty-midi==0.2.9
promise==2.3
prompt-toolkit==3.0.38
protobuf==3.19.6
psutil==5.9.5
ptyprocess==0.7.0
pyarrow==0.15.1
pyasn1==0.5.0
pyasn1-modules==0.3.0
pycparser==2.21
pydot==1.4.2
pydub==0.25.1
pyglet==1.3.2
Pygments==2.15.1
pygtrie==2.5.0
pymongo==3.13.0
pyparsing==3.0.9
pypng==0.20220715.0
python-dateutil==2.8.2
python-rtmidi==1.1.2
pytz==2023.3
PyWavelets==1.3.0
PyYAML==6.0
requests==2.29.0
requests-oauthlib==1.3.1
resampy==0.3.1
rsa==4.9
scikit-image==0.19.3
scikit-learn==1.0.2
scipy==1.7.3
semantic-version==2.10.0
six==1.16.0
sk-video==1.1.10
sortedcontainers==2.4.0
soundfile==0.12.1
sox==1.4.1
sympy==1.10.1
tabulate==0.9.0
tensor2tensor==1.15.5
tensorboard==1.15.0
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.1
tensorflow==1.15.2
tensorflow-addons==0.19.0
tensorflow-datasets==3.0.0
tensorflow-estimator==1.15.1
tensorflow-gan==2.1.0
tensorflow-hub==0.13.0
tensorflow-io-gcs-filesystem==0.32.0
tensorflow-metadata==1.12.0
tensorflow-probability==0.7.0
termcolor==2.3.0
tf-slim==1.1.0
tfds-nightly==4.8.2.dev202301270045
threadpoolctl==3.1.0
tifffile==2021.11.2
toml==0.10.2
tornado==6.2
tqdm==4.65.0
traitlets==5.9.0
typeguard==3.0.2
typing_extensions==4.5.0
uritemplate==3.0.1
urllib3==1.26.15
wcwidth==0.2.6
Werkzeug==2.2.3
wrapt==1.15.0
zipp==3.15.0
zope.event==4.6
zope.interface==6.0
終わりに
今回は初投稿ということで、magentaのMusic Transfomerのセットアップについて記載しました。
次回はこちらの仮想環境を使用してAI作曲するまでを書ければと思います。
Discussion