Dernières nouvelles
Ultravox est un nouveau type de LLM multimodal qui peut comprendre le texte ainsi que la parole humaine, sans avoir besoin d'une étape de reconnaissance de la parole audio distincte (ASR). S'appuyant sur des recherches comme Audiolm, Seamlessm4t, Gazelle, SpeechGPT et autres, Ultravox est capable d'étendre tout LLM de poids ouvert avec un projecteur multimodal qui convertit l'audio directement en espace de haute dimension utilisé par LLM. Nous avons formé des versions sur Llama 3, Mistral et Gemma. Ce couplage direct permet à Ultravox de répondre beaucoup plus rapidement que les systèmes qui combinent des composants ASR et LLM séparés. À l'avenir, cela permettra également à Ultravox de comprendre nativement les indices paralinguistiques du timing et de l'émotion qui sont omniprésents dans la parole humaine.
La version actuelle d'Ultravox (V0.4), lorsqu'elle est invoquée avec du contenu audio, a un temps à d'abord (TTFT) d'environ 150 ms, et un taux de jetons par seconde de ~ 60 en utilisant un squelette LLAMA 3.1 8B 8B . Bien que assez rapide, nous pensons qu'il y a une place considérable à l'amélioration de ces chiffres.
Ultravox prend actuellement audio et émet un texte en streaming. Au fur et à mesure que nous faisons évoluer le modèle, nous allons le former pour pouvoir émettre un flux de jetons de discours qui peuvent ensuite être convertis directement en audio bruts par un voccodeur d'unité approprié.
Voir Ultravox en action sur notre page de démonstration.
Rejoignez-nous sur notre serveur Discord ici.
Si vous êtes intéressé à travailler sur Ultravox à temps plein, nous embauchons! Consultez notre page d'emplois ici.
Vous pouvez essayer Ultravox en utilisant votre propre contenu audio (comme fichier WAV) en faisant tourner une instance ultravox sur notre partenaire, Baseten: https://www.baseten.co/library/ultravox/. Ils offrent des crédits gratuits pour commencer.
Si vous êtes intéressé à exécuter Ultravox en temps réel, nous proposons également un ensemble d'API gérés. Vous pouvez en savoir plus sur l'accès à ceux-ci ici.
Vous pouvez télécharger les derniers poids à partir de la page Ultravox Hugging Face.
Lisez la suite si vous souhaitez former votre propre version d'Ultravox.
Installez les outils de base:
Homebrew est un gestionnaire de packages pour MacOS qui fonctionne également principalement pour Linux. Si vous dirigez Debian ou Ubuntu Linux, vous pouvez également vous débrouiller avec APT.Just nos flux de travail de coquille. Il fonctionne fréquemment comme notre interface à tous les autres outils. /bin/bash -c " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh ) "
brew update
brew install justCréez un environnement virtuel Python et installez les packages nécessaires:
just installNous utilisons la poésie pour gérer l'environnement virtuel Python.
Si vous souhaitez utiliser la mosaïque pour la formation, vous devez configurer quelques éléments à exécuter sur la plate-forme mosaïque.
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 gcpActuellement, nous gardons à la fois le LLM et le codeur audio figé et formons uniquement l'adaptateur / projecteur. La formation Ultraox V0.4 a pris 2 à 3 heures sur les GPU 8xh100 pour les étapes de formation 14K.
Pourquoi voudriez-vous (ré) entraîner Ultravox? Voici quelques scénarios:
Vous souhaitez utiliser une squelette LLM ou Encodeur audio différent.
un. Dans ce cas, vous devez rétracter l'adaptateur. Vous pouvez utiliser release_config.yaml , qui contient notre configuration pour notre dernière version, et vous devriez être simplement en mesure de modifier le LLM ou l'encodeur de base en spécifiant --text-model <hf-model-id-for-llm> et / ou --audio-model <hf-model-id-for-encoder> .
Vous souhaitez améliorer la connaissance du modèle -> Pas besoin de former Ultravox!
un. Nous vous suggérons d'utiliser des chiffons à la volée (aucune formation nécessaire), soit affiner la colonne vertébrale LLM à la place. Vous devrez peut-être rétracter Ultravox si vous affinez le LLM.
Vous souhaitez utiliser vos propres données audio, par exemple pour ajouter la prise en charge d'une nouvelle langue.
un. Première étape, préparez votre ensemble de données: au minimum nu, les échantillons doivent avoir un champ continuation audio et de texte.
né Jetez un œil à ds_tool.py et continuation.jinja ainsi que notre variante de voix commune qui a été créée à l'aide ds_tool pour ajouter le champ continuation .
c. Ajoutez votre ensemble de données dans le mixage de données dans release_config.yaml et train.
Il n'y a pas de taille unique. Si vous avez besoin d'aide, vous pouvez nous trouver sur notre serveur Discord ici.
Nous effectuons la majeure partie de notre formation sur la plate-forme MOSAICML et, par conséquent, la plupart de nos outils et de nos documents sont liés à la mosaïque. Cependant, vous pouvez faire la même formation sur votre propre GPU sans trop de difficulté. Ici, nous supposons que vous avez la configuration de l'environnement (exécutez just install ). Vous pouvez également jeter un œil à setup.sh
Pour lancer une course d'entraînement, vous pouvez faire:
poetry run python -m ultravox.training.train --config_path ultravox/training/configs/release_config.yaml Pour la formation DDP, assurez-vous d'ajouter torchrun . Nous recommandons également à l'avance de pré-lutte contre les poids:
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_ARGSPour une exécution de débogage, vous pouvez utiliser des modèles plus petits, des ensembles de données ou une taille de lot. Voici une configuration qui utilise TinyLlama comme dorsale LLM:
poetry run python -m ultravox.training.train --config_path ultravox/training/configs/asr_tinyllama_100s.yaml --batch_size 1 --report_logs_to tensorboard Nous utilisons SimpleParsing pour les configurations. Les configurations sont composables (c'est-à-dire que vous pouvez spécifier zéro ou plusieurs configurations) et meta_config.yaml est toujours utilisée comme défaut. Voir configs_base.py pour trouver les paramètres que vous modifiez, tels que le --text-model , --device , --exp-name , etc.
Avant d'exécuter des travaux de formation, vous devez configurer votre clé SSH dans la plate-forme Mosaic: https://docs.mosaicml.com/projects/mcli/en/latest/resources/secrets/ssh.html#page-secrets-sh
# # 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 --followAutres commandes utiles:
mcli get clusters
mcli util r7z2
mcli get runs
mcli get runs --cluster r7z2
mcli run -f mcloud.yaml --followPour les courses interactives, vous pouvez utiliser:
just mcloud --image mosaicml/composer:latest --max-duration 1IMPORTANT: Assurez-vous de surveiller vos travaux et d'arrêter la machine lorsque vous avez terminé avec n'importe quel travail, spécialement interactif!
infer_tool.py --json > file pour créer une sortie JSONL à partir d'un combo modèle / jeu de données donné, où chaque ligne contient deux valeurs: question et réponse .eval_tool.py -f file pour évaluer le fichier JSONL, qui produira un score moyen pour le modèle sur l'ensemble de données. Le JustFile est une bonne ressource pour trouver des commandes populaires. En voici quelques-uns:
just update # update dependencies
just format # run formatting (black, isort, autoflake)
just test # run tests
just python # activate venv and run python