Последние новости
Ultravox - это новый вид мультимодальной LLM, который может понимать текст, а также человеческую речь, без необходимости отдельной стадии распознавания аудио речи (ASR). Опираясь на такие исследования, как Audiolm, Seamlesm4t, Gazelle, SpeechGPT и другие, Ultravox способен расширить любой открытый LLM с помощью мультимодального проектора, который преобразует аудио непосредственно в высокомерное пространство, используемое LLM. Мы обучали версии на Llama 3, Mistral и Gemma. Эта прямая связь позволяет Ultravox реагировать гораздо быстрее, чем системы, которые объединяют отдельные компоненты ASR и LLM. В будущем это также позволит Ultravox изначально понять паралингвистические сигналы времени и эмоций, которые вездесуют в человеческой речи.
Текущая версия Ultravox (v0.4), когда вы вызываете аудиоконтент, имеет время на первое место (TTFT) приблизительно 150 мс, а токен на секунду составляет ~ 60 с использованием магистрали Llama 3.1 8b. Полем Несмотря на то, что мы довольно быстро, мы считаем, что в этих цифрах есть значительное место для улучшения.
Ultravox в настоящее время принимает аудио и излучает потоковой текст. По мере того, как мы развиваем модель, мы обучаем ее, чтобы иметь возможность излучать поток речевых токенов, который затем может быть преобразован непосредственно в необработанное аудио подходящим вокалом подразделения.
Смотрите Ultravox в действии на нашей демо -странице.
Присоединяйтесь к нам на нашем сервере Discord здесь.
Если вы заинтересованы в работе над Ultravox полный рабочий день, мы нанимаем! Проверьте нашу страницу работы здесь.
Вы можете попробовать Ultravox, используя свой собственный аудиоконтент (в качестве файла wav), раскрутив экземпляр Ultravox на нашем партнере, Baseten: https://www.baseten.co/library/ultravox/. Они предлагают бесплатные кредиты, чтобы начать.
Если вы заинтересованы в управлении Ultravox в качестве в режиме реального времени, мы также предлагаем набор управляемых API. Вы можете узнать больше о получении доступа к тем, кто здесь.
Вы можете скачать последние веса со страницы Ultravox Hugging Face.
Читайте дальше, если вы заинтересованы в обучении собственной версии 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.
Если вы хотите использовать Mosaic для обучения, вам нужно настроить несколько вещей для запуска на платформе Mosaic.
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, так и аудио -энкодер и тренируем только адаптер/проектор. Обучение Ultraox v0.4 заняло 2-3 часа на графических процессорах 8XH100 для обучающих этапов 14K.
Зачем вам (повторно) тренироваться ультравокс? Вот несколько сценариев:
Вы хотите использовать другую основу LLM или аудио -энкодера.
а В этом случае вам нужно переучить адаптер. Вы можете использовать release_config.yaml , который содержит нашу конфигурацию для нашего последнего релиза, и вы должны быть в состоянии просто изменить базовый LLM или энкодер, указав --text-model <hf-model-id-for-llm> и/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или/или ин --audio-model <hf-model-id-for-encoder> .
Вы хотите улучшить знание модели -> не нужно тренировать Ultravox!
а Мы предлагаем либо использовать тряпку на лету (не требуется обучения), либо настраивать магистраль LLM. Вам может потребоваться повторное обучение Ultravox, если вы настраиваете LLM.
Вы хотите использовать свои собственные аудиоданные, например, чтобы добавить поддержку нового языка.
а Первый шаг, подготовьте свой набор данных: как минимум, образцы должны иметь audio и поле continuation текста.
беременный Взгляните ds_tool ds_tool.py и continuation.jinja continuation
в Добавьте свой набор данных в Mix набора данных в release_config.yaml и Train.
Там нет единого размера. Если вам нужна помощь, вы можете найти нас на нашем сервере 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Для запуска отладки вы можете использовать более мелкие модели, наборы данных или размер партии. Вот конфигурация, которая использует Tinylymama в качестве магистрали 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 на платформе Mosaic: 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