Phase 00 - Lesson 03

Configuração de GPU e Nuvem

Treinar na CPU é suficiente para aprender. Treinar de verdade exige uma GPU.

Tipo: Build Linguagens: Python Pré-requisitos: Fase 0, Lição 01 Tempo: ~45 minutos

Objetivos de Aprendizado

  • Verificar a disponibilidade da GPU local usando nvidia-smi e a API CUDA do PyTorch
  • Configurar o Google Colab com uma GPU T4 para experimentos gratuitos baseados em nuvem
  • Fazer benchmark de multiplicação de matrizes em CPU vs GPU e medir o ganho de velocidade
  • Estimar o maior modelo que cabe na sua VRAM usando a regra prática de fp16

O Problema

A maioria das lições nas fases 1-3 roda bem na CPU. Mas quando você começa a treinar CNNs, transformers ou LLMs (fases 4+), você precisa de aceleração por GPU. Uma execução de treinamento que leva 8 horas na CPU leva 10 minutos na GPU.

Você tem três opções: GPU local, GPU na nuvem ou Google Colab (gratuito).

O Conceito

Your options:

1. Local NVIDIA GPU
   Cost: $0 (you already have it)
   Setup: Install CUDA + cuDNN
   Best for: Regular use, large datasets

2. Google Colab (free tier)
   Cost: $0
   Setup: None
   Best for: Quick experiments, no GPU at home

3. Cloud GPU (Lambda, RunPod, Vast.ai)
   Cost: $0.20-2.00/hr
   Setup: SSH + install
   Best for: Serious training, large models

Build It

Opção 1: GPU NVIDIA Local

Verifique se você tem uma:

nvidia-smi

Instale o PyTorch com CUDA:

import torch

print(f"CUDA available: {torch.cuda.is_available()}")
print(f"CUDA version: {torch.version.cuda}")
if torch.cuda.is_available():
    print(f"GPU: {torch.cuda.get_device_name(0)}")
    print(f"Memory: {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB")

Opção 2: Google Colab

  1. Acesse colab.research.google.com
  2. Runtime > Change runtime type > T4 GPU
  3. Execute !nvidia-smi para verificar

Faça upload de notebooks deste curso diretamente para o Colab.

Opção 3: GPU na Nuvem

Para Lambda Labs, RunPod ou Vast.ai:

ssh user@your-gpu-instance

pip install torch torchvision torchaudio
python -c "import torch; print(torch.cuda.get_device_name(0))"

Sem GPU? Sem problema.

A maioria das lições funciona na CPU. As que precisam de GPU vão avisar e incluir links do Colab.

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"Using: {device}")

Build It: benchmark GPU vs CPU

import torch
import time

size = 5000

a_cpu = torch.randn(size, size)
b_cpu = torch.randn(size, size)

start = time.time()
c_cpu = a_cpu @ b_cpu
cpu_time = time.time() - start
print(f"CPU: {cpu_time:.3f}s")

if torch.cuda.is_available():
    a_gpu = a_cpu.to("cuda")
    b_gpu = b_cpu.to("cuda")

    torch.cuda.synchronize()
    start = time.time()
    c_gpu = a_gpu @ b_gpu
    torch.cuda.synchronize()
    gpu_time = time.time() - start
    print(f"GPU: {gpu_time:.3f}s")
    print(f"Speedup: {cpu_time / gpu_time:.0f}x")

Exercícios

  1. Execute o benchmark acima e compare os tempos de CPU vs GPU
  2. Se você não tiver uma GPU, execute-o no Google Colab e compare
  3. Verifique quanta memória de GPU você tem e estime o maior modelo que consegue acomodar (regra prática: 2 bytes por parâmetro para fp16)

Termos-Chave

Termo O que as pessoas dizem O que realmente significa
CUDA "Programação de GPU" Plataforma de computação paralela da NVIDIA que permite rodar código na GPU
VRAM "Memória da GPU" RAM de vídeo na GPU, separada da RAM do sistema. Limita o tamanho do modelo.
fp16 "Meia precisão" Ponto flutuante de 16 bits, usa metade da memória do fp32 com perda mínima de precisão
Tensor Core "Hardware de matriz rápido" Núcleos de GPU especializados para multiplicação de matrizes, 4-8x mais rápidos que núcleos comuns
0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).