MusicGen은 음악 생성을 위한 간단하고 제어 가능한 모델입니다. 이는 50Hz에서 샘플링된 4개의 코드북이 포함된 32kHz EnCodec 토크나이저를 통해 훈련된 단일 단계 자동 회귀 변환기 모델입니다. MusicLM과 같은 기존 방법과 달리 MusicGen은 자체 감독 의미 표현이 필요하지 않으며 한 번에 4개의 코드북을 모두 생성합니다. 저자는 코드북 사이에 약간의 지연을 도입함으로써 이를 병렬로 예측할 수 있으며 오디오의 초당 자동 회귀 단계가 50개에 불과하다는 것을 보여줍니다. 그들은 MusicGen을 교육하기 위해 20,000시간의 라이선스 음악을 사용했습니다. 특히 그들은 10K 고품질 음악 트랙의 내부 데이터세트와 ShutterStock 및 Pond5 음악 데이터에 의존했습니다.
이 모델에 대한 자세한 내용은 여기를 참조하세요.
여기에서 이 모델을 데모하거나 Replicate의 API와 함께 사용하는 방법을 배울 수 있습니다.
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
위해 호출에 이미지 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
처음 실행할 때 모델 가중치 및 기타 필수 자산을 로컬에서 사용할 수 없는 경우 다운로드됩니다. 이 다운로드는 한 번만 실행하면 됩니다.
아직 실행하지 않았다면 모델이 cog predict
사용하여 로컬에서 실행되는지 확인해야 합니다. 이렇게 하면 모든 자산에 대한 액세스가 보장됩니다. 예를 들어 다음을 실행합니다.
cog predict -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
Replicate.com/create로 이동하여 복제 모델을 생성하세요. 모델을 비공개로 유지하려면 '비공개'를 지정하세요.
Replicate는 다양한 CPU 및 GPU 구성에서 모델 실행을 지원합니다. 최고의 성능을 위해서는 A100 인스턴스에서 이 모델을 실행하는 것이 좋습니다.
모델 페이지에서 "설정" 탭을 클릭하고 "GPU 하드웨어"까지 아래로 스크롤한 다음 "A100"을 선택합니다. 그런 다음 "저장"을 클릭하세요.
복제에 로그인:
cog login
1단계에서 지정한 모델 이름을 사용하여 현재 디렉터리의 내용을 복제에 푸시합니다.
cog push r8.im/username/modelname
모델을 복제로 푸시하는 방법에 대해 자세히 알아보세요.
MusicGen 미세 조정 지원이 개발 중입니다. 현재 @chavez의 music_gen
트레이너를 적용하여 최소한의 지원이 구현되었습니다.
로컬 환경이 구성되어 있다고 가정하면(즉, Run with 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)