Repolode
michaelfeil

michaelfeil/infinity

Un motor de inferencia en Rust/LibTorch que ofrece embeddings, reranking, clasificación y decisiones tipadas mediante una API REST.

Estrellas
2,984
Forks
220
Issues abiertos
153
Último commit
anteayer

¿Qué es?

Infinity es un motor para servir modelos de embeddings de texto, reranking, clasificación y otros relacionados. Su servidor v3 está escrito en Rust y ejecuta inferencias mediante LibTorch, la interfaz de C++ de PyTorch. Los clientes se conectan por HTTP a endpoints como /v1/embeddings para obtener vectores densos, /rerank para reranking, /v1/classify para clasificación de secuencias y puntuación de recompensas, y /embed_sparse para embeddings dispersos de SPLADE.

El servidor se inicia desde una imagen de Docker y requiere una GPU NVIDIA con capacidad de cómputo SM80 (Ampere) o superior, además de NVIDIA Container Toolkit. De forma predeterminada, utiliza todas las GPU CUDA visibles y mantiene una réplica completa del modelo en cada una. También selecciona el pooling a partir de los metadatos del checkpoint. El endpoint /health indica que el servidor está listo después de cargar el modelo y completar el calentamiento, y el servidor en ejecución ofrece una página interactiva de la API en /docs.

El catálogo de modelos compatibles del proyecto incluye embeddings densos y multimodales, embeddings de vectores por token para recuperación con interacción tardía, clasificación de tokens y reconocimiento de entidades nombradas, y decisiones tipadas. Las versiones anteriores basadas en Python (v2, instaladas como infinity-emb) siguen en el mismo repositorio.

Funciones clave

  • 01Ofrece embeddings, reranking, clasificación y decisiones tipadas mediante una API REST.
  • 02Ejecuta inferencias con LibTorch en un servidor escrito en Rust.
  • 03De forma predeterminada, utiliza todas las GPU CUDA visibles y mantiene una réplica completa del modelo en cada una.
  • 04Ofrece embeddings dispersos de SPLADE y embeddings de vectores por token para recuperación con interacción tardía.
  • 05Indica que el servidor está listo después de cargar el modelo y completar el calentamiento mediante /health.

Casos de uso

  • Alojar un endpoint de embeddings para búsqueda semántica o generación aumentada por recuperación en GPU NVIDIA.
  • Añadir una etapa de reranking a un pipeline de búsqueda mediante una API HTTP.
  • Ejecutar modelos de reconocimiento de entidades nombradas o clasificación de secuencias como servicio.
  • Implementar una imagen de contenedor fijada para obtener inferencias reproducibles en GPU.

Inicio rápido

  1. 1

    Ejecuta el servidor de Infinity v3 en Docker (necesita una GPU NVIDIA, SM80 o posterior, y NVIDIA Container Toolkit).

    docker run --rm --gpus all -p 8000:8000 -v infinity-cache:/data ghcr.io/michaelfeil/infinity_v3:nvidia-3.0.0 --model-id sentence-transformers/all-MiniLM-L6-v2 --torch-device cuda --dtype bfloat16 --hostname 0.0.0.0 --port 8000
  2. 2

    Envía una solicitud de embeddings al servidor en ejecución.

    curl http://localhost:8000/v1/embeddings -H 'Content-Type: application/json' -d '{"model":"sentence-transformers/all-MiniLM-L6-v2","input":["A document about semantic search."]}'

Antes de usarlo

  • El servidor v3 utiliza una licencia personalizada de código fuente disponible (Infinity Restricted MIT License 1.0), no una licencia estándar de código abierto.
  • El inicio rápido de Docker documentado requiere una GPU NVIDIA con una capacidad de cómputo SM80 o posterior.
  • Cada GPU debe poder alojar el modelo completo, incluidos todos los expertos en los checkpoints MoE.

En colecciones

Temas

Preguntas frecuentes

¿Qué es infinity?
Un motor de inferencia en Rust/LibTorch que ofrece embeddings, reranking, clasificación y decisiones tipadas mediante una API REST. Infinity es un motor para servir modelos de embeddings de texto, reranking, clasificación y otros relacionados. Su servidor v3 está escrito en Rust y ejecuta inferencias mediante LibTorch, la interfaz de C++ de PyTorch. Los clientes se conectan por HTTP a endpoints como /v1/embeddings para obtener vectores densos, /rerank para reranking, /v1/classify para clasificación de secuencias y puntuación de recompensas, y /embed_sparse para embeddings dispersos de SPLADE.
¿infinity es gratuito? ¿Qué licencia tiene?
infinity es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿infinity sigue mantenido?
Mantenimiento activo. El último commit de infinity fue el 4 nov 2026.
¿Para qué puedo usar infinity?
Alojar un endpoint de embeddings para búsqueda semántica o generación aumentada por recuperación en GPU NVIDIA. Añadir una etapa de reranking a un pipeline de búsqueda mediante una API HTTP. Ejecutar modelos de reconocimiento de entidades nombradas o clasificación de secuencias como servicio. Implementar una imagen de contenedor fijada para obtener inferencias reproducibles en GPU.
¿Cómo se instala infinity?
Ejecuta el servidor de Infinity v3 en Docker (necesita una GPU NVIDIA, SM80 o posterior, y NVIDIA Container Toolkit).: docker run --rm --gpus all -p 8000:8000 -v infinity-cache:/data ghcr.io/michaelfeil/infinity_v3:nvidia-3.0.0 --model-id sentence-transformers/all-MiniLM-L6-v2 --torch-device cuda --dtype bfloat16 --hostname 0.0.0.0 --port 8000 Envía una solicitud de embeddings al servidor en ejecución.: curl http://localhost:8000/v1/embeddings -H 'Content-Type: application/json' -d '{"model":"sentence-transformers/all-MiniLM-L6-v2","input":["A document about semantic search."]}'
¿Dónde consigo infinity?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/michaelfeil/infinity

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados