📌

WSL2でmusikaでfinetuning

2023/05/20に公開
2

はじめに

前回は音楽生成AIのmagentaのMusic Transfomerを使用してmidiファイルを入力として続きの音楽を生成してみました。その際の記事は以下です。
https://zenn.dev/ihpolyphe/articles/fa8f56e67fc6e7

ただ、生成した曲はあまり納得のいくものではなかったので、今回はmusikaを使用して好きな曲をファインチューニングで学習させて、自分好みの音楽が生成できるかを試してみようと思います。

musikaとは

2022年の8月に採択された音楽生成AI。GANベースで個人PCでも高速に学習ができるとのこと。
オンラインデモや、colabも用意されているので、気軽に試すことができます。

実行環境

環境
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 GeForce RTX 3050 Ti Laptop GPU

WSL2とAnacondaがインストールされていることが前提です。以下を参考にセットアップさせていただきました。

また、今回GPUを使用して学習させています。CPUで実行すると250epochの1epochの1%に5分くらいかかりました。単純計算、完了時間=5分100250=2000時間くらいかかりそうだったのでGPUを使用しています。

WSL2でGPUを使用する方法は以下を参考にさせていただきました。
https://zenn.dev/rhene/articles/af7a0162ee3a6332decc

musikaのセットアップ

公式GitHubに丁寧にセットアップ方法が書いてあるので、特に詰まったところはありませんでした。
condaでpython3.9環境を作成し、

conda create -n musika python=3.9

作成出来たらactivateします。

conda activate musika

https://zenn.dev/rhene/articles/af7a0162ee3a6332decc

を参考に、cuda11.2をインストールしているので、以下のコマンドでCUDAをインストールします。

conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1.0

WSL2なので以下も実行しました。

mkdir -p $CONDA_PREFIX/etc/conda/activate.d

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/' > $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh

最後に、musikaをクローンして、必要なライブラリをインストールしたらセットアップ完了です。

git clone https://github.com/marcoppasini/musika
cd musika
pip install -r requirements.txt

musika実行

musikaが動かせるかを確認します。
以下のコマンドでローカルブラウザで音楽サンプルが生成できるかを確認できます。

python musika_test.py --load_path checkpoints/misc

こちらのコマンドで10個のサンプルミュージックを生成できます。

python musika_generate.py --load_path checkpoints/misc --num_samples 10 --seconds 120 --save_path generations

Finetuning

最後にファインチューニングの実行を行います。まずは学習させたい音楽を用意します。mp3や、wavファイルなどは取り込めました。midiとかもいけるのかもしれないですね。

まずは学習させたい音楽フォルダを指してAutoEncodingさせます。以下のコマンドです。

python musika_encode.py --files_path folder_of_audio_files --save_path folder_of_encodings --whole True

こちらを実行するとnpyファイルが生成されるので、これを入力として学習させるという流れです。

あとは以下のコマンドでFinetuningが開始されます。1%10秒もかかってないので、250epoch70時間、、、てめちゃめちゃ時間かかるやん!ということでepoch数は調整して実行しましょう。

python musika_train.py --train_path folder_of_encodings --load_path checkpoints/misc --lr 0.00004 --epochs 20

以下でepoch数がepochsの引数で設定できそうですね。
https://github.com/marcoppasini/musika/blob/main/parse/parse_train.py#L118

このようにしてファインチューニングさせたモデルで生成させた結果が以下です。なかなかおしゃれな曲ができました。
https://www.youtube.com/watch?v=5DboYj0EmcI

終わりに

今回はmusikaのセットアップ方法と、Finetuningを行うまでをまとめました。次は学習させたモデルを使って曲を生成させて聞いてみようと思います。最後まで読んだいただきありがとうございました。

GitHubで編集を提案

Discussion

きはるんきはるん

こんにちは、日本在住の大学4年生です。
突然のコメント、申し訳ございません。
人工知能に興味があり、初心者ながらに自動作曲をテーマにして研究に取り組もうと考え、こちらの記事を参考に環境設定を行っておりましたところ、
”pip install -r requirements.txt” のところで
"Could not find a version that satisfies the requirement gradio==3.3.1 (from versions: none)" と、存在しないとのエラーが出てしまいました。
pip install gradio 等も試したのですが、エラー文なだけあってやはりだめでした。

環境は
ubuntu: 22.04.2 LTS
CPU: Core i7-8750H
GPU: NVIDIA Quadro P3200
です。
よろしければお力添えをいただけると幸いです。
よろしくお願いいたします。