2 · Números y estadística para producciónLección 1 de 7
Números grandes, unidades y estimaciones
Big numbers, units and estimates
Cómo escribir números enormes y diminutos sin perderte, por qué un disco de 1 TB dice 931 GB, por qué 100 megas de internet no bajan 100 MB por segundo y cómo se convierten «10 millones de fotos al día» en GPUs y dólares al mes.
Secciones14
- 01Notación científica, órdenes de magnitud y tiempo
- 02Bits, bytes, KB y KiB
- 03Ancho de banda: Gb/s contra GB/s extra
- 04De eventos por día a requests por segundo
- 05Cuántas máquinas y cuánto cuestan
- 06Por ciento contra puntos porcentuales extra
- 07C01 en una servilleta: la estimación completa
- 08Estimar lo que no sabes extra
- 09Errores comunes
- 10En la vida real extra
- 11Ejercicios
- 12Lo que sigue
- 13Palabras que vas a oír
- 14Chequeo
Si me dicen «10 millones de fotos al día», ¿cómo sé cuántas máquinas necesito, cuántos bytes se van a mover y cuánto va a costar?
Notación científica, órdenes de magnitud y tiempo
EsencialScientific notation, orders of magnitude and time
En las lecciones anteriores ya aparecieron números así: la ResNet-50 de C01 tiene 24,532,532 parámetros, la foto entra como 150,528 números, el modelo hace unos 4,100,000,000 de multiplicaciones por foto y C01 recibe 10,000,000 de fotos al día. También hay números diminutos: copiar la foto a la GPU tarda 0.00004 segundos. Contar ceros es lento, y un cero de menos es un error de 10 veces.
Una cifra por una potencia de diez
La notación científica (scientific notation) escribe cada número como una cifra entre 1 y 10 multiplicada por una potencia de diez:
- 10³ = 1,000 (un 1 con tres ceros), 10⁶ = 1,000,000 y 10⁹ = 1,000,000,000.
- 86,400 = 8.64 × 10⁴: el punto decimal se movió 4 lugares a la izquierda.
- 0.00004 = 4 × 10⁻⁵: el exponente negativo quiere decir que el punto se movió a la derecha. 10⁻⁵ es 1 ÷ 10⁵.
La cifra de adelante se llama mantisa, y el número chiquito arriba del 10, exponente. El exponente dice el tamaño; la mantisa, el detalle.
| Número | En notación científica | Qué es |
|---|---|---|
| 10,000,000 | 1 × 10⁷ | fotos al día en C01 |
| 24,532,532 | ≈ 2.45 × 10⁷ | parámetros de la ResNet-50 de C01 |
| 4,100,000,000 | 4.1 × 10⁹ | multiplicaciones con su suma (MACs) por foto |
| 86,400 | 8.64 × 10⁴ | segundos en un día |
| 0.2 | 2 × 10⁻¹ | la promesa de C01, en segundos |
| 0.00004 | 4 × 10⁻⁵ | copiar la foto a la GPU, en segundos |
La ventaja aparece al hacer cuentas. Para multiplicar, se multiplican las mantisas y se suman los exponentes; para dividir, se dividen las mantisas y se restan.
Python y las hojas de cálculo escriben la notación científica con una e: 8.64e+04 quiere decir 8.64 × 10⁴ y 4e-05, 4 × 10⁻⁵. Para escribir números largos en el código, Python acepta guiones bajos como separadores de miles: 10_000_000.
dia = 24 * 60 * 60 # segundos en un día
print(dia, f"{dia:.2e}") # la e quiere decir «× 10 a la»
print(10_000_000 / dia) # 10 millones de fotos al día, por segundo
print(f"{24_532_532:.2e}", f"{0.00004:.0e}")
print(1e7 * 300 / 1e9, "GB de logs al día")86400 8.64e+04
115.74074074074075
2.45e+07 4e-05
3.0 GB de logs al díaÓrdenes de magnitud
El orden de magnitud (order of magnitude) de un número es la potencia de diez más cercana: 86,400 es «del orden de 10⁵». Dos cosas que difieren en un orden de magnitud están a unas 10 veces una de otra; en tres órdenes, a unas mil veces.
Para redondear se mira la mantisa: si es menor que √10 ≈ 3.16, el orden es su potencia; si es mayor, la siguiente. Así, 2.45 × 10⁷ es del orden de 10⁷ y 8.64 × 10⁴, del orden de 10⁵. El corte va en 3.16 y no en 5 porque, en una escala que avanza multiplicando por 10, 3.16 queda justo a la mitad: 1 × 3.16 ≈ 3.16 y 3.16 × 3.16 ≈ 10.
Hay otra costumbre: llamar orden de magnitud solo al exponente, sin redondear. Con ella, 86,400 es del orden de 10⁴. Las dos se usan; en esta lección, la potencia más cercana.
¿Por qué importa? Porque en un diseño las decisiones cambian por órdenes de magnitud. La Ronda lo dice así: si te equivocas por 2 veces y la decisión no cambia, no importa; si te equivocas por 10, pasas de «un par de máquinas» a «un cluster». Una estimación de servilleta no busca decimales: busca atinarle al orden de magnitud.
Los prefijos: kilo, mega, giga
Para no escribir la potencia cada vez, el Sistema Internacional de unidades (SI) le pone nombre a cada salto de mil:
| Prefijo | Símbolo | Vale | Ejemplo |
|---|---|---|---|
| kilo | k | 10³ | 1 km = 1,000 m |
| mega | M | 10⁶ | una foto de 12 MP tiene 12 millones de píxeles |
| giga | G | 10⁹ | 4.1 GMACs por foto |
| tera | T | 10¹² | una T4 hace ≈ 65 TFLOPS en float16 |
| peta | P | 10¹⁵ | un mes del audio sin comprimir de C13: ≈ 1.7 PB |
| mili | m | 10⁻³ | la promesa de 200 ms |
| micro | µ | 10⁻⁶ | copiar la foto: 40 µs |
| nano | n | 10⁻⁹ | leer la RAM: 100 ns |
(El SI escribe el kilo con k minúscula; en computación casi siempre vas a ver KB, y así lo escribe la Ronda.) En ML vas a ver además letras sueltas: «25.6 M parámetros» (la ResNet-50 original, la de 1,000 categorías) son 25.6 millones, «5k fotos» son 5 mil y un LLM «de 8B» tiene 8 billion: 8 mil millones.
El tiempo: de nanosegundos a días
El tiempo se mide en segundos, y casi todo lo interesante de una computadora pasa en pedacitos de segundo. Los tres que vas a usar siempre:
- Milisegundo (milisegundo (ms)): una milésima de segundo, 10⁻³ s. Es la unidad de la red y de los modelos: la promesa de C01 es que el p99 quede bajo 200 ms, es decir, que 99 de cada 100 requests tarden 200 ms o menos.
- Microsegundo (µs): una millonésima, 10⁻⁶ s. La µ es la letra griega «mu»; cuando no se puede escribir, se pone
us. Es la escala de copiar datos y de leer un disco rápido. - Nanosegundo (ns): una milmillonésima, 10⁻⁹ s. Es la escala de lo que pasa dentro del chip.
Cada uno es mil veces el siguiente: 1 s = 1,000 ms = 1,000,000 µs = 10⁹ ns. Para convertir, cuenta cuántos saltos de mil das: 200 ms = 0.2 s; 40 µs = 0.04 ms; 100 ns = 0.1 µs.
La regla muestra lo que los números sueltos esconden: cosas que «son rápidas» pueden estar a miles de veces una de otra. Leer la RAM, la memoria de trabajo de la computadora (≈ 100 ns), contra la promesa de C01 (200 ms) es 0.2 ÷ 10⁻⁷ = 2 × 10⁶: dos millones de veces. Por eso, cuando un servicio tarda, rara vez es por una suma de más en el código: suele ser la espera por la red, el disco o la GPU, que viven varias marcas más abajo.
Los números del reloj
Para los números grandes de tiempo, la Ronda usa siempre los mismos:
¿Por qué dos meses? Las nubes dan el precio de sus máquinas por hora, y un mes promedio del año tiene 8,760 ÷ 12 = 730 horas: costo al mes = precio por hora × 730. Las promesas de disponibilidad (qué parte del tiempo funciona bien el servicio), en cambio, suelen contarse en ventanas de 30 días, 43,200 minutos, para que todas las ventanas valgan igual; así las cuenta la Ronda. Entre 730 h y 720 h hay 1.4 %: no cambia ninguna decisión, pero en una misma cuenta se usa uno solo.
Bits, bytes, KB y KiB
EsencialBits, bytes, KB and KiB
Un bit y un byte
Una computadora guarda todo como interruptores prendidos o apagados (en la práctica son cargas eléctricas o puntos magnetizados, pero cada uno vale solo 0 o 1). Cada uno es un bit (binary digit): un 0 o un 1. Con un bit hay 2 posibilidades; con dos, 4 (00, 01, 10 y 11); con n bits, 2ⁿ. Ocho bits forman un byte, y en ellos caben 2⁸ = 256 valores: del 0 al 255.
¿Te suena «del 0 al 255»? Es justo lo que guarda un canal de un píxel en uint8: un byte. Un número en float32 ocupa 4 bytes, 32 bits. Cómo se escriben los números con ceros y unos (el sistema binario) lo verás en «Cómo guarda números una computadora»; aquí basta con contar.
b minúscula es bit y B mayúscula es byte. 1 Mb (megabit) es 8 veces más chico que 1 MB (megabyte). Y aquí vive la trampa más común de todas: las velocidades de red se anuncian en bits por segundo, y los archivos se miden en bytes.
- Un plan de internet de «100 megas» es de 100 Mb/s: 100 ÷ 8 = 12.5 MB por segundo. Un archivo de 1 GB tarda ≈ 80 s, no 10.
- 1 Gb/s (un gigabit por segundo) son 125 MB/s, y 1 GB/s son 8 Gb/s.
Lo que un canal puede mover por segundo es su ancho de banda; tiene su propia sección más abajo.
Del byte al petabyte
Con los bytes pasa lo mismo que con el tiempo: lo que maneja un sistema de ML ocupa 15 órdenes de magnitud.
Del log de una predicción (≈ 300 B) a un año de logs de C01 (1.1 TB) hay casi diez marcas: ≈ 3.65 × 10⁹ veces, que son justo las predicciones de un año. Un atajo de la Ronda para estas cuentas: 1 millón de cosas de 1 KB son 1 GB, porque 10⁶ × 10³ = 10⁹. Con él, 10 M logs de 300 B son 10 × 0.3 = 3 GB sin hacer la cuenta larga.
KB contra KiB: los dos kilos
Con la memoria pasó algo raro. Las computadoras cuentan en potencias de 2, y 2¹⁰ = 1,024 se parece mucho a mil. Así que, durante décadas, «un kilobyte» quiso decir 1,000 bytes o 1,024 según quién hablara. Con los kilos la diferencia era de 2.4 %; con los gigas y los teras ya no es poca cosa.
En diciembre de 1998, la Comisión Electrotécnica Internacional (IEC), que fija estándares eléctricos y electrónicos, separó los nombres. Los prefijos binarios llevan una i: kibi (KiB), mebi (MiB), gibi (GiB), tebi (TiB) y pebi (PiB).
| Decimal (SI) | Bytes | Binario (IEC) | Bytes | El binario es más grande por |
|---|---|---|---|---|
| 1 KB | 1,000 | 1 KiB | 2¹⁰ = 1,024 | 2.4 % |
| 1 MB | 10⁶ | 1 MiB | 2²⁰ = 1,048,576 | 4.9 % |
| 1 GB | 10⁹ | 1 GiB | 2³⁰ = 1,073,741,824 | 7.4 % |
| 1 TB | 10¹² | 1 TiB | 2⁴⁰ = 1,099,511,627,776 | 10.0 % |
| 1 PB | 10¹⁵ | 1 PiB | 2⁵⁰ ≈ 1.126 × 10¹⁵ | 12.6 % |
¿Quién usa cuál?
- Decimal: los fabricantes de discos, las velocidades de red y macOS (desde 2009).
- Binario: la RAM (un módulo «de 16 GB» trae 16 GiB), AWS al describir la memoria de sus máquinas (una g4dn.xlarge, la máquina con una T4 que usa C01, trae 16 GiB), Windows (que escribe «GB» pero divide entre 2³⁰),
df -hen Linux,nvidia-smiy PyTorch.
Escribe un tamaño, elige el prefijo, si es decimal o binario y si son bytes o bits. Abajo sale lo mismo en las otras unidades. Empieza con un disco de 1 TB.
Cambia a binario con el mismo 1 tera: son 1,099,511,627,776 bytes, 10 % más. Cambia a bits: 1 terabit son 125 GB. La b chiquita divide entre 8.
Prueba 64 con prefijo giga: la memoria USB «de 64 GB» que Windows muestra como ≈ 59.6. Después escribe 15,360 con prefijo mega y binario: los MiB que nvidia-smi reporta para una T4 (de sus 16 GiB, una parte se reserva para corregir errores). Son ≈ 16.1 GB.
El mismo trabajo, en Python. Fíjate en que 2**30 y 10**9 son exactos: así no hay redondeos escondidos.
# Las dos maneras de contar bytes, y los bits
KB, MB, GB, TB = 10**3, 10**6, 10**9, 10**12 # decimales (SI)
KiB, MiB, GiB, TiB = 2**10, 2**20, 2**30, 2**40 # binarios (IEC)
disco = 1 * TB
print(f"1 TB = {disco:,} bytes = {disco / GiB:.1f} GiB = {disco / TiB:.3f} TiB")
tensor = 3 * 224 * 224 * 4 # la foto de C01 en float32
print(f"tensor: {tensor:,} B = {tensor / KB:.0f} KB = {tensor / KiB:.0f} KiB")
print(f" {tensor * 8:,} bits")
for nombre, dec, bina in [("kilo", KB, KiB), ("mega", MB, MiB),
("giga", GB, GiB), ("tera", TB, TiB)]:
print(f"{nombre}: el binario es {100 * (bina / dec - 1):.1f} % más grande")1 TB = 1,000,000,000,000 bytes = 931.3 GiB = 0.909 TiB
tensor: 602,112 B = 602 KB = 588 KiB
4,816,896 bits
kilo: el binario es 2.4 % más grande
mega: el binario es 4.9 % más grande
giga: el binario es 7.4 % más grande
tera: el binario es 10.0 % más grandeAncho de banda: Gb/s contra GB/s
ExtraBandwidth: Gb/s vs GB/s
El ancho de banda (bandwidth) es cuántos datos puede mover un canal por segundo: una red, un disco, el cable entre el CPU y la GPU, la memoria. Tiene dos costumbres de unidades:
- La red se mide en bits por segundo: Mb/s y Gb/s, con prefijos decimales. 1 Gb/s = 10⁹ bits por segundo.
- La memoria, los discos y el bus de la GPU, en bytes por segundo: GB/s.
Entre las dos hay un 8. Lo primero en cualquier cuenta es pasar todo a la misma unidad.
Cuánto tarda en llegar algo grande
El tiempo de mandar algo es su tamaño entre el ancho de banda, con las unidades parejas.
Cada canal vive en otro orden de magnitud. En la tabla hay dos máquinas de AWS: la c6i.xlarge, sin GPU, es la del gateway de C01, y la g4dn.xlarge trae la T4. «Sostenida» es lo que aguantan todo el tiempo; el «hasta» del catálogo es varias veces más, pero solo dura un rato (de 5 a 60 minutos, según la Ronda). El tensor de 602 KB de C01, por cada canal:
| Canal | Ancho de banda | Mover 602 KB |
|---|---|---|
| La subida de un celular (un ejemplo) | 10 Mb/s | ≈ 0.48 s |
| La red de una c6i.xlarge, sostenida | ≈ 1.56 Gb/s | ≈ 3.1 ms |
| La red de una g4dn.xlarge, sostenida | ≈ 5 Gb/s | ≈ 1 ms |
| PCIe de la T4 | ≈ 16 GB/s | ≈ 40 µs |
| La VRAM de una T4 | 320 GB/s | ≈ 1.9 µs |
| La VRAM de una H100 | 3.35 TB/s | ≈ 0.18 µs |
Del celular a la memoria de una H100 hay más de seis órdenes de magnitud. Los números de las máquinas son los que usa la Ronda (de las tablas de AWS y de NVIDIA); la memoria de la GPU tiene su propia historia en «Matrices, FLOPs y qué tan rápido calcula una GPU» (ancho de banda de memoria).
Ancho de banda no es latencia
La latencia tiene además un piso físico. En 1 ns la luz avanza unos 30 cm, y dentro de una fibra óptica, unos 20: 100 km de fibra son ≈ 0.5 ms de ida y otro tanto de vuelta. La Ronda usa la regla de ≥ 1 ms de ida y vuelta por cada 100 km. Más ancho de banda no la baja; solo acercarse.
La red de C01
En la entrevista, la cuenta de la red no va en los primeros cinco minutos: la Ronda la deja para cuando el entrevistador pide profundizar. Pero es la que distingue a quien la hace.
Los bytes también cuestan dinero. En un mes viajan 602 KB × 10 M × 30 ≈ 180 TB de tensores. En AWS, pasar datos de una zona a otra cuesta ≈ US$0.01 por GB en cada sentido; si la mitad de ese tráfico cruzara de zona, serían ≈ 90 TB × US$0.02 ≈ US$1,800 al mes, más que las dos GPUs. Por eso la Ronda manda cada request a la GPU de su misma zona.
- Celular de Ana · JPEG ≈ 200 KB
La app achica la foto a 1024 píxeles de lado largo antes de subirla: ≈ 200 KB, que son 1.6 megabits (× 8). Con una subida de 10 Mb/s, por ejemplo, tarda ≈ 0.16 s. Ese tramo no entra en la promesa de 200 ms: es la red de Ana y nadie del servidor la controla. - Gateway · CPU: decodifica, ≈ 6 ms
Abre el JPEG, lo achica y lo normaliza: ≈ 6 ms de CPU en promedio (estimación de la Ronda). Sale un tensor de 150,528 números en float32: 602,112 bytes ≈ 602 KB, tres veces lo que pesaba el JPEG. - Triton · RAM del servidor de GPU
El servidor del modelo recibe el tensor por la red interna. Una foto sola tarda pocos milisegundos en ese tramo, pero 500 por segundo son 301 MB/s ≈ 2.4 Gb/s: el ancho de banda es lo que se aprieta. - T4 · VRAM: 320 GB/s
Lee sus pesos de la VRAM a 320 GB/s y calcula en ≈ 3–6 ms. Sale un número por categoría: 500 × 4 bytes ≈ 2 KB de regreso al gateway, que elige las 5 mejores. A Ana le llegan unos cientos de bytes. - Log · ≈ 300 B por foto
Un registro por predicción: qué foto, qué top-5, cuánto tardó, qué versión del modelo. ≈ 300 bytes × 10 M fotos = 3 GB al día.
El video es el caso extremo. Las cámaras de C02 mandan 1080p a 15 fps. Un cuadro sin comprimir pesa 1,920 × 1,080 × 3 ≈ 6.2 MB; 15 por segundo son ≈ 93 MB/s, ≈ 0.75 Gb/s por cámara. Comprimido con H.264, el formato más común, viaja a ≈ 4 Mb/s: unas 190 veces menos. Por eso el video viaja comprimido y se descomprime junto al modelo.
De eventos por día a requests por segundo
EsencialFrom events per day to requests per second
Los negocios hablan por día («recibimos 10 millones de fotos al día»); las máquinas trabajan por segundo. Esta sección es el puente.
Throughput y QPS
El throughput es cuánto trabajo termina un sistema por unidad de tiempo: requests por segundo, fotos por segundo, tokens por segundo. No es lo mismo que la latencia, que es cuánto tarda una request: un servicio puede atender 500 por segundo aunque cada una tarde 50 ms, porque atiende muchas a la vez.
Para un servicio que responde requests, el throughput se dice en req/s o QPS (queries per second, consultas por segundo; el nombre viene de los buscadores). La cuenta base es una división:
req/s de promedio = eventos al día ÷ 86,400
Un número para memorizar: 1 millón al día ≈ 11.6 por segundo (10⁶ ÷ 86,400 = 11.57). Con él, 10 M al día son ≈ 116 por segundo y 100 M, ≈ 1,157. «Un millón al día» suena a muchísimo; «doce por segundo», a poco. Las dos frases dicen lo mismo.
El promedio esconde el pico
Nadie sube fotos a las 4 de la mañana como a las 8 de la noche. Si C01 recibiera sus 10 millones parejos, llegarían 116 por segundo a toda hora. No es así:
El factor de pico (peak factor) es el pico dividido entre el promedio: cuántas veces el promedio llega en el momento de más tráfico. Hay una forma sencilla de estimarlo: si la hora pico lleva una fracción f del tráfico del día, el factor es 24 × f. Con 1/8 (12.5 %), 24 × 1/8 = 3. Con 10 %, 2.4; con 20 %, 4.8. En apps que usan personas en una sola zona horaria suele estar entre 2 y 5; en un proceso automático que trabaja parejo día y noche, cerca de 1.
Al pico se le agrega un margen de diseño (de 1.3 a 1.5 veces) para lo que no sabes: picos de unos minutos, crecimiento del negocio, el error de tu propia estimación. El resultado se redondea hacia arriba a un número fácil de decir. Ese es el pico de diseño, para el que se compran las máquinas.
Escribe cuántos eventos llegan al día y cómo es el pico. Empieza en C01: 10 millones de fotos, una hora pico con 1/8 del tráfico del día (3×) y un margen de 1.4.
Con factor 1 el tráfico es parejo, como un proceso que trabaja día y noche: ahí el promedio sí sirve para dimensionar. Sube el factor a 5: el promedio no se mueve, pero las máquinas que necesitas sí.
Pon factor 1 y margen 1.3: el tráfico parejo de un proceso automático. Después prueba 50 millones al día con factor 3: las búsquedas de C07, ≈ 1,750 por segundo en el pico.
Cuántas máquinas y cuánto cuestan
EsencialHow many machines, and what they cost
Con el pico de diseño ya se pueden contar máquinas. Hacen falta dos números más.
Capacidad medida y utilización objetivo
La capacidad de una máquina es cuántas requests por segundo aguanta cumpliendo la promesa de latencia. No se adivina: se mide con una prueba de carga (load test), mandándole cada vez más tráfico hasta que la latencia se pasa del límite. Para una T4 que sirve la ResNet-50 de C01 ya optimizada, la Ronda usa ≈ 1,200 fotos por segundo. En una entrevista es una estimación; en el trabajo, es lo primero que se mide.
Además, no se planea al 100 %. Cerca del límite, las requests empiezan a esperar en cola y la latencia se dispara; y si llega un pico, hace falta aire mientras se encienden más máquinas. Por eso se fija una utilización objetivo de ≈ 50 a 70 %. C01 planea al 50 %: cada T4 cuenta por 1,200 × 0.5 = 600 fotos por segundo.
Siempre hacia arriba, y una de repuesto
máquinas = ⌈pico de diseño ÷ (capacidad medida × utilización)⌉ + repuesto
Los corchetes ⌈ ⌉ quieren decir redondear hacia arriba: ⌈0.83⌉ = 1 y ⌈2.1⌉ = 3. Media máquina no existe, y la fracción que falta es tráfico sin atender. El repuesto es N+1: si necesitas N máquinas, pones una más, en otra zona de disponibilidad (otro centro de datos de la misma región, a algunos kilómetros del primero), para que la caída de una no se note. Es la forma más simple de redundancia.
Ojo con las tres formas de redondear de Python:
import math
pico, por_maquina = 500, 1200 * 0.5 # req/s de diseño y capacidad planeada
x = pico / por_maquina
print(x, math.floor(x), round(x), math.ceil(x))
pico = 1250 # con más tráfico
x = pico / por_maquina
print(x, math.floor(x), round(x), math.ceil(x))
print(round(2.5), round(3.5)) # ¡ojo!: round va al par más cercano0.8333333333333334 0 1 1
2.0833333333333335 2 2 3
2 4floor (hacia abajo) daría cero máquinas para C01. round (al más cercano) acierta con 0.83, pero con 2.08 pide 2 cuando hacen falta 3, y con 2.5 da 2, porque Python redondea los empates al número par. Para capacidad, solo math.ceil.
El costo al mes
Las nubes dan el precio de las máquinas por hora (aunque muchas cobran por segundo), así que el costo de tenerlas encendidas todo el mes es máquinas × precio por hora × 730.
Del pico de diseño a máquinas y dinero. Empieza en C01: 500 req/s, una T4 que sostiene 1,200 fotos por segundo medidas, planeada al 50 %, una de repuesto y US$0.526 la hora.
Sube el pico a 5,000: ya son 9 por tráfico y 10 en total, y el repuesto pesa menos en la factura. Baja la utilización a 30 %: pagas más máquinas a cambio de colas más cortas.
Quita el repuesto (0) y mira la carga «si se cae una»: no queda ninguna. Luego sube el pico a 1,250: son 2.08 máquinas, que se vuelven 3.
Los precios de la nube cambian y dependen de la región: dalos como orden de magnitud y di que los verificas.
Por ciento contra puntos porcentuales
ExtraPercent and percentage points
Los porcentajes están en todas partes: la utilización de una GPU, la accuracy de un modelo, la disponibilidad de un servicio. Y se prestan a tres confusiones.
Por ciento: siempre «de qué»
Un por ciento es una parte de cien, y siempre es parte de algo. «Cada GPU de C01 trabaja al 5 %» es cierto contra su máximo medido (58 de 1,200 fotos por segundo); contra la capacidad planeada (600) es ≈ 10 %. Un porcentaje sin su base no dice nada.
Puntos porcentuales
Cuando un porcentaje cambia, hay dos maneras de decir cuánto:
- La resta: de 85 % a 87 % son 2 puntos porcentuales (percentage points, pp).
- El cambio relativo: 2 ÷ 85 ≈ 2.4 % más.
Y si miras los errores, que son los que sufre quien recibe una sugerencia mala, bajaron de 15 % a 13 %: 2 ÷ 15 ≈ 13 % menos. El mismo cambio, tres números distintos. Ninguno está mal; lo malo es no decir cuál.
El gate de C01 está escrito en puntos: el modelo nuevo no puede quedar más de 0.3 puntos abajo del actual en el golden set. Si el actual saca 96 % de top-5, el nuevo pasa con 95.7 % y no pasa con 95.6 %. Si alguien lo leyera como «0.3 % de 96», el límite sería 95.712: otra regla.
Los nueves
La disponibilidad es el porcentaje del tiempo (o de las requests) en que el servicio funciona bien. Se dice en «los nueves»: 99.9 % son «tres nueves». La cuenta de cuánto puede fallar es:
caída permitida = (1 − disponibilidad) × duración de la ventana
Si tomas el mes de 730 h, como M01, salen 7.3 h, 43.8 min y 4.4 min: es la diferencia de 1.4 % entre los dos meses, no un error.
Contada en requests, la promesa de C01 deja fallar 0.1 % de ≈ 300 M al mes: 300,000 fotos sin sugerencia, que reciben el selector de categorías. Ese presupuesto para fallar se llama error budget.
Veces, «por ciento más» y el interés compuesto
- «3 veces el promedio» es multiplicar por 3. «300 % más» es sumarle el 300 %: multiplicar por 4. En español, «tres veces más» se usa para las dos cosas; para no dudar, di «el triple» o «× 3».
- Crecer 10 % al mes no es crecer 120 % en un año. Cada mes crece sobre lo que ya creció: 1.1¹² ≈ 3.14 veces, no 2.2. Un atajo, la regla del 72: algo que crece g % por periodo se duplica cada ≈ 72 ÷ g periodos. Con 10 % al mes, cada ≈ 7.2 meses.
C01 en una servilleta: la estimación completa
EsencialC01 on a napkin: the full estimate
Ya tienes todas las piezas. En una entrevista de diseño, el paso 3 de la Ronda son estas cuentas: cinco minutos, números redondos y una decisión por número. Esta es la de C01.
- 1
Escribe lo que te dan y lo que supones
≈ 2.5 M publicaciones × ≈ 3 fotos, más lo que piden otros equipos: ≈ 10 M fotos al día, una por request. Dilo en voz alta: es un supuesto.
- 2
Pásalo a por segundo
10,000,000 ÷ 86,400 ≈ 116 req/s de promedio.
- 3
Del promedio al pico y al diseño
× 3 por la hora pico ≈ 350 req/s; × ≈ 1.4 y hacia arriba: 500 req/s.
- 4
Cuenta las máquinas
⌈500 ÷ (1,200 × 0.5)⌉ + 1 = 2 T4.
- 5
Revisa que el modelo quepa
24.5 M parámetros × 2 bytes en float16 ≈ 49 MB, en una GPU de 16 GB: sobra.
- 6
Ponle precio
2 × US$0.526 la hora × 730 h ≈ US$768 al mes de GPUs.
- 7
Cuenta lo que se queda guardado
300 B de log × 10 M = 3 GB al día, ≈ 1.1 TB al año. Las fotos serían 10 M × 200 KB = 2 TB al día: por eso se guarda solo una referencia a cada una.
- 2.5 M · publicaciones al día
El dato del negocio: ≈ 2.5 millones de publicaciones nuevas al día. Es lo único que te dan; todo lo demás sale de cuentas y de supuestos que dices en voz alta. - ≈ 10 M fotos · al día
Cada publicación trae ≈ 3 fotos (7.5 M), y otros equipos de la empresa también le preguntan al modelo: la Ronda redondea a 10 M imágenes al día, una por request. - ≈ 116 req/s · el promedio
10,000,000 ÷ 86,400 s ≈ 115.7, que se dice 116. Con el atajo de 10⁵ s saldrían 100: sirve para la cabeza, pero se queda 13.6 % abajo. El promedio es el que paga la factura. - ≈ 350 req/s · la hora pico
La gente duerme: el tráfico se amontona en la tarde. Si la hora pico lleva 1/8 del día, el factor de pico es 24 × 1/8 = 3: 116 × 3 ≈ 350 req/s. Es un supuesto; se confirma con los registros del sistema de publicaciones. - 500 req/s · pico de diseño
Al pico se le suma un margen (× ≈ 1.4) para picos raros y crecimiento: 350 × 1.4 = 490, y se redondea hacia arriba a un número fácil de defender: 500 req/s. - 2 T4 · ⌈500 ÷ 600⌉ + 1
Una T4 con el modelo optimizado sostiene ≈ 1,200 fotos por segundo, medidas con una prueba de carga; se planea al 50 % para que las colas no crezcan: 600. Entonces 500 ÷ 600 = 0.83 GPUs, que se redondean hacia arriba a 1, y una más de repuesto por si se cae (N+1): 2 T4, una en cada zona. Las pide la disponibilidad, no el tráfico. - ≈ 3 GB al día · de logs · 1.1 TB al año
Cada predicción deja un registro de ≈ 300 bytes (qué foto, qué top-5, cuánto tardó, qué versión): 10 M × 300 B = 3 GB al día, × 365 ≈ 1.1 TB al año. Es barato: se guarda todo. - ≈ US$768 · al mes, de GPUs
2 máquinas × US$0.526 la hora × 730 horas del mes ≈ US$768, en precio de lista aproximado. La infraestructura completa (gateway, balanceador, logs) suma ≈ US$1.75k: cabe en el presupuesto de US$3k. - ≈ 2.4 Gb/s · de tensores en el pico
La cuenta de un ancho de banda: 500 fotos por segundo × 602 KB (el tensor en float32) ≈ 301 MB/s, × 8 ≈ 2.4 Gb/s entre el gateway y las GPUs. Es la cuenta que se aprieta primero.
La misma servilleta en Python, con los números de la Ronda:
import math
# La servilleta de C01, con los números de la Ronda
fotos_dia = 10_000_000 # ≈ 2.5 M publicaciones × 3 fotos + otros equipos
promedio = fotos_dia / 86_400 # req/s
pico = promedio * 3 # la hora pico lleva 1/8 del día
diseno = 500 # pico × ≈ 1.4, redondeado hacia arriba
por_gpu = 1_200 * 0.5 # medido × utilización objetivo
gpus = math.ceil(diseno / por_gpu) + 1 # N+1
costo_mes = gpus * 0.526 * 730 # US$ por hora × horas del mes
pesos = 24_532_532 * 2 # bytes en float16
logs_dia = fotos_dia * 300 # bytes: ≈ 300 B por predicción
print(f"promedio {promedio:.0f} req/s · pico {pico:.0f} · diseño {diseno}")
print(f"GPUs: ⌈{diseno} ÷ {por_gpu:.0f}⌉ + 1 = {gpus}")
print(f"pesos: {pesos / 1e6:.0f} MB en una T4 de 16 GB")
print(f"costo de las GPUs: US${costo_mes:,.0f} al mes")
print(f"logs: {logs_dia / 1e9:.0f} GB al día, {logs_dia * 365 / 1e12:.1f} TB al año")
print(f"carga promedio de cada GPU: {promedio / gpus / 1_200:.0%} de su máximo")promedio 116 req/s · pico 347 · diseño 500
GPUs: ⌈500 ÷ 600⌉ + 1 = 2
pesos: 49 MB en una T4 de 16 GB
costo de las GPUs: US$768 al mes
logs: 3 GB al día, 1.1 TB al año
carga promedio de cada GPU: 5% de su máximoTres costumbres de una buena servilleta
- Números redondos. «115.74 req/s» no da puntos: da la impresión de que no sabes qué importa. 116 basta, y 500 para diseñar.
- Un chequeo de cordura. Compara cada resultado con algo que conoces. ¿Una T4 para 500 fotos por segundo? Cada foto son ≈ 4.1 GMACs, ≈ 8.2 mil millones de operaciones; 500 por segundo son ≈ 4.1 × 10¹² por segundo, muy por debajo de los ≈ 65 TFLOPS de una T4. Cabe. Si la cuenta hubiera dicho 500 GPUs, algo estaría mal.
- El número y la decisión. No «500 req/s», sino «≈ 500 req/s de pico: una T4 cubre el tráfico y pongo dos por disponibilidad; no necesito un cluster grande ni colas». El número solo es aritmética; con la decisión, es diseño.
Lo que depende del hardware (las 1,200 fotos por segundo) o del negocio (el factor de 3) se marca como «a medir», y se mide antes de producción con una prueba de carga. Y si te preguntan «¿y con 10 veces más tráfico?», rehaces la cuenta en voz alta: 5,000 req/s son ⌈5,000 ÷ 600⌉ = 9 GPUs, 10 con repuesto, y ahora sí vale la pena optimizar el modelo o probar otra GPU.
Estimar lo que no sabes
ExtraEstimating what you don't know
En C01 te dieron el dato del negocio: 2.5 M publicaciones al día. Muchas veces no te lo dan, o llega en otra forma. Cuatro herramientas para esos casos.
Que las unidades hagan la cuenta
Las unidades se multiplican y se cancelan como si fueran números. Si escribes cada número con la suya, la cuenta correcta casi se arma sola, y la equivocada se nota:
- fotos/día ÷ s/día = fotos/s.
- US$/h × h/mes = US$/mes.
- Si te sale «fotos × segundos», multiplicaste donde ibas a dividir.
Un ejemplo con C07: entran ≈ 2.5 M publicaciones nuevas al día, salen más o menos las mismas, y hay ≈ 100 M activas. ¿Cuánto vive una publicación? Las unidades lo dicen: publicaciones ÷ (publicaciones/día) = días. 100 M ÷ 2.5 M por día = 40 días en promedio. Es la cuenta que la Ronda llama ley de Little (M03), con otros nombres.
Partir lo que no sabes en factores
Enrico Fermi, el físico italiano, era famoso por estimar cosas sin datos. En la primera prueba nuclear, en 1945, soltó pedacitos de papel cuando pasó la onda expansiva y, por cuánto se movieron, estimó la energía: unas 10 mil toneladas de TNT. Lo que se midió después fue de unas 20 a 25 mil: entre 2 y 2.5 veces su cifra. Del orden correcto, con papelitos.
Su método sirve para cualquier número que no sabes: pártelo en factores que sí puedas estimar, estima cada uno y multiplica. Si de un factor solo sabes que está entre a y b, usa √(a × b): entre 1 y 10, di 3; entre 100 y 10,000, di 1,000. Es el punto medio en una escala de potencias de diez.
Tres anclas para revisar cualquier cuenta
Cuando una cuenta da un número que no conoces, compáralo con algo que sí:
- Personas: por debajo de ≈ 0.1 s una respuesta se siente instantánea (Jakob Nielsen, 1993). Prometer 2 ms a una persona no le cambia nada; prometerle 2 s, sí.
- Una GPU: una T4 hace a lo mucho ≈ 65 × 10¹² operaciones por segundo en float16. Si tu cuenta pide más, ningún ajuste del servidor lo arregla: hacen falta más GPUs o un modelo más ligero.
- La luz: ida y vuelta por 100 km de fibra, ≥ 1 ms. Si la otra máquina está en otro continente, la red ya se comió buena parte de los 200 ms.
Otras formas de llegar al número
- Desde los usuarios: eventos al día = usuarios activos al día × acciones de cada uno. 5 millones de usuarios que suben 4 fotos son 20 M al día: ≈ 231 req/s de promedio.
- Requests contra fotos: en C01 son lo mismo porque va una foto por request. Si la app mandara juntas las 3 fotos de una publicación, las mismas 116 fotos/s llegarían en ≈ 39 req/s: el gateway trabaja por requests y la GPU por fotos. Cuando te den un número, pregunta de cuál de los dos habla.
Errores comunes
EsencialCommon mistakes
Las trampas que más se repiten, y cómo evitarlas.
1. Mezclar bits y bytes
«El internet es de 1 giga, así que un archivo de 10 GB baja en 10 segundos.» Son 80: el internet se mide en gigabits y el archivo en gigabytes. En un diseño pasa lo mismo al revés: 301 MB/s de tensores parecen poco hasta que los escribes como 2.4 Gb/s y los comparas con los ≈ 1.56 Gb/s que sostiene la máquina.
Cómo evitarlo: escribe siempre la b o la B, y antes de dividir pasa todo a la misma unidad. De bytes a bits, × 8.
2. Confundir KB con KiB
El disco «al que le faltan 69 GB» es el caso inofensivo. El caro es sumar los MiB de nvidia-smi con los MB de tus cuentas, o comprar memoria «justa» con una regla y llenarla con la otra: en giga hay 7.4 % de diferencia; en tera, 10 %.
Cómo evitarlo: anota qué regla usa cada fuente y no mezcles dos en una cuenta; como dice la Ronda en M04, usa el total que reporta tu GPU. Si el margen es chico, haz la cuenta en bytes.
3. Diseñar para el promedio
Con el promedio todo cabe. En C01, el gateway a 116 req/s ocupa ≈ 0.7 vCPU (116 × ≈ 6 ms; un vCPU es la unidad de CPU que renta la nube); si le das uno «porque sobra», a las 8 de la noche llegan 350 req/s, que piden ≈ 2.1, y la latencia explota.
Cómo evitarlo: promedio, pico y pico de diseño, siempre los tres. Y pregunta por los eventos (un Buen Fin, una campaña), además del pico de cada día.
4. Redondear las máquinas hacia abajo
⌊0.83⌋ = 0 máquinas, y round(2.08) = 2 cuando hacen falta 3. Peor: round(2.5) en Python da 2.
Cómo evitarlo: máquinas, discos y cualquier capacidad, siempre math.ceil. El repuesto se suma después, aparte.
5. Confundir por ciento con puntos porcentuales
«La accuracy subió 2 %», cuando pasó de 85 % a 87 %: subió 2 puntos, que son 2.4 %. O «la tasa de error subió apenas 0.1 %», cuando pasó de 0.1 % a 0.2 %: se duplicó.
Cómo evitarlo: di los dos, «+2 puntos, de 85 % a 87 %». Con tasas chicas, di también las veces: «el doble de errores».
6. Mezclar escalas
Dividir entre 10⁵ en el número final (13.6 % menos tráfico), multiplicar un precio por hora × 720 en una cuenta y × 730 en otra, comparar algo por día con algo por segundo, o leer el «8B» de un LLM como 8 billones, cuando son 8 mil millones.
Cómo evitarlo: escribe la unidad junto a cada número y, al final, revisa que se cancelen: fotos/día ÷ s/día = fotos/s. Para las palabras, potencias de diez: 8 × 10⁹.
En la vida real
ExtraIn real life
C01: un minuto de Hot Sale
Marketing manda una notificación del Hot Sale a 5 millones de personas, y una parte abre la app y publica algo en el primer minuto. La Ronda (M03) hace la cuenta con un supuesto ilustrativo:
El promedio diario de ese día casi no cambia: es un minuto. Por eso los eventos no se ven en las cuentas por día, y por eso se pregunta por ellos.
La factura completa de C01 también sale de esta lección. Las GPUs son solo una parte: con el gateway, el balanceador y los logs, la Ronda llega a ≈ US$1.75k al mes de infraestructura, dentro del presupuesto de US$3k. Repartido entre las ≈ 304 M fotos de un mes (10 M × 30.4 días), sale a ≈ US$0.006 por cada mil predicciones.
C02: video que no duerme
C02 vigila zonas restringidas con 1,000 cámaras en 25 centros de distribución. Su tráfico se cuenta en cuadros por segundo, no en requests, y no tiene hora pico: las cámaras graban igual a las 4 de la mañana. Si se analizara todo, serían 1,000 × 15 fps = 15,000 cuadros por segundo las 24 horas, con factor de pico 1: aquí el promedio sí dimensiona. Y a ≈ 4 Mb/s por cámara son ≈ 4 Gb/s de video continuo, 4 × 10⁹ × 86,400 ÷ 8 ≈ 43 TB al día, que no se mandan a la nube sin pensarlo: la Ronda analiza cada sitio en el sitio.
C07: cuánto pesa un índice de búsqueda
C07 busca entre ≈ 100 M publicaciones activas usando embeddings de 512 números, guardados en un índice vectorial que tiene que vivir en RAM.
Las búsquedas también se cuentan como en esta lección: 50 M al día son ≈ 579 por segundo, y con factor 3, ≈ 1,750 en el pico.
C13: el ancho de banda de la voz
C13 pone subtítulos en vivo en videollamadas. En el pico hay ≈ 60,000 personas hablando a la vez, y el audio llega al modelo como PCM: el sonido sin comprimir, 16,000 muestras por segundo de 16 bits cada una.
C10: tokens por segundo
C10 sirve un LLM propio que recibe ≈ 1.5 M requests al día, cada una con ≈ 2,000 tokens de entrada y ≈ 250 de salida. Aquí el throughput se mide en tokens por segundo, y hay dos:
En la Ronda, ese tiempo por token se llama TPOT, y M04 muestra por qué el techo de tokens por segundo lo pone el ancho de banda de la memoria de la GPU, no sus TFLOPS.
Fuera de ML: tu internet y tu memoria USB
- Tu plan de «100 megas» son 100 Mb/s = 12.5 MB/s. Una película de 4 GB baja en ≈ 5.3 minutos en el mejor caso, no en 40 segundos.
- Una memoria USB «de 64 GB» aparece en Windows como ≈ 59.6 GB: son 64 × 10⁹ bytes divididos entre 2³⁰.
- Cuando tu banco anuncia que una tasa «bajó un punto», de 12 % a 11 %, son puntos porcentuales: el cambio relativo es de 8.3 %.
Ejercicios
EsencialExercises
Resuélvelos con lápiz antes de abrir la solución; las calculadoras de la lección sirven para comprobar.
- 1Fácil
Escribe en notación científica y di el orden de magnitud de cada número: (a) 2,500,000 publicaciones al día; (b) 602,112 bytes; (c) 0.0000001 segundos.
Ver la solución paso a paso
- (a) 2.5 × 10⁶. La mantisa, 2.5, es menor que 3.16: orden 10⁶.
- (b) ≈ 6.02 × 10⁵. Como 6.02 > 3.16, el orden es 10⁶: casi un megabyte.
- (c) 1 × 10⁻⁷ s = 100 ns: orden 10⁻⁷, lo que tarda leer la RAM.
- 2Fácil
Un servicio recibe 5 millones de requests al día. ¿Cuántas llegan por segundo en promedio? ¿Y con el atajo de 10⁵ s?
Ver la solución paso a paso
- 5,000,000 ÷ 86,400 ≈ 57.9 req/s. Con la regla de memoria: 5 × 11.6 = 58.
- Con el atajo: 5 × 10⁶ ÷ 10⁵ = 50 req/s, 13.6 % abajo.
- 3Fácil
Compras un disco de 4 TB. ¿Cuántos GiB y cuántos TiB muestra tu computadora con Windows?
Ver la solución paso a paso
- 4 TB = 4 × 10¹² bytes.
- En GiB: 4 × 10¹² ÷ 2³⁰ ≈ 3,725 GiB, que Windows escribe como «3,725 GB».
- En TiB: 4 × 10¹² ÷ 2⁴⁰ ≈ 3.64 TiB. No falta nada: es la regla de 1,024.
- 4Fácil
Tu internet es de 200 Mb/s. ¿Cuánto tarda, en el mejor caso, en bajar una imagen de Docker de 10 GB? ¿Cuánto dirías si confundieras bits con bytes?
Ver la solución paso a paso
- 10 GB × 8 = 80 Gb = 80,000 Mb.
- 80,000 Mb ÷ 200 Mb/s = 400 s ≈ 6.7 minutos.
- Confundiendo: 10,000 MB ÷ 200 = 50 s. Te quedarías corto por 8.
- 5Medio
Una app recibe 20 M fotos al día. La hora pico lleva 1/6 del tráfico y quieres un margen de 1.3. Calcula el promedio, el factor de pico, el pico y el pico de diseño.
Ver la solución paso a paso
- Promedio: 20,000,000 ÷ 86,400 ≈ 231 req/s.
- Factor: 24 × 1/6 = 4.
- Pico: 231.5 × 4 ≈ 926 req/s (con el promedio sin redondear; 231 × 4 daría 924).
- Diseño: 926 × 1.3 ≈ 1,204, redondeado hacia arriba a la centena: 1,300 req/s.
- 6Medio
El pico de diseño es 1,200 req/s. Cada máquina sostiene 800 req/s medidas, planeas al 60 %, quieres N+1 y cada máquina cuesta US$0.80 la hora. ¿Cuántas máquinas pides y cuánto cuestan al mes? ¿Qué pasaría si usaras
roundde Python?Ver la solución paso a paso
- Capacidad planeada: 800 × 0.6 = 480 req/s.
- Por tráfico: 1,200 ÷ 480 = 2.5 → ⌈2.5⌉ = 3. Con N+1: 4 máquinas.
- Costo: 4 × US$0.80 × 730 = US$2,336 al mes.
round(2.5)da 2 en Python: pedirías 3 en total. Si se cae una, las 2 que quedan suman 960 req/s planeadas, menos que 1,200: trabajarían al 75 % de su máximo medido (1,200 ÷ 1,600), muy arriba del 60 % que planeaste.
- 7Medio
El top-5 de un modelo sube de 96 % a 96.5 %. ¿Cuántos puntos porcentuales subió? ¿Qué cambio relativo es? ¿Cuánto bajaron los errores?
Ver la solución paso a paso
- Subió 0.5 puntos porcentuales.
- Relativo: 0.5 ÷ 96 ≈ 0.52 % más.
- Errores: de 4 % a 3.5 %, 0.5 ÷ 4 = 12.5 % menos. Tres maneras de contar el mismo cambio: di cuál usas.
- 8Medio
Un servicio hace 50 M predicciones al día y guarda un log de 500 B por cada una. ¿Cuánto ocupa al día y al año? Si los discos se compran en TiB, ¿cuántos TiB al año?
Ver la solución paso a paso
- Al día: 5 × 10⁷ × 500 B = 2.5 × 10¹⁰ B = 25 GB.
- Al año: 25 GB × 365 = 9,125 GB ≈ 9.1 TB.
- En TiB: 9.125 × 10¹² ÷ 2⁴⁰ ≈ 8.3 TiB. Antes de comprimir.
- 9Reto
Un servicio de lectura de documentos (OCR) recibe 3 M documentos al día de ≈ 2 páginas. El pico es 3× el promedio y el margen, 1.4. Una GPU procesa 50 páginas por segundo medidas; planeas al 50 % con N+1, a US$0.526 la hora. (a) ¿Páginas por segundo de promedio, pico y diseño? (b) ¿GPUs y costo al mes? (c) Si los documentos pueden esperar unas horas y entran a una cola que se procesa pareja, ¿cuántas GPUs?
Ver la solución paso a paso
- (a) 6 M páginas al día ÷ 86,400 ≈ 69 páginas/s; pico ≈ 208; diseño 208 × 1.4 ≈ 292 → 300.
- (b) Capacidad planeada: 50 × 0.5 = 25 por GPU. ⌈300 ÷ 25⌉ = 12, más 1: 13 GPUs. 13 × 0.526 × 730 ≈ US$4,992 al mes.
- (c) La cola reparte el pico en las horas tranquilas: dimensionas con el promedio y un margen, 69 × 1.3 ≈ 90 páginas/s. ⌈90 ÷ 25⌉ = 4, más 1: 5 GPUs ≈ US$1,920, ≈ 62 % menos. Y como esperar en la cola ya no rompe ninguna promesa, podrías planear más cerca del 100 %, como un trabajo batch (M03): ⌈90 ÷ 50⌉ + 1 = 3. Es la razón de los patrones asíncronos de la Ronda (M02).
- 10Reto
Un centro de distribución tiene 40 cámaras que mandan video 1080p a 15 fps, y su internet sube entre 20 y 50 Mb/s. (a) Sin comprimir, ¿cuántos Gb/s producen entre todas? (b) Comprimido a ≈ 4 Mb/s por cámara, ¿cuántos Mb/s y cuántos TB al día? (c) ¿Cabe ese video en el internet del sitio? ¿Qué harías?
Ver la solución paso a paso
- (a) Un cuadro: 1,920 × 1,080 × 3 B ≈ 6.22 MB. × 15 ≈ 93 MB/s, × 8 ≈ 0.75 Gb/s por cámara. × 40 ≈ 30 Gb/s.
- (b) 40 × 4 Mb/s = 160 Mb/s. Al día: 160 × 10⁶ × 86,400 ÷ 8 ≈ 1.73 × 10¹² B ≈ 1.7 TB.
- (c) No cabe: 160 Mb/s contra 20 a 50, y tampoco con un video más ligero de ≈ 1.5 Mb/s por cámara (60 Mb/s). Se analiza en el sitio, con una GPU junto a las cámaras, y a la nube solo van los eventos: la decisión de C02 en la Ronda sale de una división.
Lo que sigue
EsencialWhat comes next
En la Ronda:
- M01 · El mapa y la entrevista. Sus «estimaciones express» son esta lección en una tabla: 86,400 s, 1 M al día ≈ 12 req/s, el pico de 2 a 5 veces, 730 h, los nueves y el ejemplo completo de C01 con la fórmula de GPUs. Y pide decir cada número con su decisión.
- M03 · Latencia y capacidad. El promedio, el pico y el pico de diseño a fondo; de dónde sale cada factor; las ráfagas dentro de un segundo; y la ley de Little, que une throughput, latencia y requests en curso: 500 req/s × 0.05 s = 25 requests a la vez.
- M04 · Hardware para inferencia. Bytes por parámetro, GB contra GiB en
nvidia-smi, los GB/s de la VRAM y de PCIe y el techo de tokens por segundo de un LLM. - M13 · Nube. Precio por hora × 730, lo que cuesta cada GB que cruza la red y cuánto pagas por máquinas que pasan casi todo el día muy por debajo de su capacidad.
- Los casos. El paso de estimaciones de cada caso son estas cuentas: C01 (tráfico, GPUs, logs, red y costo), C07 (el tamaño del índice), C13 (el ancho de banda del audio) y C10 (tokens al día y al mes).
En el Dojo: la estación 7, Empaquetado, trabaja con imágenes de Docker de varios GB: cuánto pesan comprimidas y descomprimidas, y cuánto disco piden al bajarlas. Ahí vas a usar los GB, los GiB y los Gb/s de esta lección.
En Sensei: «Promedios, medianas y percentiles» explica por qué la promesa es sobre el p99 y no sobre el promedio. «Probabilidad para sistemas que fallan» calcula cuánto vale de verdad el repuesto N+1 y de dónde salen los nueves. «Cómo guarda números una computadora» abre el binario, float32, float16 e int8. «Matrices, FLOPs y qué tan rápido calcula una GPU» convierte TFLOPS y GB/s en milisegundos. Y «Qué tan rápido y cuánto: latencia y throughput» junta todo con las colas.
Palabras que vas a oír
EsencialWords you will hear
Estos son los conceptos que presentó esta lección. Cada uno tiene su tarjeta con la definición completa.
Notación científicascientific notationEscribir un número como una cifra entre 1 y 10 multiplicada por una potencia de diez: 86,400 = 8.64 × 10⁴. Sirve para números enormes o diminutos sin contar ceros.Más +
La cifra se llama mantisa, y el número al que se eleva el 10, exponente; un exponente negativo es un número chico: 4 × 10⁻⁵ = 0.00004. Para multiplicar se multiplican las mantisas y se suman los exponentes; para dividir, se dividen y se restan. Python y las hojas de cálculo la escriben con una e: 8.64e+04 es 8.64 × 10⁴. El exponente dice el orden de magnitud.
Ejemplo. La ResNet-50 de C01 tiene 24,532,532 ≈ 2.45 × 10⁷ parámetros y hace ≈ 4.1 × 10⁹ multiplicaciones por foto; copiar la foto a la GPU tarda ≈ 4 × 10⁻⁵ s, 40 microsegundos.
Orden de magnitudorder of magnitudeLa potencia de diez más cercana a un número: 86,400 es del orden de 10⁵. Dos cosas que difieren en un orden de magnitud están a 10 veces una de otra.Más +
Para redondear al orden más cercano se mira la mantisa: si es menor que √10 ≈ 3.16 se queda la potencia; si no, se sube una. Hay quien llama orden de magnitud solo al exponente, sin redondear: con esa costumbre, 86,400 es del orden de 10⁴. En diseño de sistemas, una estimación sirve si atina al orden de magnitud: equivocarse por 2 veces rara vez cambia la decisión; por 10, sí, porque se pasa de un par de máquinas a un cluster.
Ejemplo. Leer la RAM (≈ 10⁻⁷ s) y la promesa de 200 ms de C01 (2 × 10⁻¹ s) están a más de seis órdenes de magnitud: ≈ 2 millones de veces.
Bitbit · binary digitLa unidad más chica de información: un 0 o un 1. Se escribe con b minúscula.Más +
Con n bits caben 2ⁿ combinaciones: con 8, 256. Ocho bits forman un byte. Las velocidades de red se miden en bits por segundo (Mb/s, Gb/s), mientras que los archivos y las memorias se miden en bytes: confundirlos cambia la cuenta por 8. Cómo se escriben los números con bits es el sistema binario.
Ejemplo. Un plan de internet de 100 megas son 100 Mb/s: 12.5 MB por segundo. Un archivo de 1 GB tarda ≈ 80 s en bajar, no 10.
BytebyteUn grupo de 8 bits: la unidad en la que se miden los archivos y las memorias. Se escribe con B mayúscula y guarda un número del 0 al 255.Más +
Un canal de un píxel en uint8 ocupa 1 byte; un número en float32, 4. Los múltiplos (KB, MB, GB…) van de mil en mil en el sistema decimal y de 1,024 en 1,024 con los prefijos binarios (KiB, MiB, GiB…).
Ejemplo. La foto de C01 como tensor: 3 × 224 × 224 = 150,528 números × 4 bytes = 602,112 bytes ≈ 602 KB, que son ≈ 4.8 millones de bits.
Prefijo binario (KiB, MiB, GiB)binary prefix · kibi, mebi, gibiLos múltiplos de 1,024 en vez de 1,000: 1 KiB = 1,024 bytes, 1 MiB = 1,024 KiB, 1 GiB = 1,024 MiB. Llevan una i: KiB, MiB, GiB, TiB.Más +
Las computadoras cuentan en potencias de 2, y 2¹⁰ = 1,024 se parece a mil, así que por décadas «kilobyte» quiso decir las dos cosas. En 1998 la IEC separó los nombres: KB son 1,000 bytes (decimal) y KiB, 1,024 (binario). La diferencia crece con cada prefijo: 2.4 % en kilo, 7.4 % en giga, 10 % en tera. Los discos y las redes usan decimal; la RAM, Windows, nvidia-smi y PyTorch, binario. En una misma cuenta se usa una sola regla.
Ejemplo. Un disco de 1 TB tiene 10¹² bytes; Windows los divide entre 2³⁰ y muestra ≈ 931 «GB», que en realidad son GiB. No falta nada: es otra regla.
Ancho de bandabandwidthCuántos datos puede mover un canal por segundo: una red, un disco, el bus entre la CPU y la GPU. La red se mide en bits por segundo (Gb/s); la memoria y los discos, en bytes por segundo (GB/s).Más +
El tiempo de mandar algo grande es su tamaño entre el ancho de banda, con las unidades parejas (× 8 entre bytes y bits). No es lo mismo que la latencia: el ancho de banda dice cuánto cabe por segundo; la latencia, cuánto tarda en llegar lo primero. El de la memoria de la GPU tiene su propia lección: ancho de banda de memoria.
Analogía. Una camioneta con 2 PB de discos que maneja 10 horas tiene un ancho de banda enorme (≈ 440 Gb/s) y una latencia pésima: el primer byte llega a las 10 horas. Se rompe en que una red manda un flujo continuo y la camioneta, todo de golpe.
Ejemplo. En el pico de diseño de C01 viajan 500 × 602 KB ≈ 301 MB/s del gateway a las GPUs: ≈ 2.4 Gb/s. Por PCIe, a ≈ 16 GB/s, copiar una foto tarda ≈ 40 µs.
ThroughputthroughputCuánto trabajo termina un sistema por unidad de tiempo: requests por segundo, fotos por segundo, tokens por segundo.Más +
Es distinto de la latencia, que es cuánto tarda una sola request: un servicio puede atender 500 por segundo aunque cada una tarde 50 ms, porque atiende muchas a la vez. Un throughput se dice con su momento (promedio o pico) y su lugar (el gateway trabaja por requests; la GPU, por fotos). Con el del pico se cuentan las máquinas.
Ejemplo. C01 se diseña para 500 req/s; una T4 sostiene ≈ 1,200 fotos por segundo, medidas con una prueba de carga. En un LLM hay dos: los tokens por segundo que ve cada persona y los de toda la flota.
QPS (req/s)queries per second · requests per secondCuántas requests o consultas llegan por segundo. Es la unidad con la que se dimensiona un servicio.Más +
Se calcula dividiendo el volumen de un día entre 86,400 segundos: 1 millón al día son ≈ 11.6 por segundo. Ese es el promedio; para dimensionar se usan el pico y el pico de diseño (ver factor de pico). «QPS» viene de los buscadores (queries); «req/s» dice lo mismo para cualquier API.
Ejemplo. C01: 10,000,000 ÷ 86,400 ≈ 116 req/s de promedio, ≈ 350 en la hora pico y 500 de diseño. Las búsquedas de C07: 50 M al día, ≈ 579 de promedio y ≈ 1,750 en el pico.
Factor de picopeak factor · peak-to-average ratioCuántas veces el promedio llega en el momento de más tráfico. Con él se pasa del promedio al pico, que es para lo que se compran las máquinas.Más +
Si la hora pico lleva una fracción f del tráfico del día, el factor es 24 × f: con 1/8, 3. Suele estar entre 2 y 5 en apps que usan personas en una zona horaria, y cerca de 1 en un proceso que trabaja parejo las 24 horas. Al pico se le suma un margen (× 1.3 a 1.5) para picos raros y crecimiento, y se redondea hacia arriba: el pico de diseño.
Ejemplo. C01 supone 3: 116 × 3 ≈ 350 req/s; con un margen de ≈ 1.4 diseña para 500. Una notificación del Hot Sale podría llevarlo a ≈ 1,670 durante un minuto.
Estimación (cuenta de servilleta)back-of-the-envelope estimateUna cuenta rápida con números redondos para saber el orden de magnitud de algo (requests por segundo, máquinas, bytes, dólares) antes de construirlo.Más +
Se parte de pocos datos y de supuestos dichos en voz alta, se encadenan multiplicaciones y divisiones con las unidades a la vista y se redondea. No busca exactitud: busca no equivocarse por 10 y llevar a una decisión. Lo que depende del hardware o del negocio se marca como «a medir» y se mide con una prueba de carga.
Ejemplo. La de C01: 10 M fotos al día → 116 req/s → 350 en el pico → 500 de diseño → 2 T4 con N+1 → ≈ US$768 al mes de GPUs, y 3 GB de logs al día.
Redondear hacia arriba (ceil)ceiling · ceilQuedarse con el entero de arriba: ⌈0.83⌉ = 1 y ⌈2.1⌉ = 3. Así se cuentan las máquinas: media máquina no existe, y la que falta deja tráfico sin atender.Más +
Se escribe ⌈x⌉ y en Python math.ceil(x). Su contrario es el piso, ⌊x⌋ (math.floor), que se queda con el entero de abajo; round va al más cercano, y en Python manda los empates al par: round(2.5) da 2. Para capacidad, siempre hacia arriba; el repuesto (N+1) se suma después.
Ejemplo. GPUs de C01: ⌈500 ÷ 600⌉ = ⌈0.83⌉ = 1 por tráfico, más 1 de repuesto: 2. Con floor serían 0.
Punto porcentualpercentage point · ppLa resta entre dos porcentajes: de 85 % a 87 % son 2 puntos porcentuales, aunque el cambio relativo sea de 2.4 %.Más +
«Subió 2 %» y «subió 2 puntos» son cosas distintas: lo primero es multiplicar por 1.02; lo segundo, sumarle 2 al porcentaje. Con métricas y disponibilidad conviene decir los dos. Pasar de 99.9 % a 99.99 % son solo 0.09 puntos, pero la caída permitida se divide entre 10: de ≈ 43 a ≈ 4.3 minutos al mes.
Ejemplo. El gate de C01 no deja pasar un modelo que quede más de 0.3 puntos abajo del actual: si el actual saca 96 % de top-5, el nuevo pasa con 95.7 % y no con 95.6 %.
Chequeo
EsencialCheck
Intenta responder en tu cabeza antes de abrir cada respuesta.
1¿Por qué un plan de internet de 100 megas no baja 100 MB por segundo?Ver respuesta
Son 100 megabits por segundo, y un byte tiene 8 bits: 100 ÷ 8 = 12.5 MB/s.
2¿Cuántos segundos tiene un día, y cuántas requests por segundo son 1 millón al día?Ver respuesta
86,400 segundos. 1,000,000 ÷ 86,400 ≈ 11.6 req/s.
3Un disco de 1 TB aparece como 931 GB. ¿Qué pasó?Ver respuesta
Nada se perdió: el disco trae 10¹² bytes, y Windows los divide entre 2³⁰ (un GiB) aunque escriba «GB»: 10¹² ÷ 2³⁰ ≈ 931.
4¿Por qué se diseña para el pico de diseño y no para el promedio?Ver respuesta
Porque en la hora pico llegan varias veces más requests que en promedio (3 veces en C01): con capacidad para el promedio, la latencia explotaría. El promedio paga la factura; el pico de diseño decide las máquinas.
5Una cuenta dice que hacen falta 2.1 máquinas. ¿Cuántas pides con N+1?Ver respuesta
⌈2.1⌉ = 3 por tráfico, más 1 de repuesto: 4. Nunca hacia abajo.
6La accuracy pasa de 85 % a 87 %. ¿Subió 2 %?Ver respuesta
Subió 2 puntos porcentuales; en términos relativos, 2 ÷ 85 ≈ 2.4 %. Los errores bajaron 13 %, de 15 % a 13 %.
7¿Cuánto cuesta al mes una máquina de US$0.526 la hora encendida todo el tiempo?Ver respuesta
US$0.526 × 730 h ≈ US$384.