Migração do Whisper de CPU para GPU#
Este guia descreve como mover o serviço de reconhecimento de fala Whisper de CPU para uma GPU NVIDIA na instalação cliente do Sherpa AI Server. Não é necessário alterar os demais serviços nem o modo de inicialização do LLM selecionado.
Requisitos#
Antes de fazer a troca, verifique se:
- há uma GPU NVIDIA instalada no servidor com memória de vídeo suficiente;
nvidia-smidetecta a placa de vídeo;- o NVIDIA Container Toolkit e o suporte a GPU NVIDIA no Docker estão instalados;
- a imagem
aiserver-whisper:latestjá foi baixada; - o modelo Whisper está descompactado em
./whisper/models.
Verificação do acesso do Docker à GPU#
nvidia-smi
Se nvidia-smi não detectar a GPU ou se o Docker não estiver configurado para funcionar com o NVIDIA Container Toolkit, corrija esse problema primeiro. Caso contrário, o contêiner do Whisper não será iniciado em modo GPU.
Configuração de docker-compose.yml#
Abra o docker-compose.yml e encontre o serviço aiserver-whisper:
aiserver-whisper:
container_name: aiserver-whisper
image: aiserver-whisper:latest
No bloco do serviço, descomente as variáveis WHISPER_DEVICE, CUDA_DEVICE_INDEX e a seção deploy. A configuração final deve ficar assim:
aiserver-whisper:
container_name: aiserver-whisper
image: aiserver-whisper:latest
restart: unless-stopped
profiles: ["whisper", "full"]
environment:
- WHISPER_MODEL=${WHISPER_MODEL:-base}
- WHISPER_MODEL_DIR=/models
- WHISPER_API_KEY=${WHISPER_API_KEY:-}
- WHISPER_DEVICE=cuda:0
- CUDA_DEVICE_INDEX=0
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
ports:
- 3005:8000
volumes:
- ./whisper/models:/models:ro
WHISPER_DEVICE=cuda:0 seleciona explicitamente a primeira GPU disponível para o contêiner. CUDA_DEVICE_INDEX é usado como configuração de fallback quando WHISPER_DEVICE não está presente; no Compose do cliente, mantenha os índices alinhados. Se o Whisper precisar usar outra GPU, especifique, por exemplo, cuda:1 e CUDA_DEVICE_INDEX=1.
Importante: quando LLM, Whisper e BGE Reranker estiverem em execução ao mesmo tempo, leve em conta o consumo total de VRAM. A falta de memória de vídeo pode causar o erro
CUDA out of memory.
Verificação da configuração#
Antes de reiniciar, verifique a sintaxe do arquivo Compose:
docker compose --profile whisper config --quiet
O comando termina sem saída se a configuração estiver correta.
Reiniciando o Whisper em modo GPU#
Recrie apenas o contêiner do Whisper para que as novas variáveis de ambiente e a reserva de GPU sejam aplicadas:
docker compose --profile whisper up -d --force-recreate aiserver-whisper
Um docker compose restart normal não é suficiente: esse comando não aplica alterações na configuração do contêiner.
Verificação do status e dos logs#
docker compose --profile whisper ps aiserver-whisper
docker compose --profile whisper logs --tail=100 aiserver-whisper
O contêiner aiserver-whisper deve estar no estado Up.
Verificação do dispositivo selecionado#
O Whisper publica informações de diagnóstico no endpoint /health:
curl -sS http://127.0.0.1:3005/health
Resposta esperada:
{
"status": "healthy",
"device": "cuda:0",
"cuda_available": true,
"cuda_device_count": 1
}
A quantidade de GPUs disponíveis pode variar. Os sinais principais de uma troca bem-sucedida são que device comece com cuda e que cuda_available seja true.
Enquanto a transcrição estiver em execução, verifique também o uso da GPU:
watch -n 1 nvidia-smi
Possíveis problemas#
could not select device driver "nvidia"#
O Docker não vê o runtime da NVIDIA. Verifique a instalação do NVIDIA Container Toolkit e então execute:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Depois de reiniciar o Docker, recrie o contêiner do Whisper novamente.
cuda_available é false#
Verifique nvidia-smi, as configurações do NVIDIA Container Toolkit e a presença da seção deploy.resources.reservations.devices na configuração final:
docker compose --profile whisper config
CUDA out of memory#
Não há memória de vídeo livre suficiente na GPU selecionada. Pare processos de GPU desnecessários, escolha outra GPU ou reduza o modelo Whisper pela variável WHISPER_MODEL no .env.
Reversão para CPU#
Para voltar o Whisper para CPU:
- Comente ou remova
WHISPER_DEVICE,CUDA_DEVICE_INDEXe a seçãodeploydo serviçoaiserver-whisper. - Verifique a configuração e recrie o contêiner:
docker compose --profile whisper config --quiet
docker compose --profile whisper up -d --force-recreate aiserver-whisper
curl -sS http://127.0.0.1:3005/health
Após a reversão, /health deve retornar "device":"cpu" e "cuda_available":false.