MusicGen ist ein einfaches und kontrollierbares Modell zur Musikgenerierung. Es handelt sich um ein einstufiges autoregressives Transformer-Modell, das über einen 32-kHz-EnCodec-Tokenizer mit 4 bei 50 Hz abgetasteten Codebüchern trainiert wurde. Im Gegensatz zu bestehenden Methoden wie MusicLM erfordert MusicGen keine selbstüberwachte semantische Darstellung und generiert alle vier Codebücher in einem Durchgang. Durch die Einführung einer kleinen Verzögerung zwischen den Codebüchern zeigen die Autoren, dass sie diese parallel vorhersagen können und somit nur 50 autoregressive Audioschritte pro Sekunde haben. Sie nutzten 20.000 Stunden lizenzierte Musik, um MusicGen zu trainieren. Konkret stützten sie sich auf einen internen Datensatz von 10.000 hochwertigen Musiktiteln sowie auf die Musikdaten von ShutterStock und Pond5.
Weitere Informationen zu diesem Modell finden Sie hier.
Sie können dieses Modell hier vorführen oder erfahren, wie Sie es mit der Replicate-API verwenden.
Cog ist ein Open-Source-Tool, das Modelle für maschinelles Lernen in einem standardmäßigen, produktionsbereiten Container verpackt. Sie können Ihr gepacktes Modell in Ihrer eigenen Infrastruktur oder in Replicate bereitstellen, wo Benutzer über eine Webschnittstelle oder API damit interagieren können.
Zahn. Befolgen Sie diese Anweisungen, um Cog zu installieren, oder führen Sie einfach Folgendes aus:
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
Beachten Sie, dass Sie zur Verwendung von Cog auch eine Installation von Docker benötigen.
git clone https://github.com/replicate/cog-musicgen-melody
Um das Modell auszuführen, benötigen Sie eine lokale Kopie des Docker-Images des Modells. Sie können diese Anforderung erfüllen, indem Sie die Bild-ID in Ihrem predict
angeben, etwa:
cog predict r8.im/joehoover/musicgen-melody@sha256:1a53415e6c4549e3022a0af82f4bd22b9ae2e747a8193af91b0bdffe63f93dfd -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
Weitere Informationen finden Sie hier im Abschnitt „Zahnrad“.
Alternativ können Sie das Image selbst erstellen, indem Sie entweder cog build
ausführen oder cog predict
den Build-Prozess implizit auslösen lassen. Folgendes löst beispielsweise den Build-Prozess aus und führt dann die Vorhersage aus:
cog predict -i description="tense staccato strings. plucked strings. dissonant. scary movie." -i duration=8
Beachten Sie, dass Modellgewichte und andere erforderliche Assets heruntergeladen werden, wenn Sie cog predict
zum ersten Mal ausführen, sofern sie nicht lokal verfügbar sind. Dieser Download muss nur einmal durchgeführt werden.
Falls Sie dies noch nicht getan haben, sollten Sie sicherstellen, dass Ihr Modell lokal mit cog predict
ausgeführt wird. Dadurch wird gewährleistet, dass alle Vermögenswerte zugänglich sind. Führen Sie beispielsweise Folgendes aus:
cog predict -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
Gehen Sie zu Replicate.com/create, um ein Replikatmodell zu erstellen. Wenn Sie das Modell privat halten möchten, stellen Sie sicher, dass Sie „private“ angeben.
Replicate unterstützt die Ausführung von Modellen auf verschiedenen CPU- und GPU-Konfigurationen. Um die beste Leistung zu erzielen, sollten Sie dieses Modell auf einer A100-Instanz ausführen.
Klicken Sie auf der Seite Ihres Modells auf die Registerkarte „Einstellungen“, scrollen Sie nach unten zu „GPU-Hardware“ und wählen Sie „A100“. Klicken Sie dann auf „Speichern“.
Melden Sie sich bei Replicate an:
cog login
Schieben Sie den Inhalt Ihres aktuellen Verzeichnisses unter Verwendung des Modellnamens, den Sie in Schritt 1 angegeben haben, nach „Replizieren“:
cog push r8.im/username/modelname
Erfahren Sie mehr über das Pushen von Modellen zum Replizieren.
Unterstützung für die Feinabstimmung von MusicGen ist in der Entwicklung. Derzeit wurde eine minimale Unterstützung durch eine Adaption des music_gen
Trainers von @chavez implementiert.
Vorausgesetzt, Sie haben eine lokale Umgebung konfiguriert (d. h. Sie haben die unter „Mit Cog ausführen“ angegebenen Schritte ausgeführt), können Sie das Training mit einem Befehl wie dem folgenden ausführen:
cog train -i dataset_path=@<path-to-your-data> <additional hyperparameters>
Cog erfordert, dass die Eingabedaten eine Datei sind. Unser Trainingsskript erwartet jedoch ein Verzeichnis. Dementsprechend sollten Trainingsdaten in der Produktion als Tarball eines Verzeichnisses ordnungsgemäß formatierter Trainingsdaten bereitgestellt werden. Sie können diese Anforderung jedoch umgehen, indem Sie Ihr Trainingsdatenverzeichnis ./train_data
nennen. Wenn ein solches Verzeichnis vorhanden ist, versucht das Trainingsskript, Daten aus diesem Verzeichnis zu laden (siehe Zeilen 140-147 in train.py
).
Derzeit unterstützt das Training nur die Musikgenerierung mit Textansagen.
Um das Modell anhand Ihrer eigenen Daten zu trainieren, führen Sie die folgenden Schritte aus:
.txt
Datei mit demselben Dateinamen vorhanden sein. Diese Textdateien sollten die Textaufforderung enthalten, die Sie der entsprechenden Audiodatei zuordnen möchten. Wenn Sie beispielsweise audio_1.wav
haben, müssen Sie auch audio_1.txt
haben und diese Textdatei sollte die Eingabeaufforderung für audio_1.wav
enthalten../train_data
heißt, können Sie das Trainingsskript einfach wie folgt ausführen: cog train -i dataset_path=@./train_data/ <additional hyperparameters>
train_data
nicht vorhanden ist, können Sie alternativ Ihr Datenverzeichnis tarballen und den Pfad zum Tarball an cog train ...
übergeben. Das Zugskript entpackt dann Ihre Daten und versucht, sie zu laden.Führen Sie Folgendes aus, um an einem einzelnen Clip zu trainieren:
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
Dann können Sie Ihr Modell wie model.lm.load_state_dict(torch.load('model_outdir/lm_final.pt'))
laden und wie folgt generieren:
model.set_generation_params(
duration=8,
top_k=250,
top_p=0,
temperature=1,
cfg_coef=3,
)
wav = model.generate(descriptions=[''], progress=True)