Últimas notícias
O UltraVox é um novo tipo de LLM multimodal que pode entender o texto e também a fala humana, sem a necessidade de um estágio de reconhecimento de discurso de áudio separado (ASR). Com base em pesquisas como Audiolm, SeamlessM4T, Gazelle, SpeechGPT e outras, o Ultravox é capaz de estender qualquer LLM de peso aberto com um projetor multimodal que converte áudio diretamente no espaço de alta dimensão usado pelo LLM. Treinamos versões no Llama 3, Mistral e Gemma. Esse acoplamento direto permite que o UltraVox responda muito mais rapidamente do que os sistemas que combinam componentes separados de ASR e LLM. No futuro, isso também permitirá que o UltraVox entenda de maneira nativamente as dicas paralinguísticas do tempo e da emoção que são onipresentes na fala humana.
A versão atual do UltraVox (v0.4), quando invocada com conteúdo de áudio, tem um tempo para o primeiro tido (TTFT) de aproximadamente 150ms e uma taxa de tokens por segundos de ~ 60 usando um backbone llama 3.1 8b . Embora bastante rápido, acreditamos que há um espaço considerável para melhorias nesses números.
Atualmente, o UltraVox recebe áudio e emite texto de streaming. À medida que evoluímos o modelo, treinamos -o para poder emitir um fluxo de tokens de fala que podem ser convertidos diretamente em áudio bruto por um vocoder de unidade apropriado.
Veja o UltraVox em ação em nossa página de demonstração.
Junte -se a nós em nosso servidor Discord aqui.
Se você estiver interessado em trabalhar no Ultravox em tempo integral, estamos contratando! Confira nossa página de empregos aqui.
Você pode experimentar o UltraVox usando seu próprio conteúdo de áudio (como um arquivo WAV), aumentando uma instância do Ultravox em nosso parceiro, BASETEN: https://www.baseten.co/library/ultraVox/. Eles oferecem créditos gratuitos para começar.
Se você estiver interessado em executar o UltraVox em uma capacidade em tempo real, oferecemos um conjunto de APIs gerenciadas também. Você pode aprender mais sobre como obter acesso a aqueles aqui.
Você pode baixar os pesos mais recentes da página de rosto do UltraVox Hugging.
Continue lendo se você estiver interessado em treinar sua própria versão do UltraVox.
Instale as ferramentas básicas:
Homebrew é um gerente de pacotes para MacOS que também funciona principalmente para o Linux. Se você está executando o Debian ou o Ubuntu Linux, pode se dar bem com o APT.Just simplifica nossos fluxos de trabalho da concha. Freqüentemente funciona como nossa interface para todas as outras ferramentas. /bin/bash -c " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh ) "
brew update
brew install justCrie um ambiente virtual do Python e instale os pacotes necessários:
just installEstamos usando poesia para gerenciar o ambiente virtual do Python.
Se você deseja usar o Mosaic para treinamento, é necessário configurar algumas coisas para executar na 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 gcpAtualmente, mantemos o LLM e o codificador de áudio congelados e apenas treinamos o adaptador/projetor. Treinamento Ultraox V0.4 levou de 2 a 3 horas em 8xh100 GPUs para as etapas de treinamento de 14k.
Por que você gostaria de (re) treinar Ultravox? Aqui estão alguns cenários:
Você deseja usar um backbone de codificador LLM ou áudio diferente.
um. Nesse caso, você precisa re-treinar o adaptador. Você pode usar release_config.yaml , que contém nossa configuração para o nosso último lançamento, e poderá simplesmente alterar o LLM ou o codificador base especificando --text-model <hf-model-id-for-llm> e/ou --audio-model <hf-model-id-for-encoder> .
Você quer melhorar o conhecimento do modelo -> Não há necessidade de treinar o UltraVox!
um. Sugerimos usar o RAG em tempo real (sem o treinamento necessário) ou ajustar o backbone LLM. Pode ser necessário re-treinar o UltraVox se você ajustar o LLM.
Você deseja usar seus próprios dados de áudio, por exemplo, para adicionar suporte para um novo idioma.
um. Primeira etapa, prepare seu conjunto de dados: no mínimo, as amostras devem ter um campo continuation de audio e texto.
b. Dê uma olhada no ds_tool.py e continuation.jinja , bem como nossa variante de voz comum que foi criada usando ds_tool para adicionar o campo continuation .
c. Adicione seu conjunto de dados ao mix de dados em release_config.yaml e treine.
Não há nenhum tamanho único. Se precisar de ajuda, poderá nos encontrar em nosso servidor Discord aqui.
Fazemos a maior parte de nosso treinamento na plataforma MosaicML e, portanto, a maioria de nossas ferramentas e os documentos está relacionada a mosaico. No entanto, você pode fazer o mesmo treinamento em sua própria GPU sem muita dificuldade. Aqui, assumimos que você está configurado para o ambiente (execute just install ). Você também pode dar uma olhada no setup.sh
Para iniciar uma corrida de treinamento, você pode fazer:
poetry run python -m ultravox.training.train --config_path ultravox/training/configs/release_config.yaml Para o treinamento em DDP, adicione torchrun . Também recomendamos os pesos de pré -busca com antecedência:
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 uma execução de depuração, você pode usar modelos menores, conjuntos de dados ou tamanho em lote. Aqui está uma configuração que usa Tinyllama como backbone 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 o SimpleParSing para configurações. As configurações são compostas (ou seja, você pode especificar zero ou muitas configurações) e meta_config.yaml é sempre usado como padrão. Consulte configs_base.py para encontrar os parâmetros que você modifica, como o --text-model , --device , --exp-name , etc.
Antes de executar qualquer trabalho de treinamento, você precisa configurar sua chave SSH na plataforma em mosaico: https://docs.mosicml.com/projects/mcli/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 --followOutros comandos úteis:
mcli get clusters
mcli util r7z2
mcli get runs
mcli get runs --cluster r7z2
mcli run -f mcloud.yaml --followPara execuções interativas que você pode usar:
just mcloud --image mosaicml/composer:latest --max-duration 1IMPORTANTE: Certifique -se de monitorar seus trabalhos e parar a máquina quando terminar de qualquer trabalho, especialmente interativo!
infer_tool.py --json > file para criar uma saída JSONL a partir de uma determinada combinação de modelo/conjunto de dados, onde cada linha contém dois valores: pergunta e resposta .eval_tool.py -f file para avaliar o arquivo jsonl, que produzirá uma pontuação média para o modelo no conjunto de dados. O JustFile é um bom recurso para encontrar comandos populares. Aqui estão alguns:
just update # update dependencies
just format # run formatting (black, isort, autoflake)
just test # run tests
just python # activate venv and run python