Aana SDK : un outil open source pour faciliter le déploiement de modèles d'IA multimodaux

Introduction générale

Aana SDK est un framework open source développé par Mobius Labs, nommé d'après le mot malayalam "ആന" (éléphant). Il aide les développeurs à déployer et à gérer rapidement des modèles d'IA multimodaux qui prennent en charge le traitement du texte, des images, de l'audio et de la vidéo, entre autres données.Aana SDK est basé sur le cadre informatique distribué Ray et est conçu pour la fiabilité, l'évolutivité et l'efficacité. Les développeurs peuvent l'utiliser pour créer facilement des applications, qu'elles soient autonomes ou groupées, telles que la transcription de vidéos, la description d'images ou des outils de chat intelligents.

Aana SDK:简易部署多模态AI模型的开源工具

 

Liste des fonctions

  • Prise en charge des données multimodales : capacité à traiter simultanément du texte, des images, du son et de la vidéo.
  • Déploiement et mise à l'échelle des modèles : les modèles d'apprentissage automatique peuvent être déployés sur une seule machine ou sur une grappe.
  • API générées automatiquement : créer et valider automatiquement des API basées sur des points d'extrémité définis.
  • Sortie en continu en temps réel : prend en charge les résultats en continu pour les applications en temps réel et les modèles linguistiques de grande taille.
  • Types de données prédéfinis : prise en charge intégrée des types de données courants tels que les images, les vidéos, etc.
  • File d'attente des tâches en arrière-plan : les tâches des points d'extrémité s'exécutent automatiquement en arrière-plan sans configuration supplémentaire.
  • Intégration de plusieurs modèles : Whisper, vLLM, Hugging Face Transformers, etc. sont pris en charge.
  • Génération automatique de la documentation : Générer automatiquement la documentation de l'application en fonction des points d'extrémité.

 

Utiliser l'aide

Processus d'installation

Il y a deux façons d'installer Aana SDK, PyPI et GitHub, voici les étapes :

  1. Préparation de l'environnement
    • Nécessite Python 3.8 ou une version ultérieure.
    • Il est recommandé d'installer PyTorch manuellement (>= 2.1), en choisissant la version appropriée pour votre système (voir https://pytorch.org/get-started/locally/). Sinon, l'installation par défaut risque de ne pas tirer pleinement parti du GPU.
    • Si vous utilisez un GPU, il est recommandé d'installer la bibliothèque Flash Attention pour améliorer les performances (voir https://github.com/Dao-AILab/flash-attention).
  2. Installation via PyPI
    • Exécutez la commande suivante pour installer les dépendances de base :
      pip install aana
      
    • Pour une fonctionnalité complète, installez toutes les dépendances supplémentaires :
      pip install aana[all]
      
    • Les autres options sont les suivantes vllm(Modélisation linguistique),asr(reconnaissance vocale),transformers(modèle de convertisseur), etc., selon les besoins.
  3. Installation via GitHub
    • Entrepôt de clonage :
      git clone https://github.com/mobiusml/aana_sdk.git
      cd aana_sdk
      
    • Installer en utilisant Poetry (Poetry >= 2.0 recommandé, voir https://python-poetry.org/docs/#installation) :
      poetry install --extras all
      
    • Les environnements de développement peuvent ajouter des dépendances de test :
      poetry install --extras all --with dev,tests
      
  4. Vérifier l'installation
    • importation python -c "import aana; print(aana.__version__)"Si le numéro de version est renvoyé, l'opération réussit.

Comment l'utiliser

Au cœur du SDK d'Aana se trouvent les déploiements et les points de terminaison. Les Deployments chargent le modèle et les Endpoints définissent la fonctionnalité. Voici un exemple de transcription vidéo :

  1. Création d'une nouvelle application
  2. Déploiement de la configuration
    • existent app.py Chargement Chuchotement Modèles :
      from aana.sdk import AanaSDK
      from aana.deployments.whisper_deployment import WhisperDeployment, WhisperConfig, WhisperModelSize, WhisperComputeType
      app = AanaSDK(name="video_app")
      app.register_deployment(
      "whisper",
      WhisperDeployment.options(
      num_replicas=1,
      ray_actor_options={"num_gpus": 0.25},  # 若无GPU可删除此行
      user_config=WhisperConfig(
      model_size=WhisperModelSize.MEDIUM,
      compute_type=WhisperComputeType.FLOAT16
      ).model_dump(mode="json")
      )
      )
      
  3. Définir les points finaux
    • Ajouter des points d'aboutissement de la transcription :
      from aana.core.models.video import VideoInput
      @app.aana_endpoint(name="transcribe_video")
      async def transcribe_video(self, video: VideoInput):
      audio = await self.download(video.url)  # 下载并提取音频
      transcription = await self.whisper.transcribe(audio)  # 转录
      return {"transcription": transcription}
      
  4. Exécution de l'application
    • S'exécute dans le terminal :
      python app.py serve
      
    • ou à l'aide de l'interface de programmation (CLI) d'Aana :
      aana deploy app:app --host 127.0.0.1 --port 8000
      
    • Au démarrage de l'application, l'adresse par défaut est http://127.0.0.1:8000.
  5. fonction de test
    • Envoie une requête en utilisant cURL :
      curl -X POST http://127.0.0.1:8000/transcribe_video -F body='{"url":"https://www.youtube.com/watch?v=VhJFyyukAzA"}'
      
    • Ou visitez l'interface utilisateur Swagger (http://127.0.0.1:8000/docs) Test.

Fonction en vedette Fonctionnement

  • traitement multimodal
    En plus de la transcription de la parole, des modèles d'images (par exemple Blip2) peuvent être intégrés pour générer des descriptions :

    captions = await self.blip2.generate_captions(video.frames)
  • sortie en continu
    Permet de renvoyer les résultats en temps réel, par exemple :

    @app.aana_endpoint(name="chat", streaming=True)
    async def chat(self, question: str):
    async for chunk in self.llm.generate_stream(question):
    yield chunk
    
  • Extension de la grappe
    Pour déployer avec un cluster Ray, modifiez app.connect() Il suffit de spécifier l'adresse du cluster.

Outils supplémentaires

  • Tableau de bord de RayAccès après la course http://127.0.0.1:8265Le système d'information sur les clusters permet d'afficher l'état et les journaux des clusters.
  • Déploiement DockerVoir https://mobiusml.github.io/aana_sdk/pages/docker/.

 

scénario d'application

  1. Collation du contenu vidéo
    Générer des sous-titres et des résumés pour les vidéos pédagogiques afin de faciliter l'archivage et la recherche.
  2. système intelligent de questions et réponses (Q&R)
    L'utilisateur télécharge une vidéo, puis pose une question à laquelle le système répond en se basant sur le contenu audio et vidéo.
  3. Analyse des données d'entreprise
    Extraire des informations clés des enregistrements de réunions et des vidéos pour générer des rapports.

 

QA

  1. Besoin d'un GPU ?
    Ce n'est pas obligatoire ; l'unité centrale peut également fonctionner, mais le GPU (40 Go de RAM recommandés) améliorera considérablement l'efficacité.
  2. Comment gérer les erreurs d'installation ?
    Vérifiez la version de Python et les correspondances de dépendances en ajoutant l'option --log-level DEBUG Afficher les journaux détaillés.
  3. Quels sont les modèles linguistiques pris en charge ?
    vLLM, Whisper, etc. intégrés pour une meilleure intégration du modèle Hugging Face par le biais des Transformers.
© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...