MusicGen es un modelo simple y controlable para la generación de música. Es un modelo de transformador autorregresivo de una sola etapa entrenado sobre un tokenizador EnCodec de 32 kHz con 4 libros de códigos muestreados a 50 Hz. A diferencia de los métodos existentes como MusicLM, MusicGen no requiere una representación semántica autosupervisada y genera los 4 libros de códigos de una sola vez. Al introducir un pequeño retraso entre los libros de códigos, los autores demuestran que pueden predecirlos en paralelo, teniendo así sólo 50 pasos autorregresivos por segundo de audio. Utilizaron 20.000 horas de música con licencia para entrenar MusicGen. Específicamente, se basaron en un conjunto de datos interno de 10.000 pistas de música de alta calidad y en los datos musicales de ShutterStock y Pond5.
Para obtener más información sobre este modelo, consulte aquí.
Puede hacer una demostración de este modelo o aprender a usarlo con la API de Replicate aquí.
Cog es una herramienta de código abierto que empaqueta modelos de aprendizaje automático en un contenedor estándar listo para producción. Puede implementar su modelo empaquetado en su propia infraestructura o en Replicate, donde los usuarios pueden interactuar con él a través de una interfaz web o API.
Diente. Siga estas instrucciones para instalar Cog, o simplemente ejecute:
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
Tenga en cuenta que para utilizar Cog, también necesitará una instalación de Docker.
git clone https://github.com/replicate/cog-musicgen-melody
Para ejecutar el modelo, necesita una copia local de la imagen de Docker del modelo. Puede satisfacer este requisito especificando el ID de la imagen en su llamada para predict
cosas como:
cog predict r8.im/joehoover/musicgen-melody@sha256:1a53415e6c4549e3022a0af82f4bd22b9ae2e747a8193af91b0bdffe63f93dfd -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
Para obtener más información, consulte la sección Cog aquí.
Alternativamente, puede crear la imagen usted mismo, ya sea ejecutando cog build
o dejando que cog predict
desencadene el proceso de construcción implícitamente. Por ejemplo, lo siguiente activará el proceso de construcción y luego ejecutará la predicción:
cog predict -i description="tense staccato strings. plucked strings. dissonant. scary movie." -i duration=8
Tenga en cuenta que la primera vez que ejecute cog predict
, se descargarán los pesos del modelo y otros activos necesarios si no están disponibles localmente. Esta descarga sólo necesita ejecutarse una vez.
Si aún no lo ha hecho, debe asegurarse de que su modelo se ejecute localmente con cog predict
. Esto garantizará que todos los activos sean accesibles. Por ejemplo, ejecute:
cog predict -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
Vaya a replicate.com/create para crear un modelo replicado. Si desea mantener el modelo privado, asegúrese de especificar "privado".
Replicate admite la ejecución de modelos en una variedad de configuraciones de CPU y GPU. Para obtener el mejor rendimiento, querrá ejecutar este modelo en una instancia A100.
Haga clic en la pestaña "Configuración" en la página de su modelo, desplácese hacia abajo hasta "hardware GPU" y seleccione "A100". Luego haga clic en "Guardar".
Inicie sesión para replicar:
cog login
Envíe el contenido de su directorio actual a Replicar, utilizando el nombre del modelo que especificó en el paso 1:
cog push r8.im/username/modelname
Obtenga más información sobre cómo enviar modelos para replicar.
Se está desarrollando soporte para ajustar MusicGen. Actualmente, se ha implementado un soporte mínimo a través de una adaptación del entrenador music_gen
de @chavez.
Suponiendo que tiene un entorno local configurado (es decir, que ha completado los pasos especificados en Ejecutar con Cog), puede ejecutar el entrenamiento con un comando como:
cog train -i dataset_path=@<path-to-your-data> <additional hyperparameters>
Cog requiere que los datos de entrada sean un archivo; sin embargo, nuestro script de formación espera un directorio. En consecuencia, en producción, los datos de capacitación deben proporcionarse como un archivo comprimido de un directorio de datos de capacitación con el formato adecuado. Sin embargo, puedes evitar este requisito nombrando tu directorio de datos de entrenamiento ./train_data
. Si dicho directorio existe, el script de entrenamiento intentará cargar datos desde ese directorio (consulte las líneas 140-147 en train.py
).
Actualmente, la formación sólo admite la generación de música con indicaciones de texto.
Para entrenar el modelo con sus propios datos, siga estos pasos:
.txt
correspondiente con el mismo nombre de archivo. Estos archivos de texto deben contener el mensaje de texto que desea asociar con el archivo de audio correspondiente. Por ejemplo, si tiene audio_1.wav
, también debe tener audio_1.txt
y ese archivo de texto debe contener el mensaje para audio_1.wav
../train_data
, entonces simplemente puede ejecutar el script de entrenamiento como: cog train -i dataset_path=@./train_data/ <additional hyperparameters>
train_data
no existe, puede guardar su directorio de datos y pasar la ruta al archivo tar para cog train ...
El script del tren descomprimirá sus datos e intentará cargarlos.Ejecute esto para entrenar en un solo clip:
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
Luego, puede cargar su modelo como model.lm.load_state_dict(torch.load('model_outdir/lm_final.pt'))
y generarlo como:
model.set_generation_params(
duration=8,
top_k=250,
top_p=0,
temperature=1,
cfg_coef=3,
)
wav = model.generate(descriptions=[''], progress=True)