![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Ya escribí anteriormente sobre el
El lago de datos moderno, a veces denominado "data lakehouse", es mitad lago de datos y mitad almacén de datos basado en Open Table Format Specification (OTF). Ambos están construidos sobre un almacenamiento de objetos moderno.
Al mismo tiempo, hemos pensado profundamente en cómo las organizaciones pueden construir una infraestructura de datos de IA que pueda satisfacer todas sus necesidades de IA/ML, no solo el almacenamiento sin procesar de sus conjuntos de entrenamiento, conjuntos de validación y conjuntos de prueba. En otras palabras, debe contener el cómputo necesario para entrenar modelos de lenguaje grandes, herramientas MLOps, entrenamiento distribuido y más. Como resultado de esta línea de pensamiento, elaboramos otro documento sobre cómo usar el lago de datos moderno.
Fuente:
En ninguno de estos artículos se mencionan proveedores ni herramientas específicos. Ahora quiero hablar de los proveedores y las herramientas necesarias para construir el lago de datos moderno. En esta lista de los 10 principales, cada entrada es una capacidad necesaria para respaldar la IA generativa.
Los lagos de datos empresariales se basan en el almacenamiento de objetos. No en el almacenamiento de objetos basado en dispositivos de la vieja escuela que servía para casos de uso de archivo profundo y económico, sino en almacenes de objetos modernos, de alto rendimiento, definidos por software y nativos de Kubernetes, las piedras angulares de la pila GenAI moderna. Están disponibles como servicio (AWS, GCP, Azure) o en las instalaciones o híbridos/ambos, como MinIO. Estos lagos de datos tienen que admitir cargas de trabajo de transmisión, deben tener un cifrado y una codificación de borrado altamente eficientes, necesitan almacenar metadatos de forma atómica con el objeto y admitir tecnologías como Lambda Computing. Dado que estas alternativas modernas son nativas de la nube, se integrarán con toda la pila de otras tecnologías nativas de la nube, desde los firewalls hasta la observabilidad y la gestión de usuarios y acceso, de inmediato.
El almacenamiento de objetos también es la solución de almacenamiento subyacente para un almacén de datos basado en OTP. El uso del almacenamiento de objetos para un almacén de datos puede sonar extraño, pero un almacén de datos creado de esta manera representa la próxima generación de almacenes de datos. Esto es posible gracias a las especificaciones OTF creadas por Netflix, Uber y Databricks, que hacen que sea sencillo emplear el almacenamiento de objetos dentro de un almacén de datos.
Los OTF (Apache Iceberg, Apache Hudi y Delta Lake) se escribieron porque no había productos en el mercado que pudieran manejar las necesidades de datos de los creadores. Básicamente, lo que todos ellos hacen (de diferentes maneras) es definir un almacén de datos que se puede construir sobre el almacenamiento de objetos. El almacenamiento de objetos proporciona la combinación de capacidad escalable y alto rendimiento que otras soluciones de almacenamiento no pueden ofrecer. Como se trata de especificaciones modernas, tienen características avanzadas que los almacenes de datos tradicionales no tienen, como la evolución de particiones, la evolución de esquemas y la ramificación sin copia.
Dos socios de MinIO que pueden ejecutar su almacén de datos basado en OTF sobre MinIO son Dremio y Starburst.
MLOps es al aprendizaje automático lo que DevOps es al desarrollo de software tradicional. Ambos son un conjunto de prácticas y principios destinados a mejorar la colaboración entre los equipos de ingeniería (Dev o ML) y los equipos de operaciones de TI (Ops). El objetivo es optimizar el ciclo de vida del desarrollo mediante la automatización, desde la planificación y el desarrollo hasta la implementación y las operaciones. Uno de los principales beneficios de estos enfoques es la mejora continua.
Las técnicas y características de MLOps evolucionan constantemente. Necesita una herramienta que esté respaldada por un actor importante, lo que garantiza que la herramienta se encuentre en constante desarrollo y mejora y que ofrecerá soporte a largo plazo. Cada una de estas herramientas utiliza MinIO en segundo plano para almacenar artefactos utilizados durante el ciclo de vida de un modelo.
El marco de aprendizaje automático es la biblioteca (normalmente para Python) que se utiliza para crear los modelos y escribir el código que los entrena. Estas bibliotecas son muy completas, ya que proporcionan una colección de diferentes funciones de pérdida, optimizadores, herramientas de transformación de datos y capas predefinidas para redes neuronales. La característica más importante que proporcionan estas dos bibliotecas es un tensor. Los tensores son matrices multidimensionales que se pueden mover a la GPU. También tienen diferenciación automática, que se utiliza durante el entrenamiento del modelo.
Los dos marcos de aprendizaje automático más populares hoy en día son PyTorch (de Facebook) y Tensorflow (de Google).
El entrenamiento de modelos distribuidos es el proceso de entrenamiento simultáneo de modelos de aprendizaje automático en varios dispositivos o nodos computacionales. Este enfoque acelera el proceso de entrenamiento, en particular cuando se necesitan grandes conjuntos de datos para entrenar modelos complejos.
En el entrenamiento de modelos distribuidos, el conjunto de datos se divide en subconjuntos más pequeños y cada subconjunto es procesado por diferentes nodos en paralelo. Estos nodos pueden ser máquinas individuales dentro de un clúster, procesos individuales o pods individuales dentro de un clúster de Kubernetes. Pueden tener acceso a GPU. Cada nodo procesa de forma independiente su subconjunto de datos y actualiza los parámetros del modelo en consecuencia. Las cinco bibliotecas siguientes aíslan a los desarrolladores de la mayor parte de la complejidad del entrenamiento distribuido. Puede ejecutarlas localmente si no tiene un clúster, pero necesitará un clúster para ver una reducción notable en el tiempo de entrenamiento.
Un centro de modelos no es realmente parte de la arquitectura de referencia de un lago de datos moderno, pero lo incluyo de todos modos porque es importante para comenzar rápidamente con la IA generativa. Hugging Face se ha convertido en el lugar al que acudir para obtener modelos de lenguaje grandes. Hugging Face alberga un centro de modelos donde los ingenieros pueden descargar modelos entrenados previamente y compartir modelos que ellos mismos crean. Hugging Face también es el autor de las bibliotecas Transformers y Datasets, que funcionan con modelos de lenguaje grandes (LLM) y los datos utilizados para entrenarlos y ajustarlos.
Existen otros centros de modelos. Todos los principales proveedores de servicios en la nube tienen alguna forma de cargar y compartir modelos, pero Hugging Face, con su colección de modelos y bibliotecas, se ha convertido en el líder en este espacio.
Un marco de aplicación ayuda a incorporar un LLM en una aplicación. Usar un LLM es diferente a usar una API estándar. Se debe hacer mucho trabajo para convertir una solicitud de usuario en algo que el LLM pueda comprender y procesar. Por ejemplo, si crea una aplicación de chat y desea utilizar Retrieval Augmented Generation (RAG), deberá tokenizar la solicitud, convertir los tokens en un vector, integrar con una base de datos de vectores (descrita a continuación), crear un mensaje y luego llamar a su LLM. Un marco de aplicación para IA generativa le permitirá encadenar estas acciones. El marco de aplicación más utilizado en la actualidad es LangChain. Tiene integraciones con otras tecnologías, por ejemplo, la biblioteca Hugging Face Transformer y la biblioteca Unstructured para el procesamiento de documentos. Tiene muchas funciones y puede ser un poco complicado de usar, por lo que a continuación se enumeran algunas alternativas para aquellos que no tienen requisitos complejos y desean algo más simple que LangChain.
La mayoría de las organizaciones no tienen un único repositorio con documentos limpios y precisos. En cambio, los documentos se encuentran distribuidos por toda la organización en varios portales de equipo en muchos formatos. El primer paso para prepararse para la IA generativa es crear un flujo de trabajo que solo tome los documentos que hayan sido aprobados para su uso con IA generativa y los coloque en su base de datos vectorial. Esta podría ser potencialmente la tarea más difícil de una solución de IA generativa para grandes organizaciones globales.
Un pipeline de documentos debe convertir los documentos en texto, dividir el documento en fragmentos y ejecutar el texto dividido en fragmentos a través de un modelo de incrustación para que su representación vectorial pueda guardarse en una base de datos vectorial. Afortunadamente, existen algunas bibliotecas de código abierto que pueden hacer esto para muchos de los formatos de documentos más comunes. A continuación se enumeran algunas bibliotecas. Estas bibliotecas se pueden utilizar con LangChain para crear un pipeline de procesamiento de documentos completo.
Las bases de datos vectoriales facilitan la búsqueda semántica. Para entender cómo se hace esto se necesitan muchos conocimientos matemáticos y es complicado. Sin embargo, la búsqueda semántica es conceptualmente fácil de entender. Supongamos que desea encontrar todos los documentos que tratan cualquier tema relacionado con la “inteligencia artificial”. Para hacerlo en una base de datos convencional, necesitaría buscar todas las posibles abreviaturas, sinónimos y términos relacionados con la “inteligencia artificial”. Su consulta sería algo así:
SELECT snippet FROM MyCorpusTable WHERE (text like '%artificial intelligence%' OR text like '%ai%' OR text like '%machine learning%' OR text like '%ml%' OR ... and on and on ...
Esta búsqueda de similitud manual no solo es ardua y propensa a errores, sino que la búsqueda en sí misma es muy lenta. Una base de datos vectorial puede tomar una solicitud como la que se muestra a continuación y ejecutar la consulta más rápido y con mayor precisión. La capacidad de ejecutar consultas semánticas de manera rápida y precisa es importante si desea utilizar la generación aumentada de recuperación.
{ Get { MyCorpusTable(nearText: {concepts: ["artificial intelligence"]}) {snippet} } }
A continuación se enumeran cuatro bases de datos de vectores populares.
Siempre es una buena idea contar con herramientas que le permitan manipular sus datos y visualizarlos de diferentes maneras. Las bibliotecas de Python que se enumeran a continuación brindan capacidades de manipulación y visualización de datos. Estas pueden parecer herramientas que solo necesita para la IA tradicional, pero también son útiles con la IA generativa. Por ejemplo, si está realizando un análisis de sentimientos o detección de emociones, debe verificar sus conjuntos de entrenamiento, validación y prueba para asegurarse de tener una distribución adecuada en todas sus clases.
Aquí lo tiene: 10 capacidades que se pueden encontrar en la arquitectura de referencia de lago de datos moderna, junto con productos y bibliotecas de proveedores concretos para cada capacidad. A continuación, se incluye una tabla que resume estas herramientas.