LeapfrogAI es una plataforma de IA autohospedada diseñada para implementarse en entornos aislados. Este proyecto tiene como objetivo llevar soluciones sofisticadas de IA a entornos con recursos limitados y sin aire, permitiendo alojar todos los componentes necesarios de una pila de IA.
Nuestros servicios incluyen bases de datos vectoriales, backends de modelos, API y UI. Se puede acceder fácilmente a estas capacidades e integrarlas con su infraestructura existente, lo que garantiza que se pueda aprovechar el poder de la IA independientemente de las limitaciones de su entorno.
Los modelos de lenguaje grande (LLM) son un recurso poderoso para la toma de decisiones impulsada por IA, la generación de contenido y más. ¿Cómo puede LeapfrogAI incorporar la IA a su misión?
Independencia de datos : el envío de información confidencial a un servicio de terceros puede no ser adecuado o permisible para todo tipo de datos u organizaciones. Al alojar su propio LLM, conserva el control total sobre sus datos.
Escalabilidad : Los servicios de IA de pago por uso pueden resultar costosos, especialmente cuando se trata de grandes volúmenes de datos que requieren conectividad constante. Ejecutar su propio LLM a menudo puede ser una solución más rentable para misiones de todos los tamaños.
Integración de la misión : al albergar su propio LLM, tiene la capacidad de personalizar los parámetros del modelo, los datos de entrenamiento y más, adaptando la IA a sus necesidades específicas.
LeapfrogAI se basa en Unicorn Delivery Service (UDS), el entorno de ejecución seguro de Defense Unicorns, e incluye varias características como:
El repositorio de LeapfrogAI sigue una estructura monorepo basada en una API con cada uno de los componentes incluidos en un directorio packages
dedicado. Los paquetes UDS que manejan el desarrollo y las últimas implementaciones de LeapfrogAI se encuentran en el directorio bundles
. La estructura queda de la siguiente manera:
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
└── ...
El método preferido para ejecutar LeapfrogAI es una implementación local de Kubernetes utilizando UDS.
Consulte la sección Inicio rápido del sitio web de documentación de LeapfrogAI para conocer los requisitos e instrucciones del sistema.
LeapfrogAI proporciona una API que se asemeja mucho a la de OpenAI. Esta característica permite que las herramientas que se han creado con OpenAI/ChatGPT funcionen perfectamente con un backend de LeapfrogAI.
El SDK de LeapfrogAI proporciona un conjunto estándar de protobufs y utilidades de Python para implementar backends con gRPC.
LeapfrogAI proporciona una interfaz de usuario compatible con casos de uso comunes, como chat general y "Preguntas y respuestas con sus documentos".
LeapfrogAI proporciona varios backends para una variedad de casos de uso. A continuación se muestra la matriz de compatibilidad y soporte de backends:
backend | AMD64 | ARM64 | CUDA | Estibador | Kubernetes | UDS |
---|---|---|---|---|---|---|
llama-cpp-python | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
susurro | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
incrustaciones de texto | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
vllm | ✅ | ❌ 1 | ✅ | ✅ | ✅ | ✅ |
El "modelo" repetidor es un "backend" básico que repite todas las entradas que recibe al usuario. Está construido de la misma manera que todos los backends reales y se utiliza principalmente para probar la API.
LeapfrogAI viene con un marco de evaluación integrado con DeepEval. Para obtener más información sobre cómo ejecutar y utilizar evaluaciones en LeapfrogAI, consulte Evals README.
Cada componente tiene diferentes imágenes y valores que hacen referencia a un registro de imágenes específico y/o a una fuente de protección. Estas imágenes están empaquetadas con Zarf Flavors:
upstream
: utiliza imágenes de proveedores ascendentes de registros y repositorios de contenedores de código abiertoregistry1
: utiliza imágenes reforzadas de IronBank del registro del puerto Repo1A continuación se muestra la lista de tipos de componentes actuales:
Componente | upstream | registry1 |
---|---|---|
API | ✅ | ✅ |
interfaz de usuario | ✅ | ? |
supabase | ✅ | ? |
migraciones | ✅ | ? |
llama-cpp-python | ✅ | ? |
susurro | ✅ | ? |
incrustaciones de texto | ✅ | ? |
vllm | ✅ | ? |
vllm | ✅ | ? |
¿Sabores con algún componente etiquetado como? aún no están disponibles como implementación de paquete de inicio rápido. Consulte DEVELOPMENT.md para obtener instrucciones sobre cómo crear el paquete Zarf de un componente para realizar pruebas locales.
Para crear un paquete UDS de LeapfrogAI e implementarlo, consulte el sitio web de documentación de LeapfrogAI. En el sitio web de documentación, encontrará requisitos del sistema e instrucciones para todo lo relacionado con LeapfrogAI que no esté asociado con el desarrollo y la contribución local.
Para contribuir con la implementación y el desarrollo local de cada componente en un entorno local de Python o Node.js, continúe con la siguiente sección.
Nota
Comience con el sitio web de documentación de LeapfrogAI antes de intentar el desarrollo local.
Cada uno de los componentes de LeapfrogAI también se puede ejecutar individualmente fuera de un entorno Kubernetes o en contenedores. Esto es útil cuando se prueban cambios en un componente específico, pero no ayudará en una implementación completa de LeapfrogAI. Consulte la sección anterior para obtener instrucciones de implementación. Consulte la siguiente sección para conocer las reglas sobre cómo contribuir a LeapfrogAI.
Primero consulte el documento DEVELOPMENT.md para obtener detalles generales del desarrollo.
Luego consulte los archivos README vinculados para obtener las instrucciones de desarrollo local de cada subdirectorio individual.
Todos los contribuyentes actuales y potenciales deben asegurarse de haber leído la documentación de contribución, las políticas de seguridad y el código de conducta antes de abrir una incidencia o una solicitud de extracción a este repositorio.
Al enviar un problema o abrir un PR, primero asegúrese de haber buscado su posible problema o PR en comparación con los problemas y PR existentes o cerrados. Se cerrarán los duplicados percibidos, así que haga referencia y diferencie sus contribuciones de cuestiones y relaciones públicas tangenciales o similares.
LeapfrogAI cuenta con el respaldo de una comunidad de usuarios y contribuyentes, que incluye:
¿Quiere agregar su organización o logotipo a esta lista? ¡Abre un PR!
vLLM requiere un PyTorch habilitado para CUDA creado para ARM64, que no está disponible a través de pip o conda ↩
El SDK no es una unidad funcionalmente independiente y solo se convierte en una unidad funcional cuando se combina y empaqueta con la API y los backends como una dependencia. ↩
Tenga en cuenta que la API y la UI tienen artefactos en 2 subdirectorios. Los subdirectorios relacionados con packages/
se centran en el empaquetado de Zarf y los gráficos de Helm, mientras que los subdirectorios relacionados con src/
contienen el código fuente real y las instrucciones de desarrollo. ↩ ↩ 2