Infinity: REST API для обслуживания текстовых эмбеддингов и моделей

Infinity: REST API для обслуживания текстовых эмбеддингов и моделей

Infinity — это высокопроизводительный REST API для обслуживания текстовых эмбеддингов и моделей переоценки. Он предназначен для разработчиков, которым нужно быстро и эффективно интегрировать модели из HuggingFace, включая клипов, классов и колпали, в свои приложения.

Основное отличие Infinity от других решений — это возможность использования множества мощных бэкендов для вывода, таких как PyTorch с поддержкой ONNX и TensorRT, что обеспечивает низкую задержку и высокую производительность. Проект будет полезен тем, кто работает с моделями машинного обучения и необходимость быстрой обработки большого объема данных.

Infinity написан на Python и предоставляет гибкие возможности развертывания и обслуживания моделей. Для запуска достаточно установить проект и настроить его на своем сервере с поддержкой CUDA или других платформ. Имей в виду, что в основном используется собственная лицензия Infinity Restricted MIT 1.0, что может ограничивать использование в коммерческих проектах.

Проект Infinity — это высокопроизводительный REST API для работы с текстовыми embeddings и моделями, такими как reranking, clip и colpali. Он разработан на Python и лицензирован под MIT License.

Основные особенности

  • Разворачивай модели из HuggingFace: Поддерживает развертывание моделей для вычисления embeddings, reranking и sentence-transformers.
  • Быстрая обработка: API построен с использованием таких технологий, как PyTorch и ONNX, что позволяет использовать GPU на платформах NVIDIA и AMD.
  • Поддержка множества моделей: Имеет возможность запускать несколько моделей одновременно и комбинировать их.
  • Легкость использования: Построен на основе FastAPI, что делает настройку и использование API интуитивно понятным.
  • Документация: Обширная документация доступна для ознакомления и запуска проекта.

Установка и запуск

Существует два способа установки Infinity:

1. Установка через pip

pip install infinity-emb[all]

После установки с помощью pip, можно запустить CLI:

infinity_emb v2 --model-id BAAI/bge-small-en-v1.5

2. Использование Docker

Рекомендуется запускать проект через предустановленный Docker-контейнер:

docker run -it --gpus all \
 -v $PWD/data:/app/.cache \
 -p 7997:7997 \
 michaelf34/infinity:latest \
 v2 \
 --model-id michaelfeil/bge-small-en-v1.5 \
 --port 7997

Для работы в Docker необходимо установить nvidia-docker и активировать его с флагом --gpus all.

Как использовать

Infinity поддерживает множество задач:

  • Text Embeddings: Получение векторных представлений текста для поиска и кластеризации.
  • Reranking: Проведение переоценки списка документов в зависимости от их релевантности к запросу.
  • Мультимодальная обработка: Позволяет использовать одновременно текстовые, визуальные и аудио embeddings.

Существует возможность работы через Python API, что предоставляет дополнительную гибкость. Вот пример использования:

import asyncio
from infinity_emb import AsyncEngineArray, EngineArgs, AsyncEmbeddingEngine

sentences = ["Embed this sentence."]
array = AsyncEngineArray.from_args([
    EngineArgs(model_name_or_path="BAAI/bge-small-en-v1.5")
])

async def embed_text(engine: AsyncEmbeddingEngine):
    async with engine:
        embeddings, usage = await engine.embed(sentences=sentences)

asyncio.run(embed_text(array[0]))

Ограничения

Некоторые модельные контейнеры (например, для ROCm или Docker с поддержкой ONNX) не всегда могут быть полностью совместимы с CI/CD и требуют внимательного управления версиями. Также, при использовании различных моделей может иметь место необходимость настройки параметров в зависимости от специфики задачи.

Документация

Для получения дополнительной информации и начала работы с Infinity, загляни в документацию. После запуска API, доступен Swagger UI для тестирования API эндпойнтов.

Открыть на GitHub: michaelfeil/infinity →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте