SAS Inference Engine es una biblioteca C++ standalone diseñada para inferencia eficiente de modelos de IA en aplicaciones nativas. Originalmente desarrollada para el proyecto Segment Anything Suite, proporciona una interfaz unificada que abstrae las diferencias entre distintos backends de inferencia y plataformas hardware.
Modelos y Pipelines Soportados
- SAMPipeline (SAM2, SAM3): Segmentación interactiva con puntos y cajas, generación automática de máscaras.
- FlorencePipeline (Florence-2): Subtitulado, detección de objetos, OCR y detección de vocabulario abierto.
- WanPipeline (WAN 2.2 VACE): Generación texto-a-vídeo, imagen-a-vídeo y vídeo-a-vídeo.
- QwenTTSPipeline (Qwen3-TTS): Síntesis de voz con voces personalizadas, diseño de voz y clonación.
Capacidades del Motor
- Grafos de computación: Construye pipelines complejos como DAGs con caché automático.
- Multi-backend: ONNX Runtime, LibTorch (TorchScript) y worker Python embebido.
- Multiplataforma: Windows, macOS (Intel y Apple Silicon), Linux.
- Aceleración hardware: CUDA, Metal (MPS), DirectML, CPU como fallback.
- Gestión de memoria: Descarga automática de modelos y optimización de GPU.
- Caché de embeddings: Reutiliza salidas del encoder para flujos de trabajo interactivos.
Modos de Inferencia
- Simple: Paso forward directo para inferencia estándar.
- Multipaso: Múltiples pasos con jitter y agregación para mejora de calidad.
- Segmentado (SAHI): Divide y vencerás con NMS para imágenes de alta resolución.
Ejemplo de Uso (SAM)
#include <sas_engine/pipelines/sam_pipeline.h>
SAMPipelineConfig config;
config.modelType = SAMModelType::SAM2_Large;
config.useHalfPrecision = true;
SAMPipeline pipeline(config);
pipeline.loadModel();
pipeline.setImage(image);
SAMPrompt prompt;
prompt.addPoint(512, 384, SAMPrompt::PointLabel::Foreground);
auto result = pipeline.segment(prompt);
Compilación
git clone https://github.com/segment-anything-suite/sas-inference-engine.git
cd sas-inference-engine
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . -j$(nproc)
Requisitos
- CMake 3.18+, compilador C++17 (GCC 9+, Clang 10+, MSVC 2019+)
- ONNX Runtime 1.17+ (descarga automática si no se encuentra)
- Python 3.10+ (para el worker Python)