Une introduction à DocArray, une bibliothèque d’IA open source


  • FrançaisFrançais


  • DocArray est une bibliothèque pour les données imbriquées, non structurées et multimodales en transit, y compris le texte, l’image, l’audio, la vidéo, le maillage 3D, etc. Il permet aux ingénieurs d’apprentissage en profondeur de traiter, d’intégrer, de rechercher, de stocker, de recommander et de transférer efficacement des données multimodales avec une API Pythonic. À partir de novembre 2022, DocArray est open source et hébergé par l’initiative Linux Foundation AI & Data afin qu’il y ait une maison neutre pour construire et soutenir une communauté ouverte d’IA et de données. C’est le début d’une nouvelle journée pour DocArray.

    Au cours des dix mois qui ont suivi la première version de DocArray, ses développeurs chez Jina AI ont vu de plus en plus d’adoption et de contributions de la part de la communauté open source. Aujourd’hui, DocArray alimente des centaines d’applications d’IA multimodales.

    Héberger un projet open source avec la Linux Foundation

    L’hébergement d’un projet avec la Fondation Linux suit une gouvernance ouverte, ce qui signifie qu’aucune entreprise ou personne ne contrôle un projet. Lorsque les mainteneurs d’un projet open source décident de l’héberger à la Linux Foundation, ils transfèrent spécifiquement la propriété de la marque du projet à la Linux Foundation.

    Dans cet article, je passerai en revue l’histoire et l’avenir de DocArray. En particulier, je vais démontrer quelques fonctionnalités intéressantes qui sont déjà en développement.

    Un bref historique de DocArray

    Jina AI a introduit le concept de “DocArray” dans Jina 0.8 fin 2020. C’était le jina.types module, destiné à compléter les modèles de conception de recherche neuronale en clarifiant la représentation des données de bas niveau dans Jina. Plutôt que de travailler directement avec Protobuf, la nouvelle classe Document offrait une API de haut niveau plus simple et plus sûre pour représenter les données multimodales.

    (Jina AI, CC BY-SA 4.0)

    Au fil du temps, nous avons prolongé jina.types et est allé au-delà d’une simple interface Pythonic de Protobuf. Nous avons ajouté DocumentArray pour faciliter les opérations par lots sur plusieurs DocumentArrays. Ensuite, nous avons introduit des fonctions d’E/S et de prétraitement pour différentes modalités de données, comme le texte, l’image, la vidéo, l’audio et les maillages 3D. La classe Executor a commencé à utiliser DocumentArray pour l’entrée et la sortie. Dans Jina 2.0 (sorti à la mi-2021), le design est devenu encore plus fort. Document, Executor et Flow sont devenus les trois concepts fondamentaux de Jina :

    • Le document est l’E/S de données dans Jina
    • L’exécuteur définit la logique de traitement des documents
    • Le flux relie les exécuteurs ensemble pour accomplir une tâche.

    La communauté a adoré le nouveau design, car il a grandement amélioré l’expérience des développeurs en masquant une complexité inutile. Cela permet aux développeurs de se concentrer sur les choses qui comptent vraiment.

    (Jina AI, CC BY-SA 4.0)

    Comme jina.types a grandi, il est devenu conceptuellement indépendant de Jina. Tandis que jina.types était plus sur la construction locale, le reste de Jina se concentrait sur la service-isation. Essayer d’atteindre deux objectifs très différents dans une seule base de code a créé des obstacles de maintenance. D’un côté, jina.types devait évoluer rapidement et continuer à ajouter des fonctionnalités pour répondre aux besoins de la communauté de l’IA en évolution rapide. D’autre part, Jina elle-même devait rester stable et robuste car elle servait d’infrastructure. Le résultat? Un ralentissement du développement.

    Nous avons résolu ce problème en découplant jina.types de Jina fin 2021. Cette refactorisation a servi de base au dernier DocArray. C’est alors que la mission de DocArray s’est cristallisée pour l’équipe : fournir une structure de données aux ingénieurs en IA pour représenter, stocker, transmettre et intégrer facilement des données multimodales. DocArray se concentre sur l’expérience des développeurs locaux, optimisée pour un prototypage rapide. Jina fait évoluer les choses et transforme les prototypes en services en production. Dans cet esprit, Jina AI a publié DocArray 0.1 en parallèle avec Jina 3.0 au début de 2022, indépendamment en tant que nouveau projet open source.

    Nous avons choisi le nom DocArray parce que nous voulons créer quelque chose d’aussi fondamental et largement utilisé que NumPy ndarray. Aujourd’hui, DocArray est le point d’entrée de nombreuses applications d’IA multimodales, comme les populaires DALLE-Flow et DiscoArt. Les développeurs de DocArray ont introduit de nouvelles fonctionnalités puissantes, telles que les classes de données et le magasin de documents pour améliorer encore plus la convivialité. DocArray s’est allié à des partenaires open source tels que Weaviate, Qdrant, Redis, FastAPI, pydantic et Jupyter pour l’intégration et surtout pour rechercher une norme commune.

    Dans DocArray 0.19 (publié le 15 novembre), vous pouvez facilement représenter et traiter des données de maillage 3D.

    (Jina AI, CC BY-SA 4.0)

    L’avenir de DocArray

    Faire don de DocArray à la Fondation Linux marque une étape importante où nous partageons notre engagement avec la communauté open source de manière ouverte, inclusive et constructive.

    La prochaine version de DocArray se concentre sur quatre tâches :

    Représentant : prend en charge les idiomes Python pour représenter facilement des données multimodales complexes et imbriquées.
    Intégration : fournir des interfaces fluides pour les modèles d’apprentissage en profondeur traditionnels afin d’intégrer efficacement les données.
    Stockage : prend en charge plusieurs bases de données vectorielles pour une persistance efficace et une récupération approximative du voisin le plus proche.
    Transit : permettre une (dé)sérialisation rapide et devenir un protocole filaire standard sur gRPC, HTTP et WebSockets.

    Dans les sections suivantes, les mainteneurs de DocArray, Sami Jaghouar et Johannes Messner, vous donnent un avant-goût de la prochaine version.

    Classe de données tout-en-un

    Dans DocArray, dataclass est une API de haut niveau pour représenter un document multimodal. Il suit la conception et l’idiome de la classe de données Python standard, permettant aux utilisateurs de représenter intuitivement des documents multimodaux complexes et de les traiter facilement avec l’API de DocArray. La nouvelle version fait de dataclass un citoyen de première classe et refactorise son ancienne implémentation en utilisant pydantic V2.

    Comment utiliser la classe de données

    Voici comment utiliser la nouvelle dataclass. Tout d’abord, vous devez savoir qu’un Document est un modèle pydantic avec un ID aléatoire et l’interface Protobuf :

    From docarray import Document

    Pour créer votre propre type de données multimodal, il vous suffit de sous-classer à partir de Document:

    from docarray import Document
    from docarray.typing import Tensor
    import numpy as np
    class Banner(Document):
       alt_text: str
       image: Tensor
    banner = Banner(text='DocArray is amazing', image=np.zeros((3, 224, 224)))

    Une fois que vous avez défini un Bannervous pouvez l’utiliser comme bloc de construction pour représenter des données plus complexes :

    class BlogPost(Document):
       title: str
       excerpt: str
       banner: Banner
       tags: List[str]
       content: str

    Ajout d’un champ d’intégration à BlogPost est facile. Vous pouvez utiliser les paramètres prédéfinis Document des modèles Text et Imagequi sont fournis avec le champ d’intégration intégré :

    from typing import Optional
    from docarray.typing import Embedding
    class Image(Document):
       src: str
       embedding: Optional[Embedding]
    class Text(Document):
       content: str
       embedding: Optional[Embedding]

    Ensuite, vous pouvez représenter votre BlogPost:

    class Banner(Document):
    alt_text: str
       image: Image
    class BlogPost(Document):
       title: Text
       excerpt: Text
       banner: Banner
       tags: List[str]
       content: Text

    Cela donne à votre multimodal BlogPost quatre représentations enchâssées : title, excerpt, contentet banner.

    Soutien Milvus

    Milvus est une base de données vectorielles open-source et un projet open-source hébergé sous Linux Foundation AI & Data. Il est très flexible, fiable et extrêmement rapide, et prend en charge l’ajout, la suppression, la mise à jour et la recherche en temps quasi réel de vecteurs à l’échelle d’un billion d’octets. Comme première étape vers un DocArray plus inclusif, le développeur Johannes Messner a mis en œuvre l’intégration de Milvus.

    Comme avec d’autres magasins de documents, vous pouvez facilement instancier un DocumentArray avec stockage Milvus :

    from docarray import DocumentArray
    da = DocumentArray(storage='milvus', config={'n_dim': 10})

    Ici, config est la configuration de la nouvelle collection Milvus, et n_dim est un champ obligatoire qui spécifie la dimensionnalité des représentations vectorielles continues stockées. Le code ci-dessous montre un exemple de travail minimum avec un serveur Milvus en cours d’exécution sur localhost :

    import numpy as np
    from docarray import DocumentArray
    N, D = 5, 128
    da = DocumentArray.empty(
       N, storage='milvus', config={'n_dim': D, 'distance': 'IP'}
    )  # init
    with da:
       da.embeddings = np.random.random([N, D])
    print(da.find(np.random.random(D), limit=10))

    Pour accéder aux données persistantes d’un autre serveur, vous devez spécifier collection_name, hostet port. Cela permet aux utilisateurs de profiter de tous les avantages offerts par Milvus, grâce à l’API familière et unifiée de DocArray.

    Adopter la gouvernance ouverte

    Le terme « gouvernance ouverte » fait référence à la manière dont un projet est gouverné, c’est-à-dire comment les décisions sont prises, comment le projet est structuré et qui est responsable de quoi. Dans le contexte des logiciels open source, la “gouvernance ouverte” signifie que le projet est gouverné de manière ouverte et transparente, et que toute personne est invitée à participer à cette gouvernance.

    La gouvernance ouverte pour DocArray présente de nombreux avantages :

    • DocArray est maintenant géré démocratiquement, garantissant que chacun a son mot à dire.
    • DocArray est désormais plus accessible et inclusif, car tout le monde peut participer à la gouvernance.
    • DocArray sera de meilleure qualité, car les décisions sont prises de manière transparente et ouverte.

    L’équipe de développement prend des mesures pour adopter la gouvernance ouverte, notamment :

    • Création d’un comité de pilotage technique DocArray (TSC) pour aider à orienter le projet.
    • Ouvrir le processus de développement à davantage d’apports et de commentaires de la part de la communauté.
    • Rendre le développement de DocArray plus inclusif et accueillant pour les nouveaux contributeurs.

    Rejoignez le projet

    Si vous êtes intéressé par l’IA open source, Python ou le Big Data, vous êtes invité à suivre le projet DocArray au fur et à mesure de son développement. Si vous pensez que vous avez quelque chose à y apporter, alors rejoignez le projet. C’est une communauté en pleine croissance et ouverte à tous.


    Cet article a été initialement publié sur le Blog sur l’IA de Jina et a été republié avec autorisation.

    Source

    La Rédaction

    L'équipe rédactionnnelle du site

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code