LeapfrogAI est une plateforme d'IA auto-hébergée conçue pour être déployée dans des environnements isolés. Ce projet vise à apporter des solutions d’IA sophistiquées à des environnements aux ressources limitées, en permettant l’hébergement de tous les composants requis d’une pile d’IA.
Nos services incluent des bases de données vectorielles, des backends de modèles, des API et des interfaces utilisateur. Ces fonctionnalités sont facilement accessibles et intégrées à votre infrastructure existante, garantissant ainsi que la puissance de l'IA peut être exploitée quelles que soient les limites de votre environnement.
Les grands modèles linguistiques (LLM) constituent une ressource puissante pour la prise de décision basée sur l'IA, la génération de contenu, etc. Comment LeapfrogAI peut-il apporter l’IA à votre mission ?
Indépendance des données : l'envoi d'informations sensibles à un service tiers peut ne pas être adapté ou autorisé pour tous les types de données ou d'organisations. En hébergeant votre propre LLM, vous conservez le contrôle total sur vos données.
Évolutivité : les services d'IA payants peuvent devenir coûteux, en particulier lorsque de grands volumes de données sont impliqués et nécessitent une connectivité constante. Gérer votre propre LLM peut souvent être une solution plus rentable pour les missions de toutes tailles.
Intégration de mission : en hébergeant votre propre LLM, vous avez la possibilité de personnaliser les paramètres du modèle, les données de formation, etc., en adaptant l'IA à vos besoins spécifiques.
LeapfrogAI est construit sur Unicorn Delivery Service (UDS), l'environnement d'exécution sécurisé de Defense Unicorns, et comprend plusieurs fonctionnalités telles que :
Le référentiel LeapfrogAI suit une structure monorepo basée autour d'une API avec chacun des composants inclus dans un répertoire packages
dédié. Les bundles UDS qui gèrent le développement et les derniers déploiements de LeapfrogAI se trouvent dans le répertoire bundles
. La structure se présente comme suit :
leapfrogai/
├── src/
│ ├── leapfrogai_api/ # source code for the API
│ ├── leapfrogai_evals/ # source code for the LeapfrogAI evaluation framework
│ ├── leapfrogai_sdk/ # source code for the SDK
│ └── leapfrogai_ui/ # source code for the UI
├── packages/
│ ├── api/ # deployment infrastructure for the API
│ ├── llama-cpp-python/ # source code & deployment infrastructure for the llama-cpp-python backend
│ ├── repeater/ # source code & deployment infrastructure for the repeater model backend
│ ├── supabase/ # deployment infrastructure for the Supabase backend and postgres database
│ ├── text-embeddings/ # source code & deployment infrastructure for the text-embeddings backend
│ ├── ui/ # deployment infrastructure for the UI
│ ├── vllm/ # source code & deployment infrastructure for the vllm backend
│ └── whisper/ # source code & deployment infrastructure for the whisper backend
├── bundles/
│ ├── dev/ # uds bundles for local uds dev deployments
│ └── latest/ # uds bundles for the most current uds deployments
├── Makefile
├── pyproject.toml
├── README.md
└── ...
La méthode préférée pour exécuter LeapfrogAI est un déploiement Kubernetes local utilisant UDS.
Veuillez vous référer à la section Démarrage rapide du site Web de documentation de LeapfrogAI pour connaître la configuration système requise et les instructions.
LeapfrogAI fournit une API qui correspond étroitement à celle d'OpenAI. Cette fonctionnalité permet aux outils créés avec OpenAI/ChatGPT de fonctionner de manière transparente avec un backend LeapfrogAI.
Le SDK LeapfrogAI fournit un ensemble standard de protobufs et d'utilitaires Python pour implémenter des backends avec gRPC.
LeapfrogAI fournit une interface utilisateur prenant en charge les cas d'utilisation courants tels que le chat général et les « Questions et réponses avec vos documents ».
LeapfrogAI fournit plusieurs backends pour une variété de cas d'utilisation. Vous trouverez ci-dessous la matrice de prise en charge et de compatibilité des backends :
Back-end | AMD64 | ARM64 | CUDA | Docker | Kubernetes | UDS |
---|---|---|---|---|---|---|
lama-cpp-python | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
chuchoter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
incorporations de texte | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
vllm | ✅ | ❌1 | ✅ | ✅ | ✅ | ✅ |
Le « modèle » du répéteur est un « backend » de base qui transmet toutes les entrées qu'il reçoit à l'utilisateur. Il est construit de la même manière que tous les backends réels et il est principalement utilisé pour tester l’API.
LeapfrogAI est livré avec un cadre d'évaluation intégré à DeepEval. Pour plus d'informations sur l'exécution et l'utilisation des évaluations dans LeapfrogAI, veuillez consulter le fichier README d'Evals.
Chaque composant possède des images et des valeurs différentes qui font référence à un registre d'images spécifique et/ou à une source de renforcement spécifique. Ces images sont empaquetées à l'aide de Zarf Flavors :
upstream
: utilise les images des fournisseurs en amont provenant de registres et de référentiels de conteneurs open sourceregistry1
: utilise les images renforcées d'IronBank du registre du port Repo1Vous trouverez ci-dessous la liste actuelle des versions de composants :
Composant | upstream | registry1 |
---|---|---|
API | ✅ | ✅ |
interface utilisateur | ✅ | ? |
supabase | ✅ | ? |
migrations | ✅ | ? |
lama-cpp-python | ✅ | ? |
chuchoter | ✅ | ? |
incorporations de texte | ✅ | ? |
vllm | ✅ | ? |
vllm | ✅ | ? |
Saveurs avec des composants étiquetés comme ? ne sont pas encore disponibles en tant que déploiement de bundle de démarrage rapide. Veuillez vous référer à DEVELOPMENT.md pour obtenir des instructions sur la façon de créer le package Zarf d'un composant pour les tests locaux.
Pour créer un bundle LeapfrogAI UDS et le déployer, veuillez vous référer au site Web de documentation de LeapfrogAI. Sur le site Web de documentation, vous trouverez la configuration système requise et des instructions pour tout ce qui concerne LeapfrogAI qui n'est pas associé au développement et à la contribution locaux.
Pour contribuer au déploiement et au développement local de chaque composant dans un environnement Python ou Node.js local, veuillez passer à la section suivante.
Note
Veuillez commencer par le site Web de documentation de LeapfrogAI avant de tenter le développement local.
Chacun des composants LeapfrogAI peut également être exécuté individuellement en dehors d'un environnement Kubernetes ou conteneurisé. Ceci est utile lors du test des modifications apportées à un composant spécifique, mais ne contribuera pas à un déploiement complet de LeapfrogAI. Veuillez vous référer à la section ci-dessus pour les instructions de déploiement. Veuillez vous référer à la section suivante pour connaître les règles de contribution à LeapfrogAI.
Reportez-vous d'abord au document DEVELOPMENT.md pour les détails généraux de développement.
Reportez-vous ensuite aux README liés pour les instructions de développement local de chaque sous-répertoire individuel.
Tous les contributeurs potentiels et actuels doivent s'assurer d'avoir lu la documentation de contribution, les politiques de sécurité et le code de conduite avant d'ouvrir un problème ou une pull request vers ce référentiel.
Lorsque vous soumettez un problème ou ouvrez une PR, veuillez d'abord vous assurer que vous avez recherché votre problème potentiel ou votre PR par rapport aux problèmes et PR existants ou fermés. Les doublons perçus seront fermés, veuillez donc référencer et différencier vos contributions des problèmes et PR tangentiels ou similaires.
LeapfrogAI est soutenu par une communauté d'utilisateurs et de contributeurs, notamment :
Vous souhaitez ajouter votre organisation ou votre logo à cette liste ? Ouvrez un PR !
vLLM nécessite un PyTorch compatible CUDA conçu pour ARM64, qui n'est pas disponible via pip ou conda ↩
Le SDK n'est pas une unité fonctionnellement indépendante et ne devient une unité fonctionnelle que lorsqu'il est combiné et conditionné avec l'API et les backends en tant que dépendance. ↩
Veuillez noter que l'API et l'interface utilisateur ont des artefacts dans 2 sous-répertoires. Les sous-répertoires liés aux packages/
se concentrent sur l'empaquetage Zarf et les charts Helm, tandis que les sous-répertoires liés à src/
contiennent le code source réel et les instructions de développement. ↩ ↩ 2