Phase 00 - Lesson 17

Potencias y Exponentes

This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.

Si la multiplicacion es suma repetida, un exponente es multiplicacion repetida. El pequeno numero elevado es un conteo de cuantas veces multiplicas.

Tipo: Aprender Lenguajes: Python Requisitos previos: Operaciones Repetidas y el Giro del Conteo (00-16) Tiempo: ~35 minutos

Objetivos de Aprendizaje

  • Leer 2^10 como "multiplica 2 por si mismo, diez veces" y calcular potencias pequenas a mano
  • Conectar el exponente con el conteo de duplicaciones de la leccion 00-16
  • Usar potencias de dos para razonar sobre bits, bytes y tamanos de modelo
  • Explicar por que 16 bits = 2 bytes, por que un codigo de 2 bits tiene 4 valores, y que significa 2^10 = 1024

El Concepto

La leccion 00-16 te dio la escalera de movimientos. Aqui esta el simbolo para ella.

Un exponente es multiplicacion repetida

La multiplicacion era suma repetida. Toma exactamente la misma idea un piso arriba: un exponente es multiplicacion repetida.

2^3   =   2 x 2 x 2   =   8

Lee 2^3 como "2 elevado a 3" o "2 multiplicado por si mismo 3 veces". El numero grande de abajo (2) es la base, la cosa que se multiplica. El pequeno numero elevado (3) es el exponente, el conteo de cuantas veces. Esa es la escalera de duplicaciones de la leccion pasada: duplicar 3 veces desde 1 llega a 8, y 2^3 = 8. La misma cosa, ahora con un simbolo.

2^1 = 2
2^2 = 2 x 2 = 4
2^3 = 2 x 2 x 2 = 8
2^4 = 2 x 2 x 2 x 2 = 16

Cada escalon mas en el exponente duplica el resultado. El exponente ES el conteo de duplicaciones.

Dos anclas que debes saber

2^10 = 1024     "cerca de mil", el salto de una clase de tamano a la siguiente
2^0  = 1        cualquier cosa elevada a 0 es 1 (multiplicaste cero veces, sigues en el inicio)

2^0 = 1 parece extrano hasta que recuerdas que la escalera empieza en 1. Cero duplicaciones significa que nunca saliste del 1.

Ejemplo resuelto: bits, bytes y codigos

Un bit es una ranura que es 0 o 1, asi que tiene 2^1 = 2 valores posibles. Agrega un segundo bit y puedes hacer 00, 01, 10, 11: eso es 2^2 = 4 valores. Cada bit extra duplica el numero de patrones:

1 bit  -> 2^1 = 2 valores
2 bits -> 2^2 = 4 valores   (un "codigo de 2 bits" almacena una de 4 cosas)
8 bits -> 2^8 = 256 valores (esto es un byte)

Asi que un byte (8 bits) guarda 2^8 = 256 valores distintos. Y un numero de 16 bits (FP16, un formato comun de peso) usa 16 bits, que es 16 / 8 = 2 bytes. De ahi vino el "2 bytes por peso" de la leccion 00-14.

Ahora el ancla del proyecto. Un modelo NeuroGrid tiene aproximadamente 2^10 = 1024 bloques de mil pesos, y la version completa en FP16 pesa cerca de 1.75 GB. Recortar cada peso de 16 bits hacia los log2(3) bits ternarios (las proximas lecciones construyen ese numero) es lo que reduce 1.75 GB a algo que cabe en un solo dispositivo pequeno.

Recuerdo activo

Produce la respuesta. Lo mas facil primero.

  1. 2^2 = ?
  2. 2^5 = ?
  3. Cuantos valores distintos puede almacenar un codigo de 2 bits?

Respuestas: 4; 32 (2x2x2x2x2); 4 (que es 2^2).

Alerta de error comun

La trampa es intercambiar la base y el exponente. 2^3 es 2 x 2 x 2 = 8, NO 3 x 3 = 9 y NO 2 x 3 = 6. La base es el numero que repites; el exponente solo cuenta las repeticiones. Cuando el estudiante confunde esto, el resultado siempre esta incorrecto por un amplio margen. Dilo en voz alta: "base, multiplicada por si misma, exponente veces."

Construyelo

python phases/00-setup-and-tooling/17-powers-and-exponents/code/powers.py

Por que esto importa para la IA

Todo sobre el tamano del modelo son potencias de dos. Anchos de bit (16, 8, 4, 2 y el ternario 1.58), el numero de valores que un codigo puede almacenar, memoria en bytes, tamanos de vocabulario, longitudes de contexto: todos son 2^algo. Cuando un articulo dice "fuimos de 16 bits a 2 bits", esta diciendo que el almacenamiento por peso cayo por un factor de 2^16 / 2^2. Las potencias son el lenguaje nativo del hardware.

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).