آخر الأخبار
Ultravox هو نوع جديد من LLM متعدد الوسائط يمكنه فهم النص وكذلك الكلام البشري ، دون الحاجة إلى مرحلة منفصلة من التعرف على خطاب الصوت (ASR). بناءً على أبحاث مثل Audiolm و SeamlessM4T و Gazelle و ProbingGpt وغيرها ، فإن Ultravox قادر على توسيع أي LLM مفتوح الوزن مع جهاز عرض متعدد الوسائط يحول الصوت مباشرة إلى المساحة ذات الأبعاد العالية التي تستخدمها LLM. لقد قمنا بتدريب إصدارات على Llama 3 و Mistral و Gemma. يتيح هذا الاقتران المباشر أن يستجيب Ultravox بسرعة أكبر من الأنظمة التي تجمع بين مكونات ASR و LLM المنفصلة. في المستقبل ، سيسمح هذا أيضًا Ultravox بفهم الإشارات المتعسمة للتوقيت والعاطفة الموجودة في الخطاب البشري.
الإصدار الحالي من Ultravox (v0.4) ، عندما يتم الاحتجاج به بمحتوى صوتي ، يحتوي على وقت واحد من أجل التقدم (TTFT) حوالي 150 مللي ثانية ، ومعدل الرموز لكل ثانية من ~ 60 باستخدام العمود الفقري LLAMA 3.1 8B . في حين نعتقد أن هناك مجالًا كبيرًا للتحسين في هذه الأرقام.
يأخذ Ultravox حاليًا في الصوت وينبعث نص. مع تطور النموذج ، سنقوم بتدريبه على أن نكون قادرين على تنظيم مجموعة من رموز الكلام التي يمكن تحويلها مباشرة إلى صوت RAW بواسطة Vocoder وحدة مناسبة.
انظر Ultravox في العمل على صفحة العرض التجريبي لدينا.
انضم إلينا على خادم Discord هنا.
إذا كنت مهتمًا بالعمل على Ultravox بدوام كامل ، فنحن نتعاقد! تحقق من صفحة الوظائف لدينا هنا.
يمكنك تجربة Ultravox باستخدام محتوى الصوت الخاص بك (كملف WAV) عن طريق تدوير مثيل Ultravox على شريكنا ، Baseten: https://www.baseten.co/library/ultravox/. أنها توفر اعتمادات مجانية للبدء.
إذا كنت مهتمًا بتشغيل Ultravox بسعة في الوقت الفعلي ، فنحن نقدم مجموعة من واجهات برمجة التطبيقات المدارة أيضًا. يمكنك معرفة المزيد حول الوصول إلى هؤلاء هنا.
يمكنك تنزيل أحدث الأوزان من صفحة وجه Ultravox Ungging.
تابع القراءة إذا كنت مهتمًا بتدريب نسختك الخاصة من Ultravox.
تثبيت الأدوات الأساسية:
Homebrew هو مدير حزمة ل MacOS يعمل في الغالب مع Linux. إذا كنت تقوم بتشغيل Debian أو Ubuntu Linux ، فيمكنك بدلاً من ذلك الحصول على APT.Just يبسط سير عمل قذيفة لدينا. يعمل بشكل متكرر كواجهة لدينا لجميع الأدوات الأخرى. /bin/bash -c " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh ) "
brew update
brew install justقم بإنشاء بيئة افتراضية Python وتثبيت الحزم اللازمة:
just installنحن نستخدم الشعر لإدارة البيئة الافتراضية Python.
إذا كنت ترغب في استخدام الفسيفساء للتدريب ، فأنت بحاجة إلى إعداد بعض الأشياء لتشغيلها على منصة الفسيفساء.
pip install --upgrade mosaicml-cli
mcli init
mcli set api-key < new-value > # Huggging Face token for accessing walled data and models
mcli create secret env HF_TOKEN=hf_ < your_token >
# WandB token for logging experiments
mcli create secret env WANDB_PROJECT=ultravox
mcli create secret env WANDB_API_KEY= < your_wandb_key >
# GCP credentials for accessing data (e.g. BoolQ)
# Get service_account.json file from Justin/Farzad and put it in the root dir, then
mcli create secret gcpحاليًا ، نحتفظ بكل من LLM ومجمدة Audio Encoder وندرب فقط المحول/جهاز العرض. استغرق التدريب Ultraox V0.4 2-3 ساعات على وحدات معالجة الرسومات 8xH100 لخطوات التدريب 14K.
لماذا تريد (إعادة) تدريب Ultravox؟ فيما يلي بعض السيناريوهات:
تريد استخدام العمود الفقري LLM مختلف LLM أو Audio Encoder.
أ. في هذه الحالة ، تحتاج إلى إعادة تدريب المحول. يمكنك استخدام release_config.yaml ، الذي يحتوي على تكويننا لإصدارنا الأخير ، ويجب أن تكون قادرًا على تغيير LLM الأساسي أو التشفير عن طريق تحديد- --text-model <hf-model-id-for-llm> و/أو --audio-model <hf-model-id-for-encoder> .
تريد تحسين معرفة النموذج -> لا حاجة لتدريب Ultravox!
أ. نقترح إما استخدام RAG أثناء الطيران (لا حاجة إلى تدريب) ، أو ضبط العمود الفقري LLM بدلاً من ذلك. قد تحتاج إلى إعادة تدريب Ultravox إذا قمت بضبط LLM.
تريد استخدام بيانات الصوت الخاصة بك ، على سبيل المثال لإضافة دعم للغة الجديدة.
أ. الخطوة الأولى ، قم بإعداد مجموعة البيانات الخاصة بك: على الأقل ، يجب أن تحتوي العينات على حقل audio وحقل continuation نص.
ب. ألقِ نظرة على ds_tool.py و continuation.jinja وكذلك البديل الخاص بنا من الصوت المشترك الذي تم إنشاؤه باستخدام ds_tool لإضافة حقل continuation .
ج. أضف مجموعة البيانات الخاصة بك إلى مزيج مجموعة البيانات في release_config.yaml والقطار.
لا يوجد حجم واحد يناسب الجميع. إذا كنت بحاجة إلى مساعدة ، يمكنك العثور علينا على خادم Discord هنا.
نقوم بمعظم تدريبنا على منصة Mosaicml ، وبالتالي فإن معظم الأدوات والمستندات لدينا مرتبطة بالفسيفساء. ومع ذلك ، يمكنك القيام بنفس التدريب على وحدة معالجة الرسومات الخاصة بك دون صعوبة كبيرة. هنا نفترض أن لديك البيئة (قم just install ). يمكنك أيضًا إلقاء نظرة على setup.sh
لبدء تشغيل التدريب يمكنك القيام به:
poetry run python -m ultravox.training.train --config_path ultravox/training/configs/release_config.yaml لتدريب DDP تأكد من إضافة torchrun . نوصي أيضًا بالأوزان المسبقة مقدمًا:
TRAIN_ARGS= " --config_path ultravox/training/configs/release_config.yaml "
poetry run python -m ultravox.training.helpers.prefetch_weights $TRAIN_ARGS
poetry run torchrun --nproc_per_node=8 -m ultravox.training.train $TRAIN_ARGSلتشغيل تصحيح الأخطاء ، يمكنك استخدام نماذج أصغر أو مجموعات بيانات أو حجم دفعة. فيما يلي تكوين يستخدم Tinyllama كعمود تربيعي LLM:
poetry run python -m ultravox.training.train --config_path ultravox/training/configs/asr_tinyllama_100s.yaml --batch_size 1 --report_logs_to tensorboard نستخدم SimpleParsing للتكوينات. التكوينات قابلة للتكوين (أي يمكنك تحديد صفر أو العديد من التكوينات) ويتم استخدام meta_config.yaml دائمًا كإعداد افتراضي. راجع configs_base.py للعثور على المعلمات التي تعدلها ، مثل --text-model ، --device ، --exp-name ، إلخ.
قبل تشغيل أي وظائف تدريبية ، تحتاج إلى إعداد مفتاح SSH الخاص بك في منصة الفسيفساء: https://docs.mosaicml.com/projects/mcli/en/latest/resources/secrets/ssh.html#page-secrets-ssh
# # Create a new SSH key and add it to the Mosaic Platform
# ssh-keygen -f ~/.ssh/mclid_id_rsa
# # add the **public** key to Github
# mcli create secret ssh ~/.ssh/mclid_id_rsa
mcli run -f mcloud.yaml --followأوامر مفيدة أخرى:
mcli get clusters
mcli util r7z2
mcli get runs
mcli get runs --cluster r7z2
mcli run -f mcloud.yaml --followللتشغيل التفاعلي يمكنك استخدامه:
just mcloud --image mosaicml/composer:latest --max-duration 1هام: تأكد من مراقبة وظائفك وإيقاف الجهاز عند الانتهاء من أي وظيفة ، وخاصة التفاعلية!
infer_tool.py --json > file لإنشاء إخراج JSONL من مجموعة من طراز/مجموعة بيانات معينة ، حيث يحتوي كل سطر على قيمتين: سؤال والإجابة .eval_tool.py -f file لتقييم ملف JSONL ، والذي سينتج درجة متوسط للنموذج على مجموعة البيانات. Justfile هو مورد جيد للعثور على الأوامر الشعبية. هنا عدد قليل:
just update # update dependencies
just format # run formatting (black, isort, autoflake)
just test # run tests
just python # activate venv and run python