PyTorch
PyTorch é uma framework de código aberto para Python, destinada à criação e ao treino de redes neuronais com tensores de GPU e diferenciação automática. Os seus conceitos fundamentais e o percurso até à implementação.
PyTorch é uma estrutura de código aberto para criar, treinar e implantar redes neurais em Python. Ela fornece tensores acelerados por GPU, diferenciação automática e uma biblioteca de camadas, otimizadores e funções de perda, além de executar o código de forma imediata, linha por linha, permitindo criar e depurar modelos como programas Python comuns. Criado na Facebook AI Research, hoje Meta AI, o PyTorch é regido desde 2022 pela PyTorch Foundation, independente de fornecedores e vinculada à Linux Foundation, e é amplamente usado em pesquisas de aprendizado profundo e modelos de produção em visão computacional e linguagem.
Conceitos fundamentais#
- Tensores: arrays multidimensionais, como arrays NumPy, que podem residir em uma CPU ou acelerador. PyTorch oferece suporte a GPUs NVIDIA por meio de CUDA, GPUs AMD por meio de ROCm e Apple Silicon por meio de Metal (MPS), e a transferência de dados entre eles exige uma chamada
.to(device). - Autograd: conforme as operações com tensores são executadas, PyTorch as registra em um grafo computacional. Chamar
.backward()percorre esse grafo no sentido inverso e calcula o gradiente da saída em relação a cada tensor que precisa dele, o que corresponde à etapa de retropropagação do treinamento. - Execução imediata: o grafo é reconstruído em cada passagem direta, permitindo que os modelos usem loops, condicionais e instruções print do Python, e fazendo com que os erros apontem para a linha exata em que ocorreram.
- Módulos e otimizadores:
torch.nnfornece camadas como convoluções, atenção e normalização, etorch.optimfornece otimizadores como SGD e Adam, que atualizam os pesos com base nos gradientes calculados. - torch.compile: adicionado no PyTorch 2.0, captura o programa de execução imediata como um grafo e gera kernels fundidos, muitas vezes acelerando o treinamento e a inferência sem alterar o código do modelo.
O exemplo abaixo executa um pequeno cálculo em uma GPU, se houver uma disponível, e permite que o autograd calcule seu gradiente:
import torch
# Use a GPU when PyTorch can see one, otherwise fall back to the CPU
device = "cuda" if torch.cuda.is_available() else "cpu"
# Tensors record the operations applied to them when requires_grad=True
w = torch.tensor([2.0, -1.0], device=device, requires_grad=True)
x = torch.tensor([3.0, 4.0], device=device)
# Ordinary Python runs eagerly: each line executes immediately
loss = (w * x).sum() ** 2
# Autograd walks the recorded graph backward to get d(loss)/dw
loss.backward()
print(f"device={device}, loss={loss.item()}, grad={w.grad.tolist()}")Em uma máquina sem GPU, ele imprime device=cpu, loss=4.0, grad=[12.0, 16.0]. A perda é (2·3 − 1·4)² = 4, e o autograd retorna sua derivada 2·(w·x)·x = [12, 16] sem nenhum cálculo diferencial escrito à mão: é o mesmo mecanismo que treina redes com bilhões de pesos.
PyTorch vs. outras ferramentas#
- TensorFlow: estrutura do Google que criava grafos estáticos antes de executá-los, até que o TensorFlow 2 tornou a execução imediata o padrão. Continua comum em sistemas de produção baseados no Keras e nas ferramentas de implantação do Google.
- JAX: biblioteca numérica do Google que transforma funções Python puras com operações componíveis
grad,jitevmapcompiladas por meio do XLA, popular em pesquisas de grande escala em TPUs. - OpenCV: biblioteca de visão computacional para ler, transformar e analisar imagens com algoritmos clássicos. Os pipelines costumam usar OpenCV para carregar e pré-processar quadros antes de um modelo PyTorch processá-los.
- Hugging Face: hub e conjunto de bibliotecas criados principalmente sobre PyTorch, cuja biblioteca Transformers fornece modelos pré-treinados de linguagem e visão como módulos PyTorch.
Da pesquisa à implantação#
Um modelo PyTorch treinado é salvo como checkpoint, geralmente em um arquivo .pt ou .pth que contém seus pesos. Ele pode ser executado como está em um serviço Python, mas dispositivos de borda e servidores otimizados geralmente precisam que ele seja convertido para um ambiente de execução desenvolvido para o hardware:
Ultralytics YOLO26 é escrito em PyTorch: yolo26n.pt é um checkpoint PyTorch, o treinamento usa o autograd e os otimizadores do PyTorch, e model.export() converte o modelo para estes formatos de implantação, incluindo ONNX, TensorRT, OpenVINO, Core ML e LiteRT.










