LeapfrogAI é uma plataforma de IA auto-hospedada projetada para ser implantada em ambientes isolados. Este projeto visa trazer soluções sofisticadas de IA para ambientes isolados e com recursos limitados, permitindo a hospedagem de todos os componentes necessários de uma pilha de IA.
Nossos serviços incluem bancos de dados vetoriais, backends de modelo, API e UI. Esses recursos podem ser facilmente acessados e integrados à sua infraestrutura existente, garantindo que o poder da IA possa ser aproveitado independentemente das limitações do seu ambiente.
Large Language Models (LLMs) são um recurso poderoso para tomada de decisão baseada em IA, geração de conteúdo e muito mais. Como o LeapfrogAI pode trazer IA para sua missão?
Independência de dados : o envio de informações confidenciais a um serviço de terceiros pode não ser adequado ou permitido para todos os tipos de dados ou organizações. Ao hospedar seu próprio LLM, você mantém controle total sobre seus dados.
Escalabilidade : os serviços de IA pré-pagos podem se tornar caros, especialmente quando grandes volumes de dados estão envolvidos e exigem conectividade constante. Administrar seu próprio LLM muitas vezes pode ser uma solução mais econômica para missões de todos os tamanhos.
Integração da Missão : Ao hospedar seu próprio LLM, você tem a capacidade de personalizar os parâmetros do modelo, dados de treinamento e muito mais, adaptando a IA às suas necessidades específicas.
O LeapfrogAI foi desenvolvido com base no Unicorn Delivery Service (UDS), ambiente de tempo de execução seguro do Defense Unicorns, e inclui vários recursos, como:
O repositório LeapfrogAI segue uma estrutura monorepo baseada em uma API com cada um dos componentes incluídos em um diretório packages
dedicado. Os pacotes UDS que cuidam do desenvolvimento e das implantações mais recentes do LeapfrogAI estão no diretório bundles
. A estrutura é a seguinte:
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
└── ...
O método preferido para executar o LeapfrogAI é uma implantação local do Kubernetes usando UDS.
Consulte a seção Quick Start do site de documentação do LeapfrogAI para obter instruções e requisitos do sistema.
LeapfrogAI fornece uma API que se aproxima da OpenAI. Esse recurso permite que ferramentas que foram criadas com OpenAI/ChatGPT funcionem perfeitamente com um backend LeapfrogAI.
O LeapfrogAI SDK fornece um conjunto padrão de protobufs e utilitários Python para implementação de back-ends com gRPC.
O LeapfrogAI fornece uma UI com suporte para casos de uso comuns, como bate-papo geral e "Perguntas e respostas com seus documentos".
O LeapfrogAI fornece vários back-ends para diversos casos de uso. Abaixo está a matriz de suporte e compatibilidade de backends:
Back-end | AMD64 | ARM64 | CUDA | Docker | Kubernetes | UDS |
---|---|---|---|---|---|---|
lhama-cpp-python | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
sussurrar | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
incorporações de texto | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
vllm | ✅ | ❌1 | ✅ | ✅ | ✅ | ✅ |
O "modelo" do repetidor é um "backend" básico que reproduz todas as entradas que recebe de volta ao usuário. Ele é construído da mesma forma que todos os back-ends reais e é usado principalmente para testar a API.
O LeapfrogAI vem com uma estrutura de avaliação integrada ao DeepEval. Para obter mais informações sobre como executar e utilizar avaliações no LeapfrogAI, consulte o README do Evals.
Cada componente possui imagens e valores diferentes que se referem a um registro de imagem específico e/ou fonte de proteção. Estas imagens são empacotadas usando Zarf Flavors:
upstream
: usa imagens de fornecedores upstream de registros e repositórios de contêineres de código abertoregistry1
: usa imagens reforçadas do IronBank do registro do porto Repo1Abaixo está a lista atual de sabores de componentes:
Componente | upstream | registry1 |
---|---|---|
API | ✅ | ✅ |
interface do usuário | ✅ | ? |
supabase | ✅ | ? |
migrações | ✅ | ? |
lhama-cpp-python | ✅ | ? |
sussurrar | ✅ | ? |
incorporações de texto | ✅ | ? |
vllm | ✅ | ? |
vllm | ✅ | ? |
Sabores com algum componente rotulado como? ainda não estão disponíveis como implantação de pacote de início rápido. Consulte DEVELOPMENT.md para obter instruções sobre como construir um pacote Zarf de componente para testes locais.
Para construir um pacote LeapfrogAI UDS e implantá-lo, consulte o site de documentação do LeapfrogAI. No site de documentação, você encontrará requisitos de sistema e instruções para todas as coisas do LeapfrogAI que não estão associadas ao desenvolvimento e contribuição local.
Para contribuição e implantação e desenvolvimento local para cada componente em um ambiente local Python ou Node.js, continue na próxima seção.
Observação
Comece com o site de documentação do LeapfrogAI antes de tentar o desenvolvimento local
Cada um dos componentes do LeapfrogAI também pode ser executado individualmente fora de um ambiente Kubernetes ou Containerized. Isso é útil ao testar alterações em um componente específico, mas não ajudará na implantação completa do LeapfrogAI. Consulte a seção acima para obter instruções de implantação. Consulte a próxima seção para conhecer as regras sobre como contribuir para o LeapfrogAI.
Primeiro consulte o documento DEVELOPMENT.md para detalhes gerais de desenvolvimento.
Em seguida, consulte os READMEs vinculados para obter as instruções de desenvolvimento local de cada subdiretório individual.
Todos os contribuidores potenciais e atuais devem garantir que leram a documentação de contribuição, as políticas de segurança e o código de conduta antes de abrir um problema ou pull request para este repositório.
Ao enviar um problema ou abrir um PR, primeiro certifique-se de ter pesquisado seu problema ou PR potencial em relação aos problemas e PRs existentes ou encerrados. As duplicatas percebidas serão fechadas, portanto, faça referência e diferencie suas contribuições de questões e PRs tangenciais ou semelhantes.
O LeapfrogAI é apoiado por uma comunidade de usuários e colaboradores, incluindo:
Quer adicionar sua organização ou logotipo a esta lista? Abra um PR!
vLLM requer um PyTorch habilitado para CUDA construído para ARM64, que não está disponível via pip ou conda ↩
O SDK não é uma unidade funcionalmente independente e só se torna uma unidade funcional quando combinado e empacotado com a API e back-ends como uma dependência. ↩
Esteja ciente de que a API e a IU possuem artefatos em 2 subdiretórios. Os subdiretórios relacionados a packages/
concentram-se no empacotamento do Zarf e nos gráficos do Helm, enquanto os subdiretórios relacionados a src/
contêm o código-fonte real e as instruções de desenvolvimento. ↩ ↩ 2