MusicGen は、音楽生成のためのシンプルで制御可能なモデルです。これは、50 Hz でサンプリングされた 4 つのコードブックを備えた 32 kHz EnCodec トークナイザーでトレーニングされた単一ステージの自動回帰 Transformer モデルです。 MusicLM などの既存のメソッドとは異なり、MusicGen は自己教師ありセマンティック表現を必要とせず、4 つのコードブックすべてを 1 つのパスで生成します。コードブック間にわずかな遅延を導入することで、コードブックを並行して予測できるため、音声の自動回帰ステップが 1 秒あたり 50 ステップになるだけであることを著者らは示しています。彼らは、MusicGen のトレーニングに 20,000 時間のライセンスされた音楽を使用しました。具体的には、10,000 個の高品質音楽トラックの内部データセットと、ShutterStock および Pond5 の音楽データに依存していました。
このモデルの詳細については、こちらを参照してください。
このモデルをデモしたり、Replicate の API で使用する方法をここで学ぶことができます。
Cog は、機械学習モデルを標準の運用対応コンテナにパッケージ化するオープンソース ツールです。パッケージ化されたモデルを独自のインフラストラクチャまたはレプリケートにデプロイし、ユーザーが Web インターフェイスまたは API を介してモデルを操作できるようにすることができます。
コグ。次の手順に従って Cog をインストールするか、単に実行します。
sudo curl -o /usr/local/bin/cog -L "https://github.com/replicate/cog/releases/latest/download/cog_$(uname -s)_$(uname -m)"
sudo chmod +x /usr/local/bin/cog
Cog を使用するには、Docker のインストールも必要であることに注意してください。
git clone https://github.com/replicate/cog-musicgen-melody
モデルを実行するには、モデルの Docker イメージのローカル コピーが必要です。この要件を満たすには、次のようにpredict
呼び出しでイメージ ID を指定します。
cog predict r8.im/joehoover/musicgen-melody@sha256:1a53415e6c4549e3022a0af82f4bd22b9ae2e747a8193af91b0bdffe63f93dfd -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
詳細については、ここの「コグ」セクションを参照してください。
あるいは、 cog build
実行するか、 cog predict
ビルド プロセスを暗黙的にトリガーさせることで、イメージを自分でビルドすることもできます。たとえば、次のコマンドはビルド プロセスをトリガーし、予測を実行します。
cog predict -i description="tense staccato strings. plucked strings. dissonant. scary movie." -i duration=8
初めてcog predict
実行するとき、モデルの重みやその他の必要なアセットがローカルで利用できない場合はダウンロードされることに注意してください。このダウンロードは 1 回だけ実行する必要があります。
まだ実行していない場合は、 cog predict
を使用してモデルがローカルで実行されていることを確認する必要があります。これにより、すべてのアセットにアクセスできることが保証されます。たとえば、次を実行します。
cog predict -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
replicate.com/create に移動して、レプリケート モデルを作成します。モデルを非公開にしたい場合は、必ず「private」を指定してください。
レプリケートは、さまざまな CPU および GPU 構成でのモデルの実行をサポートします。最高のパフォーマンスを得るには、このモデルを A100 インスタンスで実行することをお勧めします。
モデルページの「設定」タブをクリックし、「GPU ハードウェア」まで下にスクロールして、「A100」を選択します。次に、「保存」をクリックします。
レプリケートするにはログインします:
cog login
手順 1 で指定したモデル名を使用して、現在のディレクトリの内容をレプリケートにプッシュします。
cog push r8.im/username/modelname
モデルをレプリケートにプッシュする方法について詳しくは、こちらをご覧ください。
MusicGen の微調整のサポートは開発中です。現在、@chavez のmusic_gen
トレーナーの適応を通じて最小限のサポートが実装されています。
ローカル環境が構成されていると仮定すると (つまり、「Cog で実行」で指定されたステップを完了していると仮定すると)、次のようなコマンドを使用してトレーニングを実行できます。
cog train -i dataset_path=@<path-to-your-data> <additional hyperparameters>
Cog では、入力データがファイルである必要があります。ただし、トレーニング スクリプトではディレクトリが必要です。したがって、運用環境では、トレーニング データは、適切にフォーマットされたトレーニング データのディレクトリの tarball として提供される必要があります。ただし、トレーニング データ ディレクトリに./train_data
名前を付けることで、この要件を回避できます。このようなディレクトリが存在する場合、トレーニング スクリプトはそのディレクトリからデータをロードしようとします ( train.py
の 140 ~ 147 行目を参照)。
現在、トレーニングはテキスト プロンプトによる音楽生成のみをサポートしています。
独自のデータでモデルをトレーニングするには、次の手順に従います。
.txt
ファイルが必要です。これらのテキスト ファイルには、対応する音声ファイルに関連付けるテキスト プロンプトが含まれている必要があります。たとえば、 audio_1.wav
がある場合は、 audio_1.txt
も必要であり、そのテキスト ファイルにはaudio_1.wav
のプロンプトが含まれている必要があります。./train_data
の場合は、次のようにトレーニング スクリプトを実行するだけです。 cog train -i dataset_path=@./train_data/ <additional hyperparameters>
train_data
存在しない場合は、データ ディレクトリを tarball 化し、tarball へのパスをcog train ...
に渡すこともできます。次に、トレーニング スクリプトはデータを解凍し、ロードしようとします。単一のクリップでトレーニングするにはこれを実行します。
mkdir ./train_data/
wget -P ./train_data/ https://github.com/facebookresearch/audiocraft/raw/main/assets/bach.mp3
echo bach > ./train_data/bach.txt
tar -cvzf train_data.tar.gz train_data/
cog train -i dataset_path=@./data.tar.gz -i epochs=10
次に、 model.lm.load_state_dict(torch.load('model_outdir/lm_final.pt'))
のようにモデルをロードし、次のように生成できます。
model.set_generation_params(
duration=8,
top_k=250,
top_p=0,
temperature=1,
cfg_coef=3,
)
wav = model.generate(descriptions=[''], progress=True)