Phase 00 - Lesson 21
Variaveis e Algebra
This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.
Uma variavel e uma caixa que guarda um numero que voce ainda nao conhece. Algebra e a regra para abrir a caixa: desfaca cada operacao, igual nos dois lados.
Tipo: Aprender Linguagens: Python Pre-requisitos: As Quatro Operacoes e a Ordem (00-13) Tempo: ~40 minutos
Objetivos de Aprendizagem
- Ler uma letra como
xcomo "o numero desconhecido" e uma equacao como uma balanca - Resolver para
xdesfazendo operacoes em ordem inversa, fazendo o mesmo nos dois lados - Usar os pares inversos (+ desfaz -, x desfaz /) das licoes anteriores
- Rearranjar a formula de vazao do roofline para resolver para qualquer uma de suas partes
O Conceito
Uma variavel e apenas um nome para um numero que voce ainda nao encontrou. Geralmente escrevemos como uma letra, tipo x. Nada misterioso: x + 3 = 10 e a frase "algum numero, mais 3, e igual a 10". Seu trabalho e encontrar o numero.
Uma equacao e uma balanca
O sinal = significa "o lado esquerdo pesa exatamente o mesmo que o lado direito". Isso lhe da a unica regra de ouro da algebra:
O que voce faz a um lado, voce deve fazer ao outro. A balanca permanece nivelada.
Resolver = desfazer operacoes
Para deixar x sozinho, descasque o que estiver preso a ele, usando as operacoes inversas que voce ja construiu:
- a adicao e desfeita pela subtracao (e o contrario)
- a multiplicacao e desfeita pela divisao (e o contrario)
Exemplo resolvido, por completo:
x + 3 = 10
x tem um +3 grudado nele. Desfaca subtraindo 3 dos DOIS lados:
x + 3 - 3 = 10 - 3
x = 7
Verifique colocando 7 de volta: 7 + 3 = 10. Correto. Sempre verifique; e de graca.
Um segundo exemplo com multiplicacao:
4 x = 20 (4 vezes x e 20)
x e multiplicado por 4. Desfaca dividindo os DOIS lados por 4:
4x / 4 = 20 / 4
x = 5
Verifique: 4 x 5 = 20. Correto.
Desfaca em ordem inversa
Quando varias coisas estao presas a x, desfaca-as na ordem inversa da ordem das operacoes. Descasque a camada externa primeiro.
2x + 1 = 9
O +1 e a camada externa, entao desfaca primeiro (subtraia 1 dos dois lados), depois desfaca o x2 (divida os dois lados por 2):
2x + 1 - 1 = 9 - 1 -> 2x = 8
2x / 2 = 8 / 2 -> x = 4
Verifique: 2 x 4 + 1 = 9. Correto.
Exemplo resolvido: a formula do roofline
A velocidade de inferencia do NeuroGrid tem um teto definido pela largura de banda da memoria. Um roofline simplificado diz:
tokens_por_segundo = largura_de_banda / (bytes_por_peso x num_pesos)
Isso e otimo se voce quer a velocidade. Mas suponha que voce conhece a velocidade alvo e quer encontrar o bytes_por_peso que pode pagar. Resolva para ele. O denominador esta multiplicado no fundo, entao primeiro multiplique os dois lados pelo denominador, depois divida:
tokens_por_segundo x (bytes_por_peso x num_pesos) = largura_de_banda
bytes_por_peso x num_pesos = largura_de_banda / tokens_por_segundo
bytes_por_peso = largura_de_banda / (tokens_por_segundo x num_pesos)
Mesma equacao, rearranjada para responder uma pergunta diferente. E exatamente por isso que empurrar bytes_por_peso para baixo de 2 (FP16) em direcao a 0.266 (ternario) aumenta tokens_por_segundo: um denominador menor significa um resultado maior. A algebra e o que lhe permite ver qual botao move qual numero, e por quanto.
Pratica de memoria
Produza a resposta. Mais facil primeiro.
- Resolva
x + 5 = 12. - Resolva
3x = 21. - Resolva
2x + 4 = 14.
Respostas: x = 7; x = 7; x = 5 (subtraia 4 para obter 2x = 10, depois divida por 2).
Alerta de equivoco
A armadilha e mudar apenas um lado. Se voce subtrair 3 do lado esquerdo de x + 3 = 10 mas nao do direito, obtem x = 10, o que esta errado (10 + 3 nao e 10). A balanca precisa permanecer nivelada: toda operacao atinge os DOIS lados, sempre. Escreva a operacao embaixo dos dois lados para nunca esquecer um.
Construa
python phases/00-setup-and-tooling/21-variables-and-algebra/code/algebra.py
Por que isso importa para IA
Toda formula no aprendizado de maquina e uma equacao com botoes que voce rearranja: perda como funcao dos pesos, vazao como funcao da largura de banda e largura de bit, taxa de aprendizado como funcao do passo. Treinamento e literalmente um algoritmo para resolver para os pesos que tornam a perda menor. Conseguir isolar qualquer variavel, e ver que um denominador menor da um resultado maior, e o raciocinio diario de um engenheiro de IA.