← Todos os cursos

fundamentos / Profissional · Avançado

Engenharia de Deep Learning

Treinamento de redes profundas como sistema: autograd, estabilidade numérica, otimização, mixed precision, profiling, experimentação e debugging reproduzível.

5 módulos + projeto28 h de dedicação estimadaLeitura aberta

Antes de começar

Python, vetores, derivadas simples e fundamentos de aprendizado supervisionado.

Ao concluir, você saberá

Diagnosticar um treinamento, conferir gradientes e medir memória e velocidade sem perder qualidade.

Uma entrega concreta

Treinamento pequeno e reproduzível.

Baixar roteiro de exercícios ↓

Módulo 1 / 5

Autograd, grafos dinâmicos e backpropagation auditável

Redes neurais são programas diferenciáveis. O forward constrói ativações; o backward aplica a regra da cadeia para obter derivadas da loss em relação aos parâmetros. Em PyTorch, o grafo dinâmico facilita condicionais e debugging, mas exige cuidado com detach, no_grad e operações in-place.

Gradientes acumulam por padrão. Portanto, zerar gradients, executar backward e então optimizer.step é parte explícita do ciclo. Inspecionar normas de gradiente ajuda a detectar exploding/vanishing gradients.

Exemplo resolvido · cenário didático

Conferir a regra da cadeia

Se y=w×x e L=(y−t)², então dL/dw=2(wx−t)x. Para x=2, w=1 e t=3, o gradiente vale −4. O sinal indica que aumentar w um pouco deve reduzir a perda localmente.

Teste sua compreensão

Com passo 0,1, qual é o novo w?

Conferir o raciocínio

1,4. A previsão passa a 2,8 e a perda cai de 1 para 0,04.

Leitura de referência: PyTorch — diferenciação automática

Próximo módulo →

Módulo 2 / 5

Otimização, schedules e estabilidade de treinamento

AdamW combina momentos adaptativos com weight decay desacoplado e é um baseline forte. SGD com momentum ainda pode generalizar muito bem. Scheduler, warmup e clipping são mecanismos diferentes: warmup estabiliza o início, scheduler reduz ou adapta a taxa, clipping limita picos de gradiente.

Inicialização precisa preservar escala das ativações e gradients. Xavier e He derivam de hipóteses sobre variância; em Transformers, normalização e parametrização mudam a dinâmica e frequentemente pedem recipes próprios.

Exemplo resolvido · cenário didático

Acumular não é duplicar a escala

Para simular um lote de 32 usando quatro microlotes de 8, some gradientes das perdas médias divididas por 4 e atualize uma vez. Sem dividir, o gradiente acumulado fica quatro vezes maior que a média do lote.

Teste sua compreensão

Batch normalization torna os dois procedimentos necessariamente idênticos?

Conferir o raciocínio

Não. As estatísticas de cada microlote e outras operações dependentes do lote podem mudar o resultado.

Leitura de referência: PyTorch — diferenciação automática

Próximo módulo →

Módulo 3 / 5

Representações, convolução, sequência e attention

CNNs usam compartilhamento local de pesos, tornando-as eficientes para padrões espaciais. RNNs/LSTMs modelam sequência por estado recorrente, mas têm caminho serial. Attention remove grande parte dessa serialidade e permite relações diretas entre posições.

Escolha arquitetura pelo inductive bias, não pela moda. Para imagem pequena com poucos dados, augmentations e um backbone pré-treinado podem superar um modelo enorme treinado do zero.

Exemplo resolvido · cenário didático

Campo receptivo

Duas convoluções 3×3, com stride 1 e sem dilatação, têm campo receptivo 5×5. A primeira combina vizinhos a uma célula; a segunda combina vizinhos dessas combinações. Não é equivalente, em parâmetros ou não linearidade, a uma única convolução.

Teste sua compreensão

Qual o campo receptivo de três dessas camadas?

Conferir o raciocínio

7×7, sob as mesmas hipóteses de stride e dilatação.

Leitura de referência: PyTorch — diferenciação automática

Próximo módulo →

Módulo 4 / 5

Mixed precision, memória, kernels e throughput

FP16/BF16 reduzem memória e aumentam throughput em hardware moderno. BF16 preserva faixa de expoente maior e tende a ser mais estável; FP16 pode precisar de loss scaling. Mixed precision mantém partes sensíveis, como certos acumuladores, em precisão maior.

Batch size interage com memória, estatística do gradiente e utilização de GPU. Gradient accumulation simula batch maior sem manter todas as amostras simultaneamente em memória, mas aumenta steps de compute por update.

Exemplo resolvido · cenário didático

Contabilidade de memória

Dez milhões de pesos em FP32 ocupam 40 milhões de bytes, aproximadamente 38,1 MiB. Gradientes, estados do otimizador e ativações exigem memória adicional. Reduzir a precisão dos pesos não reduz todos esses termos automaticamente.

Teste sua compreensão

Só os pesos em 16 bits ocupam quanto?

Conferir o raciocínio

20 milhões de bytes, cerca de 19,1 MiB; isso não é o consumo total do treinamento.

Leitura de referência: PyTorch — diferenciação automática

Próximo módulo →

Módulo 5 / 5

Debugging sistemático, ablations e reproducibilidade

Quando o treino falha, reduza o problema. Tente overfit em um batch minúsculo; verifique labels; compare loss antes/depois de uma step; monitore grad norms; desative augmentations; confirme shapes e masks. Essa sequência encontra bugs muito mais rápido do que ajustar hiperparâmetros aleatoriamente.

Ablations devem mudar uma variável por vez e usar seeds suficientes quando o ruído importa. Registre tempo, tokens ou exemplos vistos, não só epochs, para comparar compute de forma justa.

Exemplo resolvido · cenário didático

Teste de um único lote

Se a rede não reduz a perda em 16 exemplos fixos, investigue rótulos, formas dos tensores, gradientes e atualização dos pesos antes de culpar generalização. Desative aumentos aleatórios para isolar o caminho de treinamento.

Teste sua compreensão

A perda de treino cai, mas a de validação sobe. O teste de um lote basta?

Conferir o raciocínio

Não. Ele verifica capacidade básica de ajuste; agora investigue sobreajuste, distribuição e separação dos dados.

Leitura de referência: PyTorch — diferenciação automática

Ir para o projeto →

Projeto aplicado

Treinamento pequeno e reproduzível

  1. Faça uma rede pequena memorizar um lote de dados sintéticos antes do treino completo.
  2. Compare duas taxas de aprendizado mantendo dados e orçamento fixos.
  3. Registre curva de perda, qualidade reservada, tempo por passo e um erro diagnosticado.

Critérios para revisar sua entrega

  • A execução pode ser reproduzida a partir das instruções e dos arquivos entregues.
  • O baseline, as condições e as métricas permitem conferir a comparação.
  • O relatório distingue resultado medido, simulação, hipótese e limitação.

Esta rubrica orienta a autoavaliação do projeto; a conclusão e a credencial seguem a avaliação do curso.

Continue com evidências.

Os exemplos numéricos são didáticos. Compare o raciocínio com a referência e registre o que você observou no seu próprio experimento.

PyTorch — diferenciação automática ↗

Progresso e avaliação

A leitura e o roteiro de exercícios são abertos. Para registrar progresso e realizar a avaliação final do curso, entre na área de estudo.

Abrir minha área de estudo ↗