Neueste Nachrichten
Ultravox ist eine neue Art von multimodalem LLM, die sowohl Text als auch menschliche Sprache verstehen kann, ohne dass eine separate Stufe für Audio -Spracherkennung (ASR) erforderlich ist. Aufbauend auf Forschungen wie Audiolm, SeamlessM4T, Gazelle, Sprache und anderen kann Ultravox jegliches Open-Gewicht-LLM mit einem multimodalen Projektor erweitern, der Audio direkt in den von LLM verwendeten hochdimensionalen Raum umwandelt. Wir haben Versionen auf Lama 3, Mistral und Gemma ausgebildet. Diese direkte Kopplung ermöglicht es Ultravox, viel schneller zu reagieren als Systeme, die separate ASR- und LLM -Komponenten kombinieren. In Zukunft wird dies Ultravox auch ermöglichen, die paralinguistischen Hinweise von Timing und Emotionen, die in der menschlichen Sprache allgegenwärtig sind, nativ zu verstehen.
Die aktuelle Version von Ultravox (v0.4) hat bei aufgerufenem Audio-Inhalt eine Zeit bis zuerst (TTFT) von ungefähr 150 ms und eine Token-pro-Sekunden-Rate von ~ 60 mit einem Lama 3.1 8B-Rückgrat . Wir sind zwar ziemlich schnell, aber wir glauben, dass diese Zahlen ein beträchtlicher Raum für Verbesserungen gibt.
Ultravox nimmt derzeit Audio ein und emittiert Streaming -Text. Während wir das Modell weiterentwickeln, trainieren wir es so, dass wir einen Strom von Sprachstoken ausgeben können, die dann direkt von einem geeigneten Einheitsvokoder in RAW -Audio umgewandelt werden können.
Siehe Ultravox in Aktion auf unserer Demo -Seite.
Machen Sie sich hier auf unserem Discord -Server.
Wenn Sie an Ultravox -Vollzeit arbeiten möchten, stellen wir ein! Schauen Sie sich unsere Jobseite hier an.
Sie können Ultravox mithilfe Ihres eigenen Audio -Inhalts (als WAV -Datei) ausprobieren, indem Sie eine Ultravox -Instanz auf unserem Partner Baseten drehen: https://www.baseten.co/library/ultravox/. Sie bieten kostenlose Credits an, um loszulegen.
Wenn Sie Ultravox in Echtzeit in Echtzeit ausführen möchten, bieten wir auch eine Reihe von verwalteten APIs an. Sie können mehr über den Zugriff auf diese hier erfahren.
Sie können die neuesten Gewichte von der Ultravox -Umarmungsseite herunterladen.
Lesen Sie weiter, wenn Sie daran interessiert sind, Ihre eigene Version von Ultravox auszubilden.
Installieren Sie die grundlegenden Tools:
Homebrew ist ein Paketmanager für macOS, der hauptsächlich für Linux funktioniert. Wenn Sie Debian oder Ubuntu Linux ausführen, können Sie alternativ mit APT auskommen.Just unsere Shell -Workflows. Es fungiert häufig als unsere Schnittstelle zu allen anderen Tools. /bin/bash -c " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh ) "
brew update
brew install justErstellen Sie eine virtuelle Python -Umgebung und installieren Sie die erforderlichen Pakete:
just installWir verwenden Poesie, um die virtuelle Python -Umgebung zu verwalten.
Wenn Sie Mosaic zum Training verwenden möchten, müssen Sie ein paar Dinge einrichten, um auf der Mosaik -Plattform zu laufen.
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 gcpDerzeit halten wir sowohl den LLM als auch den Audio -Encoder gefroren und trainieren nur den Adapter/den Projektor. Das Training Ultraox V0.4 dauerte 2-3 Stunden am 8xH100-GPUs für 14K-Trainingsschritte.
Warum sollten Sie Ultravox (wieder) trainieren wollen? Hier sind ein paar Szenarien:
Sie möchten ein anderes LLM- oder Audio -Encoder -Rückgrat verwenden.
A. In diesem Fall müssen Sie den Adapter erneut ausdehnen. Sie können release_config.yaml verwenden, das unsere Konfiguration für unsere neueste Version enthält, und Sie sollten einfach die Basis-LLM oder den Basis-Encoder ändern können, indem Sie --text-model <hf-model-id-for-llm> und/oder angeben können --audio-model <hf-model-id-for-encoder> .
Sie möchten das Wissen über das Modell verbessern -> kein Nötiges, Ultravox zu trainieren!
A. Wir empfehlen, entweder Rag im laufenden Fliegen (kein Training erforderlich) zu verwenden oder stattdessen das LLM-Rückgrat zu optimieren. Möglicherweise müssen Sie Ultravox erneut ausbauen, wenn Sie die LLM fein stimmen.
Sie möchten Ihre eigenen Audiodaten verwenden, um beispielsweise Unterstützung für eine neue Sprache hinzuzufügen.
A. Erster Schritt, bereiten Sie Ihren Datensatz vor: Zum Minimum sollten die Samples über ein audio und ein continuation verfügen.
B. Schauen Sie sich ds_tool.py und continuation.jinja sowie unsere Variante der gemeinsamen Stimme an, die mit ds_tool erstellt wurde, um das Feld continuation hinzuzufügen.
C. Fügen Sie Ihren Datensatz in den Dataset -Mix in release_config.yaml und Train hinzu.
Es gibt niemanden, der für alle passt. Wenn Sie Hilfe benötigen, finden Sie uns hier auf unserem Discord -Server.
Wir machen den größten Teil unserer Ausbildung auf der Mosaicml-Plattform und daher sind die meisten unserer Werkzeuge und Dokumente mit Mosaik verbunden. Sie können jedoch das gleiche Training in Ihrer eigenen GPU ohne große Schwierigkeiten durchführen. Hier gehen wir davon aus, dass Sie die Umgebung einrichten ( just install ). Sie können sich auch setup.sh ansehen
Um einen Trainingslauf zu starten, können Sie:
poetry run python -m ultravox.training.train --config_path ultravox/training/configs/release_config.yaml Für das DDP -Training achten Sie sicher, dass Sie torchrun hinzufügen. Wir empfehlen auch im Voraus Vorabsteuerungsgewichte:
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_ARGSFür einen Debug -Lauf können Sie kleinere Modelle, Datensätze oder Chargengröße verwenden. Hier ist eine Konfiguration, die Tinyllama als LLM -Backbone verwendet:
poetry run python -m ultravox.training.train --config_path ultravox/training/configs/asr_tinyllama_100s.yaml --batch_size 1 --report_logs_to tensorboard Wir verwenden SimpleParsing für Konfigurationen. Konfigurationen sind komponierbar (dh Sie können Null oder viele Konfigurationen angeben) und meta_config.yaml wird immer als Standard verwendet. Siehe configs_base.py um die --exp-name --device geänderten Parameter zu finden, wie z --text-model
Bevor Sie Trainingsjobs ausführen
# # 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 --followAndere nützliche Befehle:
mcli get clusters
mcli util r7z2
mcli get runs
mcli get runs --cluster r7z2
mcli run -f mcloud.yaml --followFür interaktive Läufe können Sie verwenden:
just mcloud --image mosaicml/composer:latest --max-duration 1Wichtig: Stellen Sie sicher, dass Sie Ihre Jobs überwachen und die Maschine stoppen, wenn Sie mit einem Job, insbesondere interaktiven, erledigt sind!
infer_tool.py --json > file um eine JSONL -Ausgabe aus einer bestimmten Modell/Datensatz -Kombination zu erstellen, in der jede Zeile zwei Werte enthält: Frage und Antwort .eval_tool.py -f file , um die JSONL -Datei zu bewerten, die eine durchschnittliche Punktzahl für das Modell im Datensatz erzeugt. Die JustFile ist eine gute Ressource, um beliebte Befehle zu finden. Hier sind einige:
just update # update dependencies
just format # run formatting (black, isort, autoflake)
just test # run tests
just python # activate venv and run python