MusicGen — простая и управляемая модель генерации музыки. Это одноступенчатая авторегрессионная модель Transformer, обученная на токенизаторе EnCodec с частотой 32 кГц и 4 кодовыми книгами, дискретизированными с частотой 50 Гц. В отличие от существующих методов, таких как MusicLM, MusicGen не требует самоконтролируемого семантического представления и генерирует все 4 кодовые книги за один проход. Введя небольшую задержку между кодовыми книгами, авторы показывают, что они могут прогнозировать их параллельно, имея, таким образом, всего 50 шагов авторегрессии в секунду звука. Для обучения MusicGen они использовали 20 тысяч часов лицензионной музыки. В частности, они использовали внутренний набор данных из 10 тысяч высококачественных музыкальных треков, а также музыкальные данные ShutterStock и Pond5.
Более подробную информацию об этой модели смотрите здесь.
Вы можете продемонстрировать эту модель или узнать, как использовать ее с API-интерфейсом Replication здесь.
Cog — это инструмент с открытым исходным кодом, который упаковывает модели машинного обучения в стандартный, готовый к использованию контейнер. Вы можете развернуть упакованную модель в своей собственной инфраструктуре или в репликации, где пользователи смогут взаимодействовать с ней через веб-интерфейс или 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
например:
cog predict r8.im/joehoover/musicgen-melody@sha256:1a53415e6c4549e3022a0af82f4bd22b9ae2e747a8193af91b0bdffe63f93dfd -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
Для получения дополнительной информации см. раздел Cog здесь.
Альтернативно, вы можете создать образ самостоятельно, либо запустив cog build
, либо позволив cog predict
неявно запустить процесс сборки. Например, следующее запустит процесс сборки, а затем выполнит прогноз:
cog predict -i description="tense staccato strings. plucked strings. dissonant. scary movie." -i duration=8
Обратите внимание: при первом запуске cog predict
веса моделей и другие необходимые ресурсы будут загружены, если они недоступны локально. Эту загрузку необходимо выполнить только один раз.
Если вы еще этого не сделали, вам следует убедиться, что ваша модель работает локально с помощью cog predict
. Это будет гарантировать доступность всех активов. Например, запустите:
cog predict -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
Перейдите на сайт replication.com/create, чтобы создать модель репликации. Если вы хотите сохранить модель частной, обязательно укажите «частная».
Репликация поддерживает запуск моделей на различных конфигурациях ЦП и графических процессоров. Для достижения наилучшей производительности вам нужно запустить эту модель на экземпляре A100.
Нажмите вкладку «Настройки» на странице вашей модели, прокрутите вниз до «Аппаратное обеспечение графического процессора» и выберите «A100». Затем нажмите «Сохранить».
Войдите в систему для репликации:
cog login
Отправьте содержимое вашего текущего каталога в репликацию, используя имя модели, указанное на шаге 1:
cog push r8.im/username/modelname
Узнайте больше о отправке моделей в репликацию.
Поддержка тонкой настройки MusicGen находится в разработке. В настоящее время минимальная поддержка реализована посредством адаптации трейнера @chavez's music_gen
.
Предполагая, что у вас настроена локальная среда (т. е. вы выполнили шаги, указанные в разделе «Запуск с Cog»), вы можете запустить обучение с помощью такой команды:
cog train -i dataset_path=@<path-to-your-data> <additional hyperparameters>
Cog требует, чтобы входные данные были в виде файла; однако наш сценарий обучения ожидает каталог. Соответственно, в рабочей среде данные обучения должны предоставляться в виде архива каталога правильно отформатированных данных обучения. Однако вы можете обойти это требование, назвав каталог обучающих данных ./train_data
. Если такой каталог существует, сценарий обучения попытается загрузить данные из этого каталога (см. строки 140–147 в train.py
).
В настоящее время обучение поддерживает только создание музыки с текстовыми подсказками.
Чтобы обучить модель на собственных данных, выполните следующие действия:
.txt
с тем же именем. Эти текстовые файлы должны содержать текстовую подсказку, которую вы хотите связать с соответствующим аудиофайлом. Например, если у вас есть audio_1.wav
, у вас также должен быть audio_1.txt
, и этот текстовый файл должен содержать приглашение для audio_1.wav
../train_data
, вы можете просто запустить сценарий обучения, например: cog train -i dataset_path=@./train_data/ <additional hyperparameters>
train_data
не существует, вы можете заархивировать каталог данных и передать путь к архиву в 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)