PyTorch

Open Source Meta Deep Learning Dynamic Graphs

Visão Geral

PyTorch é um framework de deep learning open-source desenvolvido pela Meta (Facebook) que oferece execução dinâmica de grafos computacionais. É amplamente utilizado na comunidade de pesquisa em IA devido à sua flexibilidade e facilidade de uso.

Com uma API Pythônica intuitiva e suporte nativo para GPU, PyTorch permite prototipagem rápida e experimentação eficiente, sendo ideal tanto para pesquisa quanto para produção.

Principais Características

  • Dynamic Graphs: Grafos computacionais dinâmicos
  • Autograd: Diferenciação automática
  • TorchScript: Compilação para produção
  • Distributed Training: Treinamento distribuído
  • TorchServe: Serving de modelos
  • PyTorch Mobile: Deploy em mobile
  • ONNX Support: Interoperabilidade
  • Rich Ecosystem: Bibliotecas especializadas

Casos de Uso

Research

Pesquisa em IA, prototipagem de novos modelos

Computer Vision

CNNs, detecção de objetos, segmentação

NLP

Transformers, BERT, GPT, processamento de texto

Reinforcement Learning

Aprendizado por reforço, jogos, robótica

Exemplo Prático

Exemplo de rede neural simples com PyTorch:

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset

# Definir modelo
class SimpleNet(nn.Module):
    def __init__(self, input_size, hidden_size, num_classes):
        super(SimpleNet, self).__init__()
        self.fc1 = nn.Linear(input_size, hidden_size)
        self.relu = nn.ReLU()
        self.fc2 = nn.Linear(hidden_size, num_classes)
        
    def forward(self, x):
        x = self.fc1(x)
        x = self.relu(x)
        x = self.fc2(x)
        return x

# Criar modelo
model = SimpleNet(input_size=784, hidden_size=128, num_classes=10)

# Definir loss e optimizer
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

# Loop de treinamento
for epoch in range(num_epochs):
    for batch_idx, (data, targets) in enumerate(train_loader):
        # Forward pass
        outputs = model(data)
        loss = criterion(outputs, targets)
        
        # Backward pass
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        
    print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')

Tutoriais e Recursos

Informações Rápidas
  • Desenvolvedor: Meta (Facebook)
  • Primeira Versão: 2016
  • Linguagem: Python, C++
  • Licença: BSD
  • Versão Atual: 2.1+
Tecnologias Relacionadas