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.

💡 Dica: A instrução FROM do Modelfile suporta um mecanismo de herança — você pode criar Modelos personalizados baseados em Modelos existentes. O novo Modelo compartilha os arquivos de peso do Modelo base e apenas acrescenta configurações de System Prompt, parâmetros e template, sem consumir espaço adicional em disco. Isso torna a criação de múltiplos Modelos com papéis específicos (por exemplo, especialista em reembolso, especialista em logística) praticamente sem custo.

📋 Pré-requisitos: Você precisa dominar o seguinte primeiro

1. O Que Você Vai Aprender


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.

BASH
# 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

100%
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

BASH
# 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'
⚠️ Nota: 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:

TEXT
NAME                    ID              SIZE    
llama3.2:latest        a80...          2.0 GB  
mistral:latest         61...           4.1 GB

4. Sistema de Tags de Modelo

⚠️ Aviso: Baixar um Modelo de 70B parâmetros requer 40GB+ de VRAM (multi-GPU) e 40GB+ de espaço em disco. Se seu hardware não suporta, não faça 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
💡 Dica: Quando nenhuma tag de Quantização é especificada, o Ollama seleciona automaticamente a Quantização ideal (geralmente Q4_K_M). Especifique explicitamente para controle preciso.

▶ Exemplo 2: Baixando Diferentes Variantes de Quantização

BASH
# 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:

TEXT
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

100%
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

BASH
# 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:

TEXT
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

ℹ️ Info: O Ollama usa armazenamento endereçável por conteúdo (CAS). Arquivos de Modelo são armazenados como blobs em ~/.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

BASH
# 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:

TEXT
NAME                    ID              SIZE    
llama3.2:latest        a80...          2.0 GB  
mistral:latest         61...           4.1 GB

▶ Exemplo 5: Importar Modelo Personalizado de Arquivo GGUF

BASH
# 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:

TEXT
I'm a helpful AI assistant running locally on your machine...

7. Exemplo Abrangente: Script de Gerenciamento de Modelos da Alice

BASH
#!/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_MODELS para 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 rm apenas 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 campo context 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=2 para 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 pull só 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


📝 Exercícios

  1. Básico (Dificuldade ⭐): Baixe 3 Modelos com diferentes contagens de parâmetros (3B/8B/Embedding), veja detalhes com ollama list e ollama show.
  2. 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.
  3. 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.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%