Ollama: Gerenciamento de Modelos
Modelos são os ativos centrais da IA local — escolher o Modelo certo e gerenciar versões bem é tão crítico quanto um chef selecionar ingredientes.
📋 Pré-requisitos: Você precisa dominar o seguinte primeiro
- Aula 3: Interação Básica via CLI
1. O Que Você Vai Aprender
- Guia completo dos comandos ollama list / pull / rm / show
- Sistema de tags de Modelo e seleção de variantes
- Navegação e guia de seleção da Ollama Library
- Armazenamento de arquivos de Modelo e gerenciamento de disco
- Migração offline de arquivos GGUF
2. Uma História Real de Uma Fundadora de SaaS
(1) O Problema: Escolher o Modelo Errado Desperdiça Recursos
Alice fundou a plataforma de e-commerce GlobalShop e inicialmente baixou o Modelo llama3.1:70b para seu sistema de atendimento ao cliente SupportBot. O Modelo de 40GB+ encheu o disco do servidor e a Inferência era lenta. Ela descobriu depois que um Modelo pequeno de 3B parâmetros podia lidar com 80% das perguntas comuns; o 70B só era necessário para tickets complexos.
(2) A Solução: Implantação em Camadas Baseada na Necessidade
Compreendendo as tags de Modelo e níveis de parâmetros, Alice estabeleceu uma estratégia em camadas: 3B para perguntas comuns (rápido), 8B para complexidade moderada e 70B apenas para tickets de alta dificuldade.
# Pull different sizes for different tasks
ollama pull llama3.2:3b # Fast, for simple queries
ollama pull llama3.1:8b # Balanced
ollama pull llama3.1:70b # Powerful, for complex cases
3. Guia Completo dos Comandos de Gerenciamento de Modelos
(1) Tabela de Referência de Comandos
| Comando | Finalidade | Exemplo |
|---|---|---|
| ollama list | Listar Modelos locais | ollama list |
| ollama pull | Baixar um Modelo | ollama pull llama3.2 |
| ollama rm | Deletar um Modelo | ollama rm llama3.2:3b |
| ollama show | Ver detalhes do Modelo | ollama show llama3.2 |
| ollama cp | Copiar uma tag de Modelo | ollama cp llama3.2 my-llama |
| ollama run | Executar um Modelo | ollama run llama3.2 |
(2) Ciclo de Vida do Modelo
stateDiagram-v2
[*] --> Pulled: ollama pull
Pulled --> Running: ollama run
Running --> Idle: Keep alive timeout
Idle --> Running: ollama run (reload)
Idle --> Unloaded: Memory pressure
Unloaded --> Running: ollama run (reload)
Pulled --> Copied: ollama cp
Copied --> Running: ollama run copy
Pulled --> Deleted: ollama rm
Deleted --> [*]
▶ Exemplo 1: Operações Básicas de Gerenciamento
# List all local models
ollama list
# NAME ID SIZE MODIFIED
# llama3.2:latest a80c4feeb02f 2.0 GB 2 hours ago
# mistral:latest 2b3e5c5f1e3d 4.1 GB 1 day ago
# Pull a specific model
ollama pull llama3.2
# pulling manifest... done
# success
# Show model details
ollama show llama3.2
# Model
# architecture: llama
# parameters: 3.2B
# quantization: Q4_K_M
# context length: 131072
# Delete a model to free space
ollama rm llama3.2:3b
# deleted 'llama3.2:3b'
ollama rm é irreversível — os arquivos do Modelo são permanentemente removidos do disco. Se o Modelo foi baixado da Ollama Library, você pode baixá-lo novamente com ollama pull, mas downloads de Modelos grandes podem levar muito tempo (10-30 minutos para 40GB+). Confirme que não precisa mais do Modelo antes de deletar.
Saída:
NAME ID SIZE
llama3.2:latest a80... 2.0 GB
mistral:latest 61... 4.1 GB
4. Sistema de Tags de Modelo
ollama pull llama3.1:70b às cegas — após baixar 40GB, você não conseguirá executá-lo, e desperdiçará espaço em disco. Confirme seu hardware antes de baixar.
(1) Regras de Nomenclatura de Tags
Tags especificam uma variante particular de um Modelo, no formato <name>:<tag>:
| Formato de Tag | Significado | Exemplo |
|---|---|---|
| name:latest | Versão mais recente padrão | llama3.2:latest |
| name / contagem de parâmetros / quantização | Nível de parâmetros | llama3.1:8b / llama3.1:70b |
| name:q4_K_M | Nível de Quantização | llama3.2:q4_K_M |
| name:v1.0 | Número de versão | llama3.2:v1.0 |
| name (sem tag) | Equivalente a latest | llama3.2 |
(2) Comparação de Tags de Quantização
| Tag | Nível de Quantização | Tamanho do Modelo 8B | Avaliação de Qualidade | Caso de Uso |
|---|---|---|---|---|
| q2_K | 2-bit | ~3 GB | Degradação notável | Hardware extremamente limitado |
| q3_K_M | 3-bit | ~3.8 GB | Degradação leve | 4GB VRAM |
| q4_K_M | 4-bit | ~5 GB | Próximo ao original | 8GB VRAM (recomendado) |
| q5_K_M | 5-bit | ~5.7 GB | Quase sem perda | 8GB VRAM |
| q8_0 | 8-bit | ~8 GB | Sem perda | 12GB+ VRAM |
| f16 | 16-bit | ~16 GB | Precisão completa | 24GB+ VRAM |
▶ Exemplo 2: Baixando Diferentes Variantes de Quantização
# Default: auto-select quantization (usually Q4_K_M)
ollama pull llama3.2
# Explicit: pull specific quantization
ollama pull llama3.2:q4_K_M # Balanced (recommended)
ollama pull llama3.2:q8_0 # Higher quality, larger file
# Pull by parameter size
ollama pull llama3.1:8b # 8 billion parameters
ollama pull llama3.1:70b # 70 billion parameters (needs 40GB+ VRAM)
# List all available variants
ollama show llama3.2 --modelfile
Saída:
pulling manifest...
success
5. Ollama Library e Seleção de Modelos
(1) Guia de Seleção de Modelos Populares
| Modelo | Parâmetros | Tamanho | Pontos Fortes | Licença |
|---|---|---|---|---|
| llama3.2 | 3B / 1B | 2 GB | Conversa geral, Implantação leve | Llama Community |
| llama3.1 | 8B / 70B | 5 / 40 GB | Uso geral, multilíngue | Llama Community |
| mistral | 7B | 4.1 GB | Seguimento de instruções, código | Apache 2.0 |
| qwen2.5 | 7B / 72B | 4.7 / 42 GB | Otimizado para chinês, código | Apache 2.0 |
| codellama | 7B / 34B | 3.8 / 19 GB | Geração e complemento de código | Llama Community |
| phi-3-mini | 3.8B | 2.3 GB | Raciocínio, leve | MIT |
| nomic-embed-text | 274M | 274 MB | Embedding de texto (para RAG) | Apache 2.0 |
(2) Decisão de Seleção de Modelo por Cenário
graph TD
A[Do que você precisa?] --> B{Caso de uso principal?}
B -->|Chat / Geral| C{Hardware?}
B -->|Código| D[codellama / qwen2.5-coder]
B -->|Chinês| E[qwen2.5]
B -->|Embedding / RAG| F[nomic-embed-text / mxbai-embed-large]
C -->|8GB RAM| G[llama3.2:3b / phi-3-mini]
C -->|16GB+ RAM ou 8GB VRAM| H[llama3.1:8b / mistral]
C -->|40GB+ VRAM| I[llama3.1:70b]
▶ Exemplo 3: Seleção de Modelo por Cenário
# Alice's SupportBot: multi-language customer service
ollama pull qwen2.5:7b # Best Chinese + multilingual
ollama pull nomic-embed-text # For RAG knowledge base
# Alice's GlobalShop: SQL generation
ollama pull codellama:7b # Code-focused model
# Alice's SaaS: metrics analysis
ollama pull llama3.1:8b # General reasoning
# Check total disk usage
ollama list | awk '{sum+=$3} END {print "Total: " sum/1024/1024/1024 " GB"}'
Saída:
NAME ID SIZE
llama3.2:latest a80... 2.0 GB
mistral:latest 61... 4.1 GB
6. Gerenciamento de Espaço em Disco e Migração Offline
~/.ollama/models/blobs/. Múltiplos Modelos compartilhando os mesmos blobs de camada base significa que os tamanhos totais do ollama list podem exceder o uso real de disco.
(1) Locais de Armazenamento e Estratégia de Limpeza
| Plataforma | Caminho Padrão | Observações |
|---|---|---|
| macOS | ~/.ollama/models | Segue o diretório do usuário |
| Linux | /usr/share/ollama/.ollama/models | Usuário do serviço systemd |
| Windows | C:\Users\<user>\.ollama\models |
Diretório do usuário |
(2) Passos de Migração de Modelo para Ambiente Offline
| Passo | Ação | Comando |
|---|---|---|
| 1 | Baixar Modelo na máquina online | ollama pull llama3.2 |
| 2 | Localizar arquivos do Modelo | ls ~/.ollama/models/blobs/ |
| 3 | Empacotar diretório blobs | tar czf ollama-models.tar.gz blobs/ |
| 4 | Transferir para máquina offline | scp ollama-models.tar.gz user@offline:~ |
| 5 | Extrair no caminho de destino | tar xzf ollama-models.tar.gz -C /usr/share/ollama/.ollama/models/ |
| 6 | Verificar disponibilidade | ollama list |
▶ Exemplo 4: Gerenciamento de Espaço em Disco
# Check disk usage per model
ollama list
# Remove unused models to free space
ollama rm llama3.1:70b # Free ~40GB
ollama rm mistral:latest # Free ~4GB
# Change model storage path (if disk full)
export OLLAMA_MODELS=/data/ollama/models
ollama serve
# Verify new path
ls $OLLAMA_MODELS/blobs/
Saída:
NAME ID SIZE
llama3.2:latest a80... 2.0 GB
mistral:latest 61... 4.1 GB
▶ Exemplo 5: Importar Modelo Personalizado de Arquivo GGUF
# Download a GGUF file from HuggingFace
wget https://huggingface.co/.../model-q4_K_M.gguf
# Create a Modelfile pointing to the GGUF
cat > Modelfile <<EOF
FROM ./model-q4_K_M.gguf
EOF
# Build and register with Ollama
ollama create my-custom-model -f Modelfile
# Run it like any other model
ollama run my-custom-model "Hello"
Saída:
I'm a helpful AI assistant running locally on your machine...
7. Exemplo Abrangente: Script de Gerenciamento de Modelos da Alice
#!/bin/bash
# ============================================
# Comprehensive: Model management dashboard
# Pull, inspect, clean, and report models
# ============================================
MODEL_STORE="$HOME/.ollama/models"
# Function: Show model inventory report
show_inventory() {
echo "=== Ollama Model Inventory ==="
echo ""
ollama list | while read -r name id size modified; do
if [ "$name" != "NAME" ]; then
echo "Model: $name"
echo " ID: $id"
echo " Size: $size"
echo " Modified: $modified"
echo ""
fi
done
echo "Total disk: $(du -sh $MODEL_STORE 2>/dev/null | cut -f1)"
}
# Function: Pull models for SupportBot stack
pull_support_stack() {
echo "=== Pulling SupportBot Model Stack ==="
local models=(
"qwen2.5:7b" # Main chat model
"nomic-embed-text" # Embedding for RAG
"llama3.2:3b" # Fast classifier
)
for model in "${models[@]}"; do
echo "Pulling $model..."
ollama pull "$model"
done
echo "=== Stack Ready ==="
}
# Function: Clean old/unused models
clean_unused() {
echo "=== Models Available for Cleanup ==="
ollama list
echo ""
read -p "Enter model name to remove (or 'cancel'): " model
if [ "$model" != "cancel" ] && [ -n "$model" ]; then
ollama rm "$model"
echo "Removed: $model"
fi
}
# Main menu
echo "1. Show inventory"
echo "2. Pull SupportBot stack"
echo "3. Clean unused models"
read -p "Choose: " choice
case $choice in
1) show_inventory ;;
2) pull_support_stack ;;
3) clean_unused ;;
esac
❓ Perguntas Frequentes
P: O download do ollama pull está muito lento, o que posso fazer? R: Modelos são hospedados no ollama.com, que pode ser lento em algumas regiões. Você pode definir
OLLAMA_MODELSpara um caminho personalizado e baixar arquivos GGUF de um site espelho para importação manual. Veja a Aula 8 Modelfile para detalhes.
P: O espaço em disco não foi liberado após deletar um Modelo? R: O Ollama usa armazenamento endereçável por conteúdo (CAS); arquivos blob podem ser compartilhados por outros Modelos.
ollama rmapenas remove referências. Reinicie o serviço para acionar a limpeza, ou delete manualmente arquivos não referenciados no diretório blobs.
P: Como verifico o comprimento máximo de contexto de um Modelo? R: Execute
ollama show <model>e veja o campocontext length. llama3.2 suporta 131K tokens, mistral suporta 32K tokens.
P: Múltiplos Modelos podem rodar simultaneamente? R: Sim, mas limitado pela VRAM. Defina
OLLAMA_MAX_LOADED_MODELS=2para permitir carregar 2 Modelos ao mesmo tempo. Um Modelo pequeno (3B) + Modelo de Embedding podem compartilhar 8GB de VRAM.
P: A tag latest se atualiza automaticamente? R: Não.
ollama pullsó obtém a versão mais recente quando executado manualmente. Modelos baixados não se atualizam automaticamente.
P: Como obter Modelos em um ambiente offline? R: Baixe Modelos em uma máquina online, empacote o diretório
~/.ollama/models/blobs/, transfira para a máquina offline e extraia no mesmo caminho. Você também pode baixar arquivos GGUF do HuggingFace e importar via Modelfile.
📖 Resumo
ollama list/pull/rm/showsão os quatro comandos centrais de gerenciamento de Modelos- O sistema de tags (
name/contagem de parâmetros/quantização) identifica precisamente variantes de Modelo - Quantização Q4_K_M é a melhor escolha em custo-benefício — 70% de redução de tamanho com qualidade quase sem perda
- Seleção por cenário: use qwen2.5 para chinês, codellama para código, nomic-embed-text para Embedding
- O caminho de armazenamento de Modelos pode ser personalizado via variável de ambiente OLLAMA_MODELS
- Migração offline requer apenas empacotar o diretório blobs ou importar de arquivos GGUF
📝 Exercícios
- Básico (Dificuldade ⭐): Baixe 3 Modelos com diferentes contagens de parâmetros (3B/8B/Embedding), veja detalhes com
ollama listeollama show. - Intermediário (Dificuldade ⭐⭐): Com base na sua configuração de hardware, selecione uma combinação de Modelos apropriada para um cenário SupportBot (chat principal + Embedding) e explique seu raciocínio de seleção.
- Avançado (Dificuldade ⭐⭐⭐): Implemente um fluxo de migração offline — baixe Modelos em uma máquina, empacote e transfira para outra máquina offline, e verifique a funcionalidade.