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 →
RepoRadar