Introdução
Rodar Inteligência Artificial localmente com o
Ollama tornou-se popular. No entanto, o ecossistema de IA foi historicamente construído ao redor da NVIDIA (arquitetura CUDA). Quem possui placas de vídeo da AMD precisa utilizar o
ROCm (Radeon Open Compute), que é a resposta da AMD ao CUDA.
O grande problema é que o suporte oficial do ROCm no
Linux foca em placas voltadas para servidores ou nas gerações mais recentes. Se você possui uma placa da arquitetura
RDNA 1 (
Família Navi 10) — que inclui guerreiras como a
Radeon RX 5700 XT, RX 5700 e RX 5600 XT —, o Ollama frequentemente falha ao tentar detectar a sua GPU.
Os sintomas são clássicos:
- Você envia um prompt e a resposta demora uma eternidade (muitas vezes causando timeout em scripts que esperam a resposta em até 60 segundos).
- O uso da sua memória RAM vai às alturas (um modelo de 7 bilhões de parâmetros, como o Qwen 2.5 ou Llama 3, pode engolir mais de 8 GB da sua RAM física).
- O uso do seu processador (CPU) crava em 100%.
Isso acontece porque o Ollama tenta descobrir a GPU, sofre um timeout na comunicação com o driver e, silenciosamente, desiste, jogando todo o cálculo matemático brutal para as costas do seu processador.
Neste artigo, veremos como forçar o Ollama a reconhecer a sua Navi 10 em um ambiente
Gentoo Linux com systemd, acabando com a lentidão de uma vez por todas.
Passo 1: Permissões de Acesso ao Hardware
O Ollama cria seu próprio usuário no sistema (geralmente chamado ollama), e esse usuário precisa fazer parte dos grupos que controlam a placa de vídeo.
Abra seu terminal e execute o comando abaixo para adicionar o usuário
ollama aos grupos
video e
render:
sudo usermod -aG video,render ollama
Se o usuário do serviço não estiver no grupo
render, a biblioteca ROCm será bloqueada pelo kernel ao tentar enviar instruções para a GPU, resultando na falha silenciosa de detecção.
Passo 2: Garantindo as Bibliotecas Matemáticas (rocBLAS)
Para que a placa de vídeo saiba como calcular as matrizes complexas das redes neurais, ela precisa de bibliotecas específicas. No Gentoo, você deve compilar o suporte matemático do ROCm.
Verifique se você possui os pacotes básicos instalados. O principal deles é o
rocBLAS:
sudo emerge -av sci-libs/rocBLAS sci-libs/rocSOLVER
Nota para usuários de outras distros: No Ubuntu/Debian, isso geralmente é resolvido instalando o pacote
rocm-hip-libraries ou os drivers proprietários
amdgpu-pro.
Passo 3: Configurando o Systemd Override
O Ollama é gerenciado pelo systemd. Se você alterar o arquivo original do serviço, suas configurações serão apagadas na próxima atualização do pacote. O jeito certo é criar um arquivo de override (sobreposição).
Execute o comando para editar o serviço:
sudo systemctl edit ollama
Isso abrirá um editor de texto no terminal. Insira exatamente o bloco abaixo:
[Service]
# Permite que interfaces web em contêineres Docker (como o Open WebUI) acessem a API
Environment="OLLAMA_HOST=0.0.0.0"
# O coração da dica: Força o reconhecimento da placa Navi 10
Environment="HSA_OVERRIDE_GFX_VERSION=10.1.0"
# Diz ao sistema onde encontrar as bibliotecas do ROCm no Gentoo
Environment="LD_LIBRARY_PATH=/usr/lib64:/usr/lib64/rocm"
Dissecando as variáveis (Para você entender o que está fazendo):
OLLAMA_HOST=0.0.0.0: Por padrão, o Ollama só escuta a própria máquina (localhost / 127.0.0.1). Se você usa interfaces gráficas como o Open WebUI via Docker, o contêiner tem uma rede isolada e não conseguirá falar com o Ollama. Essa linha abre as portas para a rede local.- HSA_OVERRIDE_GFX_VERSION=10.1.0: Esta é a variável mais importante. Ela "engana" a biblioteca ROCm. A arquitetura Navi 10 (RDNA 1) muitas vezes não está na "lista VIP" das versões habilitadas por padrão. Definindo como 10.1.0, nós forçamos o driver a compilar e executar o código para esta GPU, pois o silício dela é perfeitamente capaz de lidar com a tarefa.
- LD_LIBRARY_PATH: No Gentoo, as bibliotecas do ROCm costumam ficar em /usr/lib64/rocm. Se não dissermos isso explicitamente, o Ollama pode se perder procurando no diretório /opt/ (padrão de outras distros) e desistir da GPU por não encontrar os arquivos.
Passo 4: Reiniciando
Salve o arquivo e feche o editor. Agora, precisamos reiniciar o serviço do Ollama para que ele leia as novas variáveis de ambiente.
sudo systemctl restart ollama
Vamos olhar os logs do serviço em tempo real para ver se ele encontrou a sua placa de vídeo. Execute:
sudo journalctl -u ollama -f
(O parâmetro -f faz o log rolar a tela em tempo real).O que você deve procurar:Se a configuração funcionou, nas últimas linhas do log você verá uma mensagem muito parecida com esta:
msg="inference compute" id=0 filter_id=0 library=ROCm compute=gfx1010 name=ROCm0 description="AMD Radeon Graphics" ... total="8.0 GiB" available="6.6 GiB"
Tradução do log: O Ollama identificou a biblioteca
ROCm, reconheceu o chip como
gfx1010 (graças ao override) e encontrou os 8.0 GiB de VRAM.
Se você vir
id=cpu no lugar disso, algo deu errado no caminho das bibliotecas ou nas permissões do Passo 1.
Passo 5: O Impacto em Scripts e APIs
Se você tem o costume de usar scripts em Bash para interagir com o Ollama via terminal (usando comandos como
curl para a API), você provavelmente já lidou com limites de tempo (
timeout).
Quando o Ollama roda pela
CPU, carregar um modelo na RAM e processar a resposta pode levar mais de um minuto. Com a
GPU ativada, esse tempo despenca dramaticamente. Um script que antes falhava por exceder 60 segundos agora retornará a resposta quase instantaneamente, pois o processamento massivo paralelo da sua placa de vídeo assumiu as rédeas.
Sua CPU agradecerá, seu sistema ficará responsivo durante as conversas com a IA, e sua memória RAM ficará livre para o que realmente importa.
Conclusão
Sei que o artigo é muito específico (meu caso), mas resolvi deixar o registro. As informações foram obtidas com ajuda da IA Gemini. De certa forma este artigo é complemento de dois outros:
1. Introdução
Nenhum comentário foi encontrado.