Big Data
Los macrodatos son datos demasiado voluminosos, rápidos o variados para las herramientas de una sola máquina. Incluye las tres V, MapReduce y Spark, y los conjuntos de datos que sustentan la IA moderna.
Los macrodatos son datos cuyo tamaño, ritmo de llegada o variedad de formatos supera lo que una sola máquina y las herramientas convencionales de bases de datos pueden almacenar y procesar; por eso, se distribuyen entre clústeres de máquinas que trabajan en paralelo. En 2001, el analista Doug Laney, de META Group, describió el reto con las tres V: volumen, la cantidad de datos; velocidad, la rapidez con la que llegan y deben gestionarse; y variedad, la mezcla de tablas estructuradas, registros, texto, imágenes, audio y vídeo. Definiciones posteriores añaden veracidad, es decir, la fiabilidad de los datos, y valor. En el aprendizaje automático, los macrodatos son tanto la materia prima como un problema de ingeniería: los modelos mejoran con más datos de entrenamiento, y las canalizaciones que los recopilan, limpian y sirven requieren gran parte del esfuerzo necesario para construirlos.
Macrodatos en IA y visión artificial#
El aprendizaje profundo creció a la par que los conjuntos de datos demasiado grandes para un solo disco. ImageNet, presentado en 2009, llegó a superar los 14 millones de imágenes etiquetadas; sus 1,28 millones de imágenes de entrenamiento de la competición de 1.000 clases sirvieron para entrenar AlexNet, una red neuronal convolucional que ganó la competición de 2012. El conjunto de datos SA-1B de Meta, publicado en 2023 junto con el Segment Anything Model, contiene 11 millones de imágenes y 1.100 millones de máscaras de segmentación; Meta preentrenó Llama 3 con más de 15 billones de tokens de texto. Las leyes de escalado explican por qué estas colecciones dan resultado: la pérdida disminuye de forma predecible al aumentar a la vez los datos, los parámetros y el cálculo.
En la visión artificial, el volumen procede de flotas de cámaras y sensores. Un solo vehículo autónomo registra flujos de cámara, radar y lidar por cada hora que circula, y las fábricas y tiendas añaden miles de señales de vídeo continuas. La velocidad importa cuando se necesitan resultados a medida que llegan los datos, como en la inferencia en tiempo real sobre tráfico o vídeo de líneas de producción. La variedad abarca imágenes y vídeo, además de anotaciones, metadatos de sensores y registros. Más datos solo ayudan si sus etiquetas son precisas, así que los grandes conjuntos de datos de visión dependen de la limpieza de datos, la eliminación de duplicados y el aprendizaje activo para seleccionar qué imágenes nuevas merece la pena etiquetar.
Cómo se almacenan y procesan los macrodatos#
Los sistemas de macrodatos escalan horizontalmente: distribuyen los datos y el cálculo entre muchas máquinas estándar, en lugar de usar un único servidor más grande. El artículo de Google sobre MapReduce de 2004 describió el modelo que Apache Hadoop, de código abierto, popularizó: dividir la entrada en fragmentos, ejecutar una función map en cada fragmento en paralelo en la máquina donde está almacenado y reducir los resultados parciales a una respuesta. Apache Spark, iniciado en UC Berkeley en 2009, mantiene los resultados intermedios en memoria, lo que hace que los trabajos iterativos, como el entrenamiento de modelos, sean mucho más rápidos que con MapReduce basado en disco. Los archivos sin procesar suelen almacenarse en la nube como objetos organizados en un lago de datos; los formatos columnares como Apache Parquet permiten que una consulta lea solo las columnas necesarias, y las plataformas de streaming como Apache Kafka transportan eventos de alta velocidad.
Este ejemplo ejecuta los pasos map y reduce en tres fragmentos de etiquetas de imágenes con la biblioteca estándar de Python:
from collections import Counter
from multiprocessing import Pool
# Tres fragmentos de etiquetas de imágenes; un clúster almacena cada fragmento en una máquina distinta
shards = [
["car", "person", "car", "bus"],
["person", "person", "bicycle"],
["car", "person", "dog", "car"],
]
def count_labels(shard):
"""Map step: count the labels in one shard."""
return Counter(shard)
if __name__ == "__main__":
with Pool(processes=3) as pool:
partial_counts = pool.map(count_labels, shards) # un proceso de trabajo por fragmento
# Paso reduce: combinar los recuentos parciales en un total
totals = sum(partial_counts, Counter())
print(totals.most_common())Cada fragmento se cuenta en su propio proceso, y el paso reduce combina los recuentos parciales en [('car', 4), ('person', 4), ('bus', 1), ('bicycle', 1), ('dog', 1)]. Spark y Hadoop ejecutan los mismos dos pasos en miles de máquinas y envían el código map a las máquinas que contienen cada fragmento.
Entrenamiento de modelos con macrodatos#
Una ejecución de entrenamiento lee los macrodatos en lotes. Los cargadores de datos decodifican desde unas pocas decenas hasta unos cientos de imágenes cada vez, desde un disco local o un almacenamiento de objetos y a través de varios procesos de trabajo, de modo que el conjunto de datos completo no tiene que caber en memoria; el entrenamiento distribuido divide cada lote entre muchas GPU. Para la detección de objetos, el conjunto de detección Open Images V7 de Google ocupa 561 GB para descargar y contiene 1,74 millones de imágenes de entrenamiento distribuidas en 601 clases, mucho más de lo que cabe en la RAM de la mayoría de las máquinas. Si se solicita almacenar un conjunto de datos en caché en memoria con cache="ram", el entrenamiento de Ultralytics YOLO estima el tamaño decodificado a partir de 30 imágenes aleatorias y lo almacena en caché solo si el doble de esa estimación cabe en la RAM disponible; los conjuntos de datos más grandes se leen y decodifican desde el disco en cada época.
Macrodatos frente a términos relacionados#
- Minería de datos: Búsqueda de patrones, anomalías y asociaciones en datos de cualquier tamaño, a menudo ejecutada en plataformas de macrodatos.
- Análisis de datos: Consulta, resumen y visualización de datos para fundamentar decisiones; el análisis de macrodatos es la parte que requiere motores distribuidos.
- IA centrada en los datos: Mejora de modelos mediante la mejora de la calidad y la cobertura de sus datos, algo especialmente importante cuando un conjunto de datos es demasiado grande para revisarlo a mano.










