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-smie 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
- Acesse colab.research.google.com
- Runtime > Change runtime type > T4 GPU
- Execute
!nvidia-smipara 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
- Execute o benchmark acima e compare os tempos de CPU vs GPU
- Se você não tiver uma GPU, execute-o no Google Colab e compare
- 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 |