MusicGen é um modelo simples e controlável para geração de música. É um modelo de transformador auto-regressivo de estágio único treinado em um tokenizer EnCodec de 32kHz com 4 livros de código amostrados a 50 Hz. Ao contrário dos métodos existentes como MusicLM, MusicGen não requer uma representação semântica auto-supervisionada e gera todos os 4 livros de códigos em uma única passagem. Ao introduzir um pequeno atraso entre os livros de códigos, os autores mostram que podem prevê-los em paralelo, tendo assim apenas 50 passos auto-regressivos por segundo de áudio. Eles usaram 20 mil horas de música licenciada para treinar o MusicGen. Especificamente, eles confiaram em um conjunto de dados interno de 10 mil faixas musicais de alta qualidade e nos dados musicais do ShutterStock e Pond5.
Para mais informações sobre este modelo, veja aqui.
Você pode demonstrar este modelo ou aprender como usá-lo com a API do Replicate aqui.
Cog é uma ferramenta de código aberto que empacota modelos de aprendizado de máquina em um contêiner padrão pronto para produção. Você pode implantar seu modelo empacotado em sua própria infraestrutura ou em Replicar, onde os usuários podem interagir com ele por meio de interface web ou API.
Engrenagem. Siga estas instruções para instalar o Cog ou apenas execute:
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
Observe que para usar o Cog, você também precisará de uma instalação do Docker.
git clone https://github.com/replicate/cog-musicgen-melody
Para executar o modelo, você precisa de uma cópia local da imagem Docker do modelo. Você pode atender a esse requisito especificando o ID da imagem em sua chamada para predict
como:
cog predict r8.im/joehoover/musicgen-melody@sha256:1a53415e6c4549e3022a0af82f4bd22b9ae2e747a8193af91b0bdffe63f93dfd -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
Para obter mais informações, consulte a seção Cog aqui
Como alternativa, você mesmo pode construir a imagem, executando cog build
ou permitindo que cog predict
acione o processo de construção implicitamente. Por exemplo, o seguinte irá acionar o processo de construção e, em seguida, executar a previsão:
cog predict -i description="tense staccato strings. plucked strings. dissonant. scary movie." -i duration=8
Observe que na primeira vez que você executar cog predict
, os pesos do modelo e outros ativos necessários serão baixados se não estiverem disponíveis localmente. Este download só precisa ser executado uma vez.
Se ainda não o fez, você deve garantir que seu modelo seja executado localmente com cog predict
. Isto garantirá que todos os ativos estejam acessíveis. Por exemplo, execute:
cog predict -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
Acesse replicate.com/create para criar um modelo Replicate. Se você quiser manter o modelo privado, especifique "privado".
O Replicate oferece suporte à execução de modelos em diversas configurações de CPU e GPU. Para obter o melhor desempenho, você desejará executar esse modelo em uma instância A100.
Clique na guia “Configurações” na página do seu modelo, role para baixo até “Hardware GPU” e selecione “A100”. Em seguida, clique em "Salvar".
Faça login para replicar:
cog login
Envie o conteúdo do seu diretório atual para Replicar, usando o nome do modelo especificado na etapa 1:
cog push r8.im/username/modelname
Saiba mais sobre como enviar modelos para Replicar.
O suporte para ajuste fino do MusicGen está em desenvolvimento. Atualmente, o suporte mínimo foi implementado através de uma adaptação do music_gen
trainer de @chavez.
Supondo que você tenha um ambiente local configurado (ou seja, você concluiu as etapas especificadas em Executar com Cog), você pode executar o treinamento com um comando como:
cog train -i dataset_path=@<path-to-your-data> <additional hyperparameters>
Cog exige que os dados de entrada sejam um arquivo; entretanto, nosso script de treinamento espera um diretório. Conseqüentemente, na produção, os dados de treinamento devem ser fornecidos como um tarball de um diretório de dados de treinamento formatados adequadamente. No entanto, você pode ignorar esse requisito nomeando seu diretório de dados de treinamento ./train_data
. Se tal diretório existir, o script de treinamento tentará carregar dados desse diretório (consulte as linhas 140-147 em train.py
).
Atualmente, o treinamento só oferece suporte à geração de música com instruções de texto.
Para treinar o modelo com seus próprios dados, siga estas etapas:
.txt
correspondente com o mesmo nome de arquivo. Esses arquivos de texto devem conter o prompt de texto que você deseja associar ao arquivo de áudio correspondente. Por exemplo, se você tiver audio_1.wav
, também deverá ter audio_1.txt
e esse arquivo de texto deverá conter o prompt para audio_1.wav
../train_data
, você pode simplesmente executar o script de treinamento como: cog train -i dataset_path=@./train_data/ <additional hyperparameters>
train_data
não existir, você pode fazer tarball em seu diretório de dados e passar o caminho para o tarball para cog train ...
. O script de trem irá então descompactar seus dados e tentar carregá-los.Execute isto para treinar em um único clipe:
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
Então, você pode carregar seu modelo como model.lm.load_state_dict(torch.load('model_outdir/lm_final.pt'))
e gerar como:
model.set_generation_params(
duration=8,
top_k=250,
top_p=0,
temperature=1,
cfg_coef=3,
)
wav = model.generate(descriptions=[''], progress=True)