J'ai déjà écrit sur le
Le lac de données moderne, parfois appelé data lakehouse, est à moitié un lac de données et à moitié un entrepôt de données basé sur la spécification Open Table Format (OTF). Tous deux sont basés sur un stockage d'objets moderne.
Parallèlement, nous avons réfléchi en profondeur à la manière dont les organisations peuvent créer une infrastructure de données IA capable de répondre à tous vos besoins en IA/ML, et pas seulement au stockage brut de vos ensembles d’entraînement, de validation et de test. En d’autres termes, elle doit contenir les ressources informatiques nécessaires à l’entraînement de grands modèles linguistiques, aux outils MLOps, à l’entraînement distribué, etc. À la suite de cette réflexion, nous avons rédigé un autre article sur la manière d’utiliser le lac de données moderne
Source:
Ces deux articles ne mentionnent pas de fournisseurs ou d’outils spécifiques. Je souhaite maintenant aborder les fournisseurs et les outils nécessaires à la construction du lac de données moderne. Dans cette liste des 10 meilleurs, chaque entrée correspond à une capacité nécessaire pour soutenir l’IA générative.
Les lacs de données d'entreprise sont basés sur le stockage d'objets. Il ne s'agit pas d'un stockage d'objets à l'ancienne, basé sur des appareils, qui servait à des cas d'utilisation d'archivage bon marché et approfondis, mais de magasins d'objets modernes, performants, définis par logiciel et natifs de Kubernetes, les pierres angulaires de la pile GenAI moderne. Ils sont disponibles en tant que service (AWS, GCP, Azure) ou sur site ou hybrides/les deux, comme MinIO. Ces lacs de données doivent prendre en charge les charges de travail en streaming, doivent disposer d'un chiffrement et d'un codage d'effacement très efficaces, doivent stocker les métadonnées de manière atomique avec l'objet et prendre en charge des technologies telles que le calcul Lambda. Étant donné que ces alternatives modernes sont natives du cloud, elles s'intégreront à l'ensemble de la pile d'autres technologies natives du cloud, des pare-feu à l'observabilité en passant par la gestion des utilisateurs et des accès, dès la sortie de la boîte.
Le stockage d'objets est également la solution de stockage sous-jacente pour un entrepôt de données basé sur OTF. L'utilisation du stockage d'objets pour un entrepôt de données peut sembler étrange, mais un entrepôt de données construit de cette manière représente la prochaine génération d'entrepôts de données. Cela est rendu possible par les spécifications OTF rédigées par Netflix, Uber et Databricks, qui permettent d'utiliser le stockage d'objets de manière transparente dans un entrepôt de données.
Les OTF (Apache Iceberg, Apache Hudi et Delta Lake) ont été écrits parce qu'il n'existait aucun produit sur le marché capable de répondre aux besoins en données des créateurs. Essentiellement, ce qu'ils font tous (de différentes manières) est de définir un entrepôt de données qui peut être construit sur le stockage d'objets. Le stockage d'objets offre la combinaison d'une capacité évolutive et de hautes performances que les autres solutions de stockage ne peuvent pas offrir. Comme il s'agit de spécifications modernes, elles disposent de fonctionnalités avancées que les entrepôts de données traditionnels n'ont pas, telles que l'évolution des partitions, l'évolution des schémas et la ramification sans copie.
Deux partenaires MinIO qui peuvent exécuter leur entrepôt de données basé sur OTF sur MinIO sont Dremio et Starburst.
Le MLOps est au machine learning ce que le DevOps est au développement logiciel traditionnel. Tous deux constituent un ensemble de pratiques et de principes visant à améliorer la collaboration entre les équipes d’ingénierie (Dev ou ML) et les équipes d’exploitation informatique (Ops). L’objectif est de rationaliser le cycle de vie du développement grâce à l’automatisation, de la planification et du développement au déploiement et aux opérations. L’un des principaux avantages de ces approches est l’amélioration continue.
Les techniques et fonctionnalités MLOps évoluent constamment. Vous avez besoin d'un outil soutenu par un acteur majeur, garantissant que l'outil est en développement et en amélioration constants et qu'il offrira un support à long terme. Chacun de ces outils utilise MinIO en arrière-plan pour stocker les artefacts utilisés pendant le cycle de vie d'un modèle.
Votre infrastructure d'apprentissage automatique est la bibliothèque (généralement pour Python) que vous utilisez pour créer vos modèles et écrire le code qui les entraîne. Ces bibliothèques sont riches en fonctionnalités car elles fournissent une collection de différentes fonctions de perte, optimiseurs, outils de transformation de données et couches prédéfinies pour les réseaux neuronaux. La fonctionnalité la plus importante fournie par ces deux bibliothèques est un tenseur. Les tenseurs sont des tableaux multidimensionnels qui peuvent être déplacés sur le GPU. Ils disposent également d'une différenciation automatique, qui est utilisée lors de l'entraînement du modèle.
Les deux frameworks d’apprentissage automatique les plus populaires aujourd’hui sont PyTorch (de Facebook) et Tensorflow (de Google).
L'apprentissage de modèles distribués consiste à entraîner simultanément des modèles d'apprentissage automatique sur plusieurs périphériques ou nœuds de calcul. Cette approche accélère le processus d'apprentissage, en particulier lorsque de grands ensembles de données sont nécessaires pour entraîner des modèles complexes.
Dans la formation de modèles distribués, l'ensemble de données est divisé en sous-ensembles plus petits, et chaque sous-ensemble est traité par différents nœuds en parallèle. Ces nœuds peuvent être des machines individuelles au sein d'un cluster, des processus individuels ou des pods individuels au sein d'un cluster Kubernetes. Ils peuvent avoir accès aux GPU. Chaque nœud traite indépendamment son sous-ensemble de données et met à jour les paramètres du modèle en conséquence. Les cinq bibliothèques ci-dessous isolent les développeurs de la majeure partie de la complexité de la formation distribuée. Vous pouvez les exécuter localement si vous n'avez pas de cluster, mais vous aurez besoin d'un cluster pour constater une réduction notable du temps de formation.
Un hub de modèles ne fait pas vraiment partie de l'architecture de référence du lac de données moderne, mais je l'inclus quand même car il est important pour démarrer rapidement avec l'IA générative. Hugging Face est devenu l'endroit idéal pour les grands modèles de langage. Hugging Face héberge un hub de modèles où les ingénieurs peuvent télécharger des modèles pré-entraînés et partager les modèles qu'ils créent eux-mêmes. Hugging Face est également l'auteur des bibliothèques Transformers et Datasets, qui fonctionnent avec les grands modèles de langage (LLM) et les données utilisées pour les entraîner et les affiner.
Il existe d’autres plateformes de modèles. Tous les principaux fournisseurs de cloud proposent un moyen de télécharger et de partager des modèles, mais Hugging Face, avec sa collection de modèles et de bibliothèques, est devenu le leader dans ce domaine.
Un framework d'application permet d'intégrer un LLM dans une application. L'utilisation d'un LLM est différente de l'utilisation d'une API standard. Il faut beaucoup de travail pour transformer une demande d'utilisateur en quelque chose que le LLM peut comprendre et traiter. Par exemple, si vous créez une application de chat et que vous souhaitez utiliser Retrieval Augmented Generation (RAG), vous devrez alors tokeniser la demande, transformer les jetons en vecteur, intégrer une base de données vectorielle (décrite ci-dessous), créer une invite, puis appeler votre LLM. Un framework d'application pour l'IA générative vous permettra d'enchaîner ces actions. Le framework d'application le plus utilisé aujourd'hui est LangChain. Il est intégré à d'autres technologies, par exemple la bibliothèque Hugging Face Transformer et la bibliothèque Unstructured pour le traitement de documents. Il est riche en fonctionnalités et peut être un peu compliqué à utiliser, c'est pourquoi vous trouverez ci-dessous quelques alternatives pour ceux qui n'ont pas d'exigences complexes et qui veulent quelque chose de plus simple que LangChain.
La plupart des organisations ne disposent pas d’un référentiel unique contenant des documents propres et précis. Au contraire, les documents sont répartis dans toute l’organisation sur différents portails d’équipe dans de nombreux formats. La première étape de la préparation à l’IA générative consiste à créer un pipeline qui ne prend que les documents approuvés pour une utilisation avec l’IA générative et les place dans votre base de données vectorielle. Cela pourrait potentiellement être la tâche la plus difficile d’une solution d’IA générative pour les grandes organisations mondiales.
Un pipeline de documents doit convertir les documents en texte, segmenter le document et exécuter le texte segmenté via un modèle d'intégration afin que sa représentation vectorielle puisse être enregistrée dans une base de données vectorielle. Heureusement, quelques bibliothèques open source peuvent le faire pour de nombreux formats de documents courants. Quelques bibliothèques sont répertoriées ci-dessous. Ces bibliothèques peuvent être utilisées avec LangChain pour créer un pipeline de traitement de documents complet.
Les bases de données vectorielles facilitent la recherche sémantique. Comprendre comment cela fonctionne nécessite beaucoup de connaissances mathématiques et est compliqué. Cependant, la recherche sémantique est conceptuellement facile à comprendre. Supposons que vous souhaitiez trouver tous les documents qui traitent de tout ce qui a trait à « l'intelligence artificielle ». Pour ce faire dans une base de données conventionnelle, vous devrez rechercher toutes les abréviations, synonymes et termes associés possibles à « l'intelligence artificielle ». Votre requête ressemblerait à ceci :
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 ...
Non seulement cette recherche manuelle de similarité est ardue et sujette à des erreurs, mais la recherche elle-même est très lente. Une base de données vectorielle peut prendre une requête comme celle ci-dessous et exécuter la requête plus rapidement et avec une plus grande précision. La capacité d'exécuter des requêtes sémantiques rapidement et avec précision est importante si vous souhaitez utiliser la génération augmentée de récupération.
{ Get { MyCorpusTable(nearText: {concepts: ["artificial intelligence"]}) {snippet} } }
Quatre bases de données vectorielles populaires sont répertoriées ci-dessous.
Il est toujours judicieux de disposer d’outils qui vous permettent de gérer vos données et de les visualiser de différentes manières. Les bibliothèques Python répertoriées ci-dessous offrent des capacités de manipulation et de visualisation des données. Ces outils peuvent sembler n’être nécessaires que pour l’IA traditionnelle, mais ils sont également utiles pour l’IA générative. Par exemple, si vous effectuez une analyse des sentiments ou une détection d’émotions, vous devez vérifier vos ensembles d’entraînement, de validation et de test pour vous assurer que vous disposez d’une distribution appropriée dans toutes vos classes.
Et voilà : 10 fonctionnalités que l'on peut trouver dans l'architecture de référence du lac de données moderne, ainsi que des produits et bibliothèques de fournisseurs concrets pour chaque fonctionnalité. Vous trouverez ci-dessous un tableau récapitulant ces outils.