pytorch-patterns
Ajuda seu agente a usar o PyTorch para criar modelos de aprendizado de máquina. Ele aplica as melhores práticas para treinar modelos de forma eficiente e garantir que os resultados sejam consistentes.
O que ela faz
Este agente ajuda a escrever código para inteligência artificial (IA) usando a biblioteca PyTorch. Ele garante que seu código seja organizado, funcione em diferentes computadores (com ou sem placa de vídeo potente) e que os resultados possam ser repetidos.
Quando usar
- ✓Ao começar a escrever um novo modelo de IA com PyTorch.
- ✓Ao revisar um código de IA para garantir que está seguindo as melhores práticas.
- ✓Quando você precisa que os resultados dos seus testes de IA sejam sempre os mesmos.
Exemplo do que pedir para a IA
“Como posso garantir que meu código PyTorch funcione tanto em CPU quanto em GPU e que os resultados sejam sempre os mesmos?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ele verifica se o código está escrito para ser independente de onde será executado (CPU ou GPU) e se as configurações para garantir resultados repetíveis estão presentes. Também ajuda a organizar a estrutura do código e a gerenciar as dimensões dos dados.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill pytorch-patternsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/pytorch-patterns/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Padrões de Desenvolvimento PyTorch
Padrões idiomáticos do PyTorch e melhores práticas para construir aplicações de aprendizado profundo robustas, eficientes e reproduzíveis.
Quando Ativar
- Escrevendo novos modelos PyTorch ou scripts de treinamento
- Revisando código de aprendizado profundo
- Depurando loops de treinamento ou pipelines de dados
- Otimizando o uso de memória da GPU ou a velocidade de treinamento
- Configurando experimentos reproduzíveis
Princípios Fundamentais
1. Código Independente de Dispositivo
Sempre escreva código que funcione tanto em CPU quanto em GPU sem codificar dispositivos.
# Good: Device-agnostic
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = MyModel().to(device)
data = data.to(device)
# Bad: Hardcoded device
model = MyModel().cuda() # Crashes if no GPU
data = data.cuda()
2. Reprodutibilidade em Primeiro Lugar
Defina todas as sementes aleatórias para resultados reproduzíveis.
# Good: Full reproducibility setup
def set_seed(seed: int = 42) -> None:
torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
np.random.seed(seed)
random.seed(seed)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
# Bad: No seed control
model = MyModel() # Different weights every run
3. Gerenciamento Explícito de Formato (Shape)
Sempre documente e verifique os formatos dos tensores.
# Good: Shape-annotated forward pass
def forward(self, x: torch.Tensor) -> torch.Tensor:
# x: (batch_size, channels, height, width)
x = self.conv1(x) # -> (batch_size, 32, H, W)
x = self.pool(x) # -> (batch_size, 32, H//2, W//2)
x = x.view(x.size(0), -1) # -> (batch_size, 32*H//2*W//2)
return self.fc(x) # -> (batch_size, num_classes)
# Bad: No shape tracking
def forward(self, x):
x = self.conv1(x)
x = self.pool(x)
x = x.view(x.size(0), -1) # What size is this?
return self.fc(x) # Will this even work?
Padrões de Arquitetura de Modelo
Estrutura Limpa de nn.Module
# Good: Well-organized module
class ImageClassifier(nn.Module):
def __init__(self, num_classes: int, dropout: float = 0.5) -> None:
super().__init__()
self.features = nn.Sequential(
nn.Conv2d(3, 64, kernel_size=3, padding=1),
nn.BatchNorm2d(64),
nn.ReLU(inplace=True),
nn.MaxPool2d(2),
)
self.classifier = nn.Sequential(
nn.Dropout(dropout),
nn.Linear(64 * 16 * 16, num_classes),
)
def forward(self, x: torch.Tensor) -> torch.Tensor:
x = self.features(x)
x = x.view(x.size(0), -1)
return self.classifier(x)
# Bad: Everything in forward
class ImageClassifier(nn.Module):
def __init__(self):
super().__init__()
def forward(self, x):
x = F.conv2d(x, weight=self.make_weight()) # Creates weight each call!
return x
Inicialização Adequada de Pesos
# Good: Explicit initialization
def _init_weights(self, module: nn.Module) -> None:
if isinstance(module, nn.Linear):
nn.init.kaiming_normal_(module.weight, mode="fan_out", nonlinearity="relu")
if module.bias is not None:
nn.init.zeros_(module.bias)
elif isinstance(module, nn.Conv2d):
nn.init.kaiming_normal_(module.weight, mode="fan_out", nonlinearity="relu")
elif isinstance(module, nn.BatchNorm2d):
nn.init.ones_(module.weight)
nn.init.zeros_(module.bias)
model = MyModel()
model.apply(model._init_weights)
Padrões de Loop de Treinamento
Loop de Treinamento Padrão
# Bom: Loop de treinamento completo com melhores práticas
def train_one_epoch(
model: nn.Module,
dataloader: DataLoader,
optimizer: torch.optim.Optimizer,
criterion: nn.Module,
device: torch.device,
scaler: torch.amp.GradScaler | None = None,
) -> float:
model.train() # Sempre defina o modo de treinamento
total_loss = 0.0
for batch_idx, (data, target) in enumerate(dataloader):
data, target = data.to(device), target.to(device)
optimizer.zero_grad(set_to_none=True) # Mais eficiente que zero_grad()
# Treinamento com precisão mista
with torch.amp.autocast("cuda", enabled=scaler is not None):
output = model(data)
loss = criterion(output, target)
if scaler is not None:
scaler.scale(loss).backward()
scaler.unscale_(optimizer)
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
scaler.step(optimizer)
scaler.update()
…
Perguntas frequentes
Por que é importante que o código funcione em CPU e GPU?
Para que você possa treinar modelos em computadores diferentes, mesmo aqueles sem uma placa de vídeo potente (GPU), tornando o código mais flexível.
O que significa 'resultados repetíveis'?
Significa que, ao executar o mesmo código com os mesmos dados, você obterá exatamente os mesmos resultados todas as vezes, o que é crucial para testar e comparar modelos.
Como o agente ajuda a organizar o código?
Ele sugere padrões de organização para as diferentes partes do modelo (como camadas e funções) e para o processo de treinamento, tornando o código mais fácil de ler e manter.
Detalhes
Descrição original do autor
PyTorch deep learning patterns and best practices for building robust, efficient, and reproducible training pipelines, model architectures, and data loading. Use when writing or reviewing PyTorch training loops, model architectures, or data loading, or when a run will not reproduce.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #105
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
knowledge-agent
Cria e consulta bases de conhecimento com inteligência artificial. Permite fazer perguntas sobre trabalhos passados ou compilar conhecimento sobre um tema.
thedotmack/claude-mem
Snowflake Automation
Faz seu agente interagir com o Snowflake. Ele pode listar dados, executar comandos SQL e gerenciar fluxos de trabalho de dados.
ComposioHQ/awesome-claude-skills
alphagenome
Consulta efeitos genômicos pré-calculados para variantes genéticas. Ele fornece pontuações e explicações para entender o impacto das variantes no genoma.
K-Dense-AI/scientific-agent-skills