Últimas noticias
Ultravox es un nuevo tipo de LLM multimodal que puede comprender el texto y el habla humana, sin la necesidad de una etapa de reconocimiento de voz de audio separado (ASR). Sobre la base de investigaciones como Audiolm, SeamlessM4T, Gazelle, Speechgpt y otros, Ultravox puede extender cualquier LLM de peso abierto con un proyector multimodal que convierta el audio directamente en el espacio de alta dimensión utilizado por LLM. Hemos entrenado versiones en Llama 3, Mistral y Gemma. Este acoplamiento directo permite que Ultravox responda mucho más rápido que los sistemas que combinan componentes ASR y LLM separados. En el futuro, esto también permitirá a Ultravox comprender de forma nativa las señales paralingüísticas del tiempo y la emoción que son omnipresentes en el habla humana.
La versión actual de Ultravox (V0.4), cuando se invoca con contenido de audio, tiene una token de tiempo a primera (TTFT) de aproximadamente 150 ms, y una tasa de tokens por segundo de ~ 60 utilizando una red troncal LLAMA 3.1 8B . Si bien es bastante rápido, creemos que hay un margen considerable para mejorar estos números.
Ultravox actualmente toma audio y emite texto de transmisión. A medida que evolucionamos el modelo, lo capacitaremos para poder emitir un flujo de tokens de voz que luego puede convertirse directamente en audio sin procesar por un vocoder de la unidad apropiado.
Vea Ultravox en acción en nuestra página de demostración.
Únase a nosotros en nuestro servidor Discord aquí.
Si está interesado en trabajar en Ultravox a tiempo completo, ¡estamos contratando! Consulte nuestra página de trabajos aquí.
Puede probar UltraVOX usando su propio contenido de audio (como un archivo WAV) haciendo girar una instancia de Ultravox en nuestro socio, Baseten: https://www.baseten.co/library/ultravox/. Ofrecen créditos gratuitos para comenzar.
Si está interesado en ejecutar Ultravox en una capacidad en tiempo real, también ofrecemos un conjunto de API administradas. Puede obtener más información sobre cómo obtener acceso a los que están aquí.
Puede descargar los últimos pesos de la página de la cara de abrazo Ultravox.
Siga leyendo si está interesado en entrenar su propia versión de Ultravox.
Instale las herramientas básicas:
Homebrew es un administrador de paquetes para MacOS que también funciona principalmente para Linux. Si está ejecutando Debian o Ubuntu Linux, alternativamente puede sobrevivir con APT.Just simplifica nuestros flujos de trabajo de shell. Con frecuencia funciona como nuestra interfaz para todas las demás herramientas. /bin/bash -c " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh ) "
brew update
brew install justCree un entorno virtual de Python e instale los paquetes necesarios:
just installEstamos utilizando poesía para administrar el entorno virtual de Python.
Si desea usar Mosaic para capacitación, debe configurar algunas cosas para ejecutar en la plataforma 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 gcpActualmente, mantenemos tanto el LLM como el codificador de audio congelado y solo entrenamos el adaptador/proyector. Entrenamiento Ultraox V0.4 tomó 2-3 horas en 8XH100 GPU para pasos de entrenamiento de 14k.
¿Por qué querrías (re) entrenar a Ultravox? Aquí hay algunos escenarios:
Desea usar una columna vertebral de codificador de audio o LLM diferente.
a. En este caso, debe volver a entrenar el adaptador. Puede usar release_config.yaml , que contiene nuestra configuración para nuestra última versión, y debería poder cambiar simplemente el Base LLM o el codificador especificando --text-model <hf-model-id-for-llm> y/o --audio-model <hf-model-id-for-encoder> .
Desea mejorar el conocimiento del modelo -> ¡No es necesario entrenar a Ultravox!
a. Sugerimos usar trapo sobre la mosca (no se necesita entrenamiento) o ajustar la columna vertebral LLM. Es posible que deba volver a entrenar a Ultravox si ajusta el LLM.
Desea usar sus propios datos de audio, por ejemplo, para agregar soporte para un nuevo idioma.
a. Primer paso, prepare su conjunto de datos: como mínimo, las muestras deben tener un audio y un campo continuation de texto.
b. Eche un vistazo a ds_tool.py y continuation.jinja , así como nuestra variante de voz común que se creó usando ds_tool para agregar el campo continuation .
do. Agregue su conjunto de datos a la mezcla del conjunto de datos en release_config.yaml y trenes.
No hay ajustes únicos. Si necesita ayuda, puede encontrarnos en nuestro servidor Discord aquí.
Hacemos la mayor parte de nuestra capacitación en la plataforma MosaiCML y, por lo tanto, la mayoría de nuestras herramientas y documentos están relacionados con el mosaico. Sin embargo, puede hacer el mismo entrenamiento en su propia GPU sin mucha dificultad. Aquí suponemos que tiene el entorno configurado (ejecute just install ). También puedes echar un vistazo a setup.sh
Para comenzar una carrera de entrenamiento, puedes hacer:
poetry run python -m ultravox.training.train --config_path ultravox/training/configs/release_config.yaml Para el entrenamiento DDP, asegúrese de agregar torchrun . También recomendamos prevenir pesas por adelantado:
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_ARGSPara una ejecución de depuración, puede usar modelos más pequeños, conjuntos de datos o tamaño por lotes. Aquí hay una configuración que usa Tinyllama como la columna vertebral LLM:
poetry run python -m ultravox.training.train --config_path ultravox/training/configs/asr_tinyllama_100s.yaml --batch_size 1 --report_logs_to tensorboard Utilizamos SimpleParsing para configuraciones. Las configuraciones son compuestas (es decir, puede especificar cero o muchas configuraciones) y meta_config.yaml siempre se usa como el valor predeterminado. Consulte configs_base.py para encontrar los parámetros que modifica, como el --text-model , --device , --exp-name , etc.
Antes de ejecutar cualquier trabajo de capacitación, debe configurar su clave SSH en la plataforma Mosaic: https://docs.mosaicml.com/projects/mcli/en/latest/resources/secrets/ssh.html#page-secretssh
# # 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 --followOtros comandos útiles:
mcli get clusters
mcli util r7z2
mcli get runs
mcli get runs --cluster r7z2
mcli run -f mcloud.yaml --followPara ejecuciones interactivas puede usar:
just mcloud --image mosaicml/composer:latest --max-duration 1IMPORTANTE: ¡Asegúrese de monitorear sus trabajos y detener la máquina cuando haya terminado con cualquier trabajo, especialmente interactivos!
infer_tool.py --json > file para crear una salida JSONL a partir de un combo de modelo/conjunto de datos determinado, donde cada línea contiene dos valores: pregunta y respuesta .eval_tool.py -f file para evaluar el archivo JSONL, que producirá una puntuación promedio para el modelo en el conjunto de datos. JustFile es un buen recurso para encontrar comandos populares. Aquí hay algunos:
just update # update dependencies
just format # run formatting (black, isort, autoflake)
just test # run tests
just python # activate venv and run python