1. Visão Geral do Projeto
O modelo Gemma-4-26B-A4B-it-GGUF da série Gemma 4 do Google é um modelo de chat MoE (Mixture of Experts) de alto desempenho, capaz de processar até 256.000 tokens e com suporte nativo a compreensão multimodal (texto e imagem). Ele demonstra excelente desempenho em raciocínio, matemática, programação e chamadas de função, sendo totalmente gratuito para uso comercial sob a licença Apache 2.0.
| Parâmetro | Descrição |
|---|---|
| Nome do Modelo | Gemma-4-26B-A4B-it |
| Caminho do Modelo | /root/ai-models/unsloth/gemma-4-26B-A4B-it-GGUF/ |
| Versão Quantizada | UD-Q4_K_M.gguf (16,8 GB) |
| Arquitetura de Deploy | llama_cpp_python + Gradio WebUI |
| Porta de Acesso | 7860 |
| Ambiente de Execução | Conda (torch28) |
2. Preparação do Ambiente e Deploy Rápido
2.1 Requisitos de Hardware
Recomenda-se uma GPU NVIDIA RTX 4090 com pelo menos 18 GB de memória de vídeo. Abaixo está a configuração de hardware do ambiente de teste:
# Verificar informações da GPU
nvidia-smi --query-gpu=name,memory.total --format=csv
Exemplo de saída:
name, memory.total [MiB]
NVIDIA GeForce RTX 4090 D, 23028
2.2 Instalação do Ambiente Base
Primeiro, crie e ative o ambiente conda:
conda create -n gemma_env python=3.10
conda activate gemma_env
pip install llama-cpp-python gradio
2.3 Downloda e Configuração do Modelo
Baixe o arquivo do modelo quantizado para o diretório especificado:
mkdir -p /root/ai-models/unsloth/gemma-4-26B-A4B-it-GGUF/
wget -O /root/ai-models/unsloth/gemma-4-26B-A4B-it-GGUF/UD-Q4_K_M.gguf [URL_DO_MODELO]
3. Configuração do Supervisor para Gerenciamento de Processos
3.1 Instalação do Supervisor
sudo apt-get update
sudo apt-get install supervisor
3.2 Criar Arquivo de Configuração do Serviço
Adicione o seguinte conteúdo ao arquivo /etc/supervisor/conf.d/gemma-webui.conf:
[program:gemma-webui]
directory=/root/gemma-4-26B-A4B-it-GGUF
command=/root/miniconda3/envs/gemma_env/bin/python webui.py
autostart=true
autorestart=true
startretries=3
stderr_logfile=/root/gemma-4-26B-A4B-it-GGUF/logs/webui.log
stdout_logfile=/root/gemma-4-26B-A4B-it-GGUF/logs/webui.log
user=root
environment=HOME="/root",USER="root"
3.3 Inicialização e Verificação
# Recarregar configuração do Supervisor
sudo supervisorctl reread
sudo supervisorctl update
# Iniciar o serviço
sudo supervisorctl start gemma-webui
# Verificar o status
sudo supervisorctl status gemma-webui
4. Deploy do WebUI e Acesso
4.1 Criar Programa Principal do WebUI
Adicione o seguinte código ao arquivo /root/gemma-4-26B-A4B-it-GGUF/webui.py:
from llama_cpp import Llama
import gradio as gr
model_path = "/root/ai-models/unsloth/gemma-4-26B-A4B-it-GGUF/UD-Q4_K_M.gguf"
# Carregar o modelo com parâmetros otimizados
ai_model = Llama(
model_path=model_path,
n_ctx=4096,
n_threads=10,
n_gpu_layers=35
)
def generate_chat_response(message):
response = ai_model.create_chat_completion(
messages=[{"role": "user", "content": message}],
max_tokens=1024,
temperature=0.65
)
return response['choices'][0]['message']['content']
# Configurar interface Gradio
chat_interface = gr.Interface(
fn=generate_chat_response,
inputs=gr.Textbox(label="Sua pergunta"),
outputs=gr.Textbox(label="Resposta"),
title="Chat com Gemma-4-26B"
)
chat_interface.launch(server_name="0.0.0.0", server_port=7860)
4.2 Acessar a Interface Web
Após o início do serviço, você pode acessar a interface através de:
- Acesso local: http://localhost:7860
- Acesso remoto: http://[IP_DO_SERVIDOR]:7860
O carregamento inicial do modelo leva cerca de 1 minuto; as requisições subsequentes serão mais rápidas.
5. Otimização da Estratégia de Reinício Automático
5.1 Reinício com Monitoramento de Memória
Modifique a configuração do Supervisor para incluir o monitoramento de memória:
[program:gemma-webui]
...
autorestart=true
startretries=3
stopasgroup=true
killasgroup=true
5.2 Script de Verificação de Saúde (Health Check)
Crie o arquivo /root/gemma-4-26B-A4B-it-GGUF/health_check.py:
import urllib.request
import sys
service_url = "http://localhost:7860"
timeout_seconds = 15
try:
with urllib.request.urlopen(service_url, timeout=timeout_seconds) as response:
if response.status != 200:
raise Exception("Status code inválido")
except Exception as e:
print(f"Falha no health check: {e}", file=sys.stderr)
import subprocess
subprocess.run(["supervisorctl", "restart", "gemma-webui"], check=True)
Configure uma tarefa cron (verificação a cada 5 minutos):
(crontab -l ; echo "*/5 * * * * /root/miniconda3/envs/gemma_env/bin/python /root/gemma-4-26B-A4B-it-GGUF/health_check.py") | crontab -
6. Solução de Problemas Comuns
6.1 Serviço Falha ao Iniciar
# Verificar logs
tail -100 /root/gemma-4-26B-A4B-it-GGUF/logs/webui.log
# Verificar conflito de porta
ss -tlnp | grep :7860
6.2 Falha ao Carregar o Modelo
# Verificar memória da GPU livre
nvidia-smi --query-gpu=memory.free --format=csv
# Tentar uma versão quantizada menor, se necessário
sed -i 's/UD-Q4_K_M/UD-IQ4_NL/g' webui.py
6.3 Sugestões de Otimização de Desempenho
Para uma GPU RTX 4090, os seguintes parâmetros podem ser ajustados:
ai_model = Llama(
model_path=model_path,
n_ctx=4096,
n_threads=14, # Ajustar de acordo com o número de núcleos da CPU
n_gpu_layers=40, # Máximo de camadas na GPU
main_gpu=0,
tensor_split=[1.0], # Alocação para GPU única
seed=1234,
use_mmap=True,
use_mlock=False
)