MusicGen هو نموذج بسيط ويمكن التحكم فيه لتوليد الموسيقى. إنه نموذج محول انحداري تلقائي أحادي المرحلة تم تدريبه عبر جهاز تشفير EnCodec بسرعة 32 كيلو هرتز مع 4 كتب رموز تم أخذ عينات منها عند تردد 50 هرتز. على عكس الأساليب الحالية مثل MusicLM، لا يتطلب MusicGen تمثيلًا دلاليًا خاضعًا للإشراف الذاتي، ويقوم بإنشاء جميع كتب الشفرات الأربعة في مسار واحد. من خلال إدخال تأخير بسيط بين كتب الشفرات، أظهر المؤلفون أنهم يستطيعون التنبؤ بها بالتوازي، وبالتالي لديهم 50 خطوة انحدارية تلقائية فقط في الثانية من الصوت. لقد استخدموا 20 ألف ساعة من الموسيقى المرخصة لتدريب MusicGen. وعلى وجه التحديد، اعتمدوا على مجموعة بيانات داخلية مكونة من 10 آلاف مقطوعة موسيقية عالية الجودة، وعلى بيانات الموسيقى ShutterStock وPond5.
لمزيد من المعلومات حول هذا النموذج، انظر هنا.
يمكنك عرض هذا النموذج أو معرفة كيفية استخدامه مع واجهة برمجة تطبيقات Replicate هنا.
Cog هي أداة مفتوحة المصدر تعمل على تجميع نماذج التعلم الآلي في حاوية قياسية جاهزة للإنتاج. يمكنك نشر نموذجك المعبأ على البنية الأساسية الخاصة بك، أو النسخ المتماثل، حيث يمكن للمستخدمين التفاعل معه عبر واجهة الويب أو واجهة برمجة التطبيقات.
ترس. اتبع هذه التعليمات لتثبيت 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 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.
انقر فوق علامة التبويب "الإعدادات" في صفحة النموذج الخاص بك، ثم قم بالتمرير لأسفل إلى "أجهزة وحدة معالجة الرسومات"، ثم حدد "A100". ثم انقر فوق "حفظ".
تسجيل الدخول للنسخ:
cog login
ادفع محتويات الدليل الحالي إلى النسخ المتماثل، باستخدام اسم النموذج الذي حددته في الخطوة 1:
cog push r8.im/username/modelname
تعرف على المزيد حول دفع النماذج إلى النسخ المتماثل.
دعم الضبط الدقيق لـ MusicGen قيد التطوير. حاليًا، تم تنفيذ الحد الأدنى من الدعم من خلال تعديل برنامج music_gen
Trainer الخاص بـ @chavez.
بافتراض أنه تم تكوين بيئة محلية لديك (أي أنك أكملت الخطوات المحددة ضمن Run with Cog)، يمكنك تشغيل التدريب باستخدام أمر مثل:
cog train -i dataset_path=@<path-to-your-data> <additional hyperparameters>
يتطلب الترس إدخال البيانات لتكون ملفًا؛ ومع ذلك، يتوقع نص التدريب الخاص بنا وجود دليل. وفقًا لذلك، في الإنتاج، يجب توفير بيانات التدريب كدليل لبيانات التدريب المنسقة بشكل صحيح. ومع ذلك، يمكنك تجاوز هذا المطلب عن طريق تسمية دليل بيانات التدريب الخاص بك ./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
موجودًا، فيمكنك tarball دليل البيانات الخاص بك وتمرير المسار إلى tarball to 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)