Skip to content

Às vezes, o Ollama pode não funcionar como esperado. Uma das melhores formas de descobrir o que aconteceu é verificar os logs. Encontre os logs no Mac executando o comando:

shell
cat ~/.ollama/logs/server.log

Em sistemas Linux com systemd, os logs podem ser encontrados com este comando:

shell
journalctl -u ollama --no-pager --follow --pager-end

Ao executar o Ollama em um contêiner, os logs são enviados para stdout/stderr dentro do contêiner:

shell
docker logs <container-name>

(Use docker ps para encontrar o nome do contêiner)

Se você executar ollama serve manualmente em um terminal, os logs aparecerão nesse mesmo terminal.

Ao executar o Ollama no Windows, existem alguns locais diferentes. Você pode visualizá-los na janela do explorer pressionando <cmd>+R e digitando:

  • explorer %LOCALAPPDATA%\Ollama para visualizar os logs. Os logs de servidor mais recentes estarão em server.log e os logs mais antigos estarão em server-#.log
  • explorer %LOCALAPPDATA%\Programs\Ollama para navegar pelos binários (o instalador adiciona este caminho ao PATH do seu usuário)
  • explorer %HOMEPATH%\.ollama para navegar pelo local onde os modelos e a configuração são armazenados
  • explorer %TEMP% onde os arquivos executáveis temporários são armazenados em um ou mais diretórios ollama*

Para habilitar o registro de logs de depuração adicionais para ajudar a solucionar problemas, primeiro Saia do aplicativo em execução pelo menu da bandeja e depois, em um terminal do PowerShell

powershell
$env:OLLAMA_DEBUG="1"
& "ollama app.exe"

Junte-se ao Discord para obter ajuda na interpretação dos logs.

Bibliotecas de LLM

O Ollama inclui várias bibliotecas de LLM compiladas para diferentes GPUs e recursos vetoriais de CPU. O Ollama tenta selecionar a melhor com base nas capacidades do seu sistema. Se essa detecção automática apresentar problemas, ou se você encontrar outros problemas (por exemplo, falhas na sua GPU), você pode contornar isso forçando o uso de uma biblioteca de LLM específica. A cpu_avx2 terá o melhor desempenho, seguida pela cpu_avx, e a mais lenta, mas mais compatível, é a cpu. A emulação Rosetta no macOS funcionará com a biblioteca cpu.

No log do servidor, você verá uma mensagem semelhante a esta (varia de acordo com a versão):

Dynamic LLM libraries [rocm_v6 cpu cpu_avx cpu_avx2 cuda_v11 rocm_v5]

Substituição experimental de biblioteca de LLM

Você pode definir a variável OLLAMA_LLM_LIBRARY para qualquer uma das bibliotecas de LLM disponíveis para ignorar a detecção automática. Por exemplo, se você tem uma placa CUDA, mas quer forçar o uso da biblioteca de LLM de CPU com suporte a vetores AVX2, use:

shell
OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve

Você pode verificar quais recursos sua CPU possui com o seguinte comando.

shell
cat /proc/cpuinfo| grep flags | head -1

Instalação de versões mais antigas ou pré-lançamento no Linux

Se você encontrar problemas no Linux e quiser instalar uma versão mais antiga, ou quiser testar uma versão pré-lançamento antes do lançamento oficial, você pode informar ao script de instalação qual versão instalar.

shell
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.5.7 sh

Linux tmp com flag noexec

Se o seu sistema estiver configurado com a flag "noexec" no local onde o Ollama armazena seus arquivos executáveis temporários, você pode especificar um local alternativo definindo a variável OLLAMA_TMPDIR para um caminho gravável pelo usuário que executa o Ollama. Por exemplo: OLLAMA_TMPDIR=/usr/share/ollama/

Docker no Linux

Se o Ollama funcionar inicialmente na GPU em um contêiner Docker, mas depois mudar para executar na CPU após algum tempo, com erros no log do servidor relatando falhas na descoberta de GPU, isso pode ser resolvido desativando o gerenciamento de cgroups do systemd no Docker. Edite o arquivo /etc/docker/daemon.json no host e adicione "exec-opts": ["native.cgroupdriver=cgroupfs"] à configuração do Docker.

Descoberta de GPU NVIDIA

Quando o Ollama é iniciado, ele faz um inventário das GPUs presentes no sistema para determinar a compatibilidade e a quantidade de VRAM disponível. Às vezes, essa descoberta não consegue encontrar suas GPUs. De modo geral, executar o driver mais recente fornecerá os melhores resultados.

Solução de problemas de GPU NVIDIA no Linux

Se você estiver usando um contêiner para executar o Ollama, certifique-se de ter configurado o runtime do contêiner primeiro, conforme descrito em docker

Às vezes, o Ollama pode ter dificuldades para inicializar a GPU. Ao verificar os logs do servidor, isso pode aparecer como vários códigos de erro, como "3" (não inicializado), "46" (dispositivo indisponível), "100" (nenhum dispositivo), "999" (desconhecido) ou outros. As técnicas de solução de problemas a seguir podem ajudar a resolver o problema:

  • Se você estiver usando um contêiner, o runtime do contêiner está funcionando? Tente executar docker run --gpus all ubuntu nvidia-smi — se isso não funcionar, o Ollama não conseguirá ver sua GPU NVIDIA.
  • O driver uvm está carregado? Execute sudo nvidia-modprobe -u
  • Tente recarregar o driver nvidia_uvm: execute sudo rmmod nvidia_uvm e depois sudo modprobe nvidia_uvm
  • Tente reiniciar o sistema
  • Certifique-se de estar executando os drivers NVIDIA mais recentes

Se nenhuma dessas opções resolver o problema, colete informações adicionais e abra uma issue:

  • Defina CUDA_ERROR_LEVEL=50 e tente novamente para obter mais logs de diagnóstico
  • Verifique o dmesg em busca de erros com os comandos sudo dmesg | grep -i nvrm e sudo dmesg | grep -i nvidia

Descoberta de GPU AMD

No Linux, o acesso a GPUs AMD geralmente requer associação aos grupos video e/ou render para acessar o dispositivo /dev/kfd. Se as permissões não estiverem configuradas corretamente, o Ollama detectará isso e reportará um erro no log do servidor.

Ao executar em um contêiner, em algumas distribuições Linux e runtimes de contêiner, o processo do Ollama pode não conseguir acessar a GPU. Use o comando ls -lnd /dev/kfd /dev/dri /dev/dri/* no sistema host para determinar os IDs de grupo numéricos no seu sistema, e passe argumentos adicionais --group-add ... para o contêiner para que ele possa acessar os dispositivos necessários. Por exemplo, na saída a seguir crw-rw---- 1 0 44 226, 0 Sep 16 16:55 /dev/dri/card0 a coluna do ID do grupo é 44

Se você estiver com problemas para fazer o Ollama descobrir ou usar sua GPU corretamente para inferência, o seguinte pode ajudar a isolar a falha:

  • AMD_LOG_LEVEL=3 Habilita os níveis de log de informação nas bibliotecas AMD HIP/ROCm. Isso pode ajudar a exibir códigos de erro mais detalhados que auxiliam na solução de problemas
  • OLLAMA_DEBUG=1 Durante a descoberta de GPU, informações adicionais serão reportadas
  • Verifique o dmesg em busca de erros dos drivers amdgpu ou kfd com os comandos sudo dmesg | grep -i amdgpu e sudo dmesg | grep -i kfd

Incompatibilidade de versão de driver AMD

Se sua GPU AMD não for detectada no Linux e os logs do servidor contiverem mensagens como:

msg="failure during GPU discovery" ... error="failed to finish discovery before timeout"
msg="bootstrap discovery took" duration=30s ...

Isso geralmente significa que o driver de GPU AMD do sistema é muito antigo. O Ollama inclui as bibliotecas Linux do ROCm 7, que requerem um driver de kernel ROCm 7 compatível. Se o sistema estiver executando um driver mais antigo (ROCm 6.x ou anterior), a inicialização da GPU travará durante a descoberta de dispositivos e eventualmente atingirá o tempo limite, fazendo com que o Ollama recorra à CPU.

Para resolver isso, atualize para o driver ROCm v7 usando o utilitário amdgpu-install na documentação do ROCm da AMD. Após a atualização, reinicie o sistema e reinicie o Ollama.

Múltiplas GPUs AMD

Se você receber respostas sem sentido ao carregar modelos em várias GPUs AMD no Linux, consulte o guia a seguir:

Erros de terminal no Windows

Versões mais antigas do Windows 10 (por exemplo, 21H1) são conhecidas por ter um bug em que o programa de terminal padrão não exibe caracteres de controle corretamente. Isso pode resultar na exibição de uma longa sequência de caracteres como ←[?25h←[?25l, às vezes com o erro The parameter is incorrect. Para resolver esse problema, atualize para o Windows 10 22H1 ou mais recente.