🧪 Novos tutoriais em andamento — do braço robótico ao sensor
Ir para o conteúdo

Introdução à Implantação de IA de Borda

Para desenvolvedores levando um modelo de "treinado" para "rodando em dispositivos de borda". Usando o NVIDIA Jetson como plataforma de referência.

1. Por Que Implantar na Borda?

ComparaçãoInferência em NuvemInferência na Borda
LatênciaIda e volta de rede de 50-500ms<10ms no dispositivo
PrivacidadeDados saem do dispositivoDados permanecem locais
CustoTaxas contínuas de GPUHardware de pagamento único
OfflineIndisponível offlineTotalmente offline

Para robótica (controle em tempo real), inspeção industrial (sensível ao pipeline) e cenários sensíveis à privacidade (médico/segurança), a implantação na borda é uma necessidade.

2. Caminhos de Implantação

PyTorch Model
   │  torch.onnx.export

ONNX ──► TensorRT Engine ──► Inference App
   │              │
   └──► TorchScript ──► Inference App (simpler path)
CaminhoAceleração vs PyTorch nativoIdeal Para
TorchScript~1,5-2xRápido, mudanças mínimas
ONNX Runtime~2-4xMultiplataforma
TensorRT5-10xDesempenho em primeiro lugar, Jetson/borda

3. Início Rápido: PyTorch → TensorRT

3.1 Exportar ONNX

python
import torch

# Safe load: weights_only=True prevents deserialization attacks
model = torch.load('model.pt', map_location='cuda', weights_only=True)
model.eval()

dummy = torch.randn(1, 3, 224, 224).cuda()
torch.onnx.export(
    model, dummy, 'model.onnx',
    input_names=['input'], output_names=['output'],
    opset_version=17,
)

3.2 ONNX → Engine TensorRT

bash
trtexec --onnx=model.onnx \
        --saveEngine=model.engine \
        --fp16 \
        --workspace=2048

3.3 Inferência em Python

python
import tensorrt as trt
import pycuda.driver as cuda
import pycuda.autoinit

with open('model.engine', 'rb') as f:
    engine = trt.Runtime(trt.Logger()).deserialize_cuda_engine(f.read())
context = engine.create_execution_context()

4. Checklist de Desempenho

  • [ ] Use --fp16 (meia precisão) em vez de fp32
  • [ ] Reduza a resolução de entrada ao mínimo da tarefa
  • [ ] Faça benchmark com trtexec para o FPS real
  • [ ] batch=1 costuma ser o melhor para robótica
  • [ ] Verifique o modo de energia (sudo nvpmodel -m 0)

5. FAQ

P: Erros do TensorRT com Unsupported layer?

R: O modelo tem operadores que o TensorRT não suporta. Tente: TensorRT mais recente, onnx-simplifier, opset menor.

P: O fp16 prejudica a precisão?

R: A maioria dos modelos de CV é praticamente sem perdas; valide o mAP para detecção/segmentação.

P: Sem memória (workspace)?

R: Reduza o workspace ou a resolução de entrada; o modelo de 16GB é mais confortável.

P: Ainda lento com TensorRT?

R: Verifique se a GPU é realmente usada (nvidia-smi); evite cópias repetidas GPU↔CPU.


Suporte