Olá a todos.
No panorama atual da inteligência artificial, a capacidade de executar modelos localmente tornou-se não apenas desejável, mas essencial para muitos programadores e entusiastas de tecnologia. O Ollama destaca-se como uma ferramenta excecional neste contexto, permitindo a execução de modelos de linguagem de grande porte (LLMs) diretamente nos nossos computadores pessoais, das nossas PME’s ou até dos nossos homlabs.
Neste post, exploraremos o processo de instalação do Ollama em sistemas Linux e macOS, juntamente com configurações avançadas para maximizar o desempenho, incluindo a utilização de GPUs, otimização da memória unificada (UMA) nos Mac, gestão de threads e configuração do acesso à rede.
O que é o Ollama?
Antes de mergulharmos nos detalhes técnicos, é importante compreender o que é o Ollama. Trata-se de uma ferramenta de código aberto que simplifica a execução de LLMs localmente, sem necessidade de ligação contínua à Internet ou dependência de serviços na nuvem. Isto proporciona vantagens significativas em termos de privacidade, latência e custos, especialmente para utilizadores que necessitam de interagir frequentemente com estes modelos.
Instalação do Ollama em Linux
O meu special souce em Linux é a seguinte configuração:
- CPU moderno com suporte para AVX2 (a maioria dos CPUs desde 2013)
- Mínimo de 8GB de RAM (16GB+ recomendado para modelos maiores)
- GPU com suporte para CUDA (NVIDIA) ou ROCm (AMD) para aceleração
- Distribuição Linux moderna (Ubuntu 20.04+, Debian 11+, Fedora 35+, etc.)
Experimentei com multi threading á seria em servidores com mais de 56 cores e existe um sweetspot para IA. Não abusem do numero de threads se as tiverem, porque se não tiverem memoria para acompanhar, provavelmente vão criar um bottleneck ao vosso processamento.
Passos de Instalação no Linux
- Instalação direta via scriptA maneira mais simples de instalar o Ollama é através do script oficial:
curl -fsSL https://ollama.com/install.sh | sh
Este script deteta automaticamente o nosso sistema operativo e instala os componentes necessários.
- Instalação manualSe preferirem um controlo mais granular, podem efetuar a instalação manualmente:
# Descarregar o binário mais recente wget https://github.com/ollama/ollama/releases/latest/download/ollama-linux-amd64 # Tornar o ficheiro executável chmod +x ollama-linux-amd64 # Mover para um diretório no PATH sudo mv ollama-linux-amd64 /usr/local/bin/ollama
- Verificação da instalaçãoPara confirmar que o Ollama foi instalado corretamente executem:
ollama --version
O output deverá ver a versão atual do Ollama visível na linha de comandos.
Instalação do Ollama em macOS
Requisitos do Sistema
Para aqueles elitistas que usam macOS – :] – recomendo:
- Mac com processador Intel ou Apple Silicon (M1/M2/M3)
- macOS 12 (Monterey) ou superior
- Mínimo de 8GB de RAM (16GB+ recomendado)
Passos de Instalação no macOS
- Utilizando o Homebrew
Se tiver o Homebrew instalado, a instalação é extremamente simples:brew install ollama
- Instalação manual.
Alternativamente, podem descarregar o ficheiro de instalação diretamente do site oficial:# Descarregar o instalador curl -fsSL https://ollama.com/download/ollama-darwin-amd64 -o ollama # Tornar o ficheiro executável chmod +x ollama # Mover para um diretório no PATH sudo mv ollama /usr/local/bin/
Para Apple Silicon (M1/M2/M3), utilize o binário específico para a arquitetura:
curl -fsSL https://ollama.com/download/ollama-darwin-arm64 -o ollama
- Verificação da instalação
Confirmem a instalação com:ollama --version
Configuração Avançada do Ollama
Após termos uma instalação bem-sucedida, vamos explorar as configurações avançadas que permitem maximizar o desempenho do Ollama nos nossos sistemas.
Configuração de GPU para Aceleração
O Ollama é rei com processamento e memoria das GPUs, acelerando significativamente a inferência dos modelos.
Para NVIDIA GPUs (Linux)
- Instalação dos drivers CUDA
Primeiro, certifique-se de que tem os drivers NVIDIA e o toolkit CUDA instalados:# Ubuntu/Debian sudo apt update sudo apt install nvidia-driver-535 nvidia-cuda-toolkit # Fedora sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda
- Verificação da instalação CUDA
Confirmem que o CUDA está corretamente instalado:nvidia-smi
- Configuração do Ollama para utilizar GPU
Por predefinição, o Ollama deteta automaticamente GPUs disponíveis. Podem verificar se está a utilizar a GPU com:OLLAMA_DEBUG=1 ollama run llama2
No output, se tudo estiver bem, deverão ver informações sobre o GPU sendo utilizada.
Para AMD GPUs (Linux)
- Instalação do ROCm
Para GPUs AMD, instale o ROCm:# Ubuntu 22.04+ sudo apt update sudo apt install rocm-hip-runtime
- Configuração do Ollama para ROCmConfigure o Ollama para utilizar ROCm através de variáveis de ambiente:
export OLLAMA_AMD=1
Para tornar esta configuração permanente, adicione esta linha ao seu
~/.bashrc
ou~/.zshrc
.
Otimização da UMA para Apple Silicon
Agora a sério, a arquitetura da Apple brilha quase com o mesmo brilho qui AI em GPU’s, pois os processadores Apple Silicon (M1/M2/M3) utilizam uma arquitetura de Memória Unificada (UMA) que pode ser otimizada para o Ollama.
- Configuração da memória disponível
Definam a quantidade de memória que o Ollama pode utilizar:export OLLAMA_RAM=12000 # Define 12GB como limite de memória (em MB)
- Ativação da otimização específica para Metal
Permitam acesso de baremetal, de forma a garantir o melhor desempenho com a GPU integrada:export OLLAMA_METAL=1
- Otimização da quantidade de threads
Ajustem o número de threads de acordo com o seu processador:# Para M1 Pro/Max ou M2/M3 (10+ cores) export OLLAMA_NUM_THREAD=8 # Para M1 básico (8 cores) export OLLAMA_NUM_THREAD=6
Como é obvio, os valores acima deverão ser alinhados para o numero de processadores/cores/threads que o vosso hardware permita :).
Configuração do Número de Threads
Conforme falamos anteriormente, o ajuste do número de threads é crucial para otimizar o desempenho em diferentes configurações de hardware.
- Determinar o número ideal de threads
Como regra geral, defina o número de threads para 75% do total de núcleos lógicos do vosso sistema:# Verificar o número de núcleos lógicos nproc --all # Configurar o número de threads export OLLAMA_NUM_THREAD=12 # Ajuste de acordo com o seu hardware
- Adicionando configurações permanentes
Para tornar estas configurações permanentes, adicione-as ao vosso ficheiro de perfil:echo 'export OLLAMA_NUM_THREAD=12' >> ~/.bashrc # ou echo 'export OLLAMA_NUM_THREAD=12' >> ~/.zshrc
Depois, recarreguem o ficheiro de configuração:
source ~/.bashrc # ou source ~/.zshrc
Configuração do Ollama para Escutar na Placa de Rede/Over a Network.
Por predefinição, o Ollama escuta apenas em localhost
(127.0.0.1), o que significa que só podem aceder a ele a partir da mesma máquina onde está a ser executado. Para permitir o acesso a partir de outros dispositivos na sua rede, precisam de configurá-lo para escutar num endereço IP acessível.
- Identificar o seu endereço IP na rede local
# Em Linux ip addr show | grep "inet " | grep -v 127.0.0.1 # Em macOS ifconfig | grep "inet " | grep -v 127.0.0.1
- Configurar o Ollama para escutar num endereço específico
export OLLAMA_HOST=192.168.1.100:11434 # Substitua pelo seu IP real
Ou, para escutar em todas as interfaces:
export OLLAMA_HOST=0.0.0.0:11434
- Iniciar o serviço do Ollama
ollama serve
- Configuração como serviço systemd (Linux)Para configurar o Ollama como um serviço que inicia automaticamente de forma persistente a cada reboot:
sudo nano /etc/systemd/system/ollama.service
Adicionem o seguinte conteúdo:
[Unit] Description=Ollama Service After=network.target [Service] Type=simple User=seu_usuario Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="OLLAMA_NUM_THREAD=12" # Adicione outras variáveis de ambiente conforme necessário ExecStart=/usr/local/bin/ollama serve Restart=on-failure [Install] WantedBy=multi-user.target
Depois, ativem e iniciem o serviço:
sudo systemctl daemon-reload sudo systemctl enable ollama sudo systemctl start ollama
- Para o cenário de macOS: Configuração como serviço launchd
Criem um ficheiro plist para o launchd:nano ~/Library/LaunchAgents/com.ollama.service.plist
Adicionem o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.ollama.service</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/ollama</string> <string>serve</string> </array> <key>EnvironmentVariables</key> <dict> <key>OLLAMA_HOST</key> <string>0.0.0.0:11434</string> <key>OLLAMA_NUM_THREAD</key> <string>8</string> <key>OLLAMA_METAL</key> <string>1</string> </dict> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/> </dict> </plist>
Carreguem e iniciem o serviço:
launchctl load ~/Library/LaunchAgents/com.ollama.service.plist launchctl start com.ollama.service
Verificação da Instalação e Configuração
Com o Ollama configurado, vamos verificar se tudo está a funcionar corretamente:
- Teste básico
ollama pull llama2; ollama run llama2 "Olá, sou um modelo de linguagem a correr localmente!"
Nota: Na primeira parte do comando, estamos a descarregar um modelo de testes, de nome llama2.
- Verificação da utilização de GPU
OLLAMA_DEBUG=1 ollama run llama2 "Este é um teste para verificar o uso da GPU"
- Verificação do acesso remoto
De outro dispositivo na mesma rede:curl http://$IP:11434/api/tags
Deverão receber uma resposta JSON com a lista de modelos disponíveis, sendo o $IP o ip da máquina na vossa rede onde instalaram o ollama.
E eis que chegamos ao fim de mais um post semanal. Neste vimos o processo para instalação e configuração do Ollama que será o primeiro passo para criar o nosso poderoso (!) homelab de IA.
Com os passos apresentados neste guia, já deverão ter o Ollama a funcionar otimamente no vosso sistema, tirando partido do hardware disponível e permitindo o acesso a partir de outros dispositivos na vossa rede.
No próximo post, exploraremos como instalar e configurar o Ollama WebUI através do Docker, uma interface web que facilita a interação com os modelos, além de oferecer funcionalidades avançadas como bases de conhecimento, memória adaptativa e RAG (Retrieval-Augmented Generation).
Até lá, experimente diferentes modelos disponíveis através do comando ollama pull [nome-do-modelo]
(podem consultar a lista aqui) e comecem a explorar as possibilidades que o Ollama oferece para o seu homelab de IA.
Um abraço
Nuno