Add optional GPU acceleration for IVF-SQ training and construction
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Área
- machine-learning, search
Línea de trabajo
El issue no nombra archivos ni pruebas; primero traza la ruta de construcción de IVF-SQ y sus límites nativos de Rust/C/Python, y después identifica las interfaces para el muestreo, el ajuste de centros, la asignación, la codificación y la serialización. Usa los criterios de aceptación para definir como completados la responsabilidad, la validación, la limpieza de errores, la paridad numérica, la validación de recuperación y la presentación de resultados de la ablación CPU/GPU.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
IVF-SQ currently fits centers, assigns vectors to partitions, and encodes residual SQ8 values on CPU. Accelerating center fitting alone leaves full-corpus assignment and encoding on the construction critical path.
I propose an optional Python cuVS/CuPy adapter, backed by backend-independent native interfaces, to accelerate both training and construction while keeping the v1 index format and existing CPU readers.
Scope
- Prepare an owned, bounded training sample using native sampling and metric preprocessing; expose the resolved parameters.
- Accept validated external IVF centers and finish residual SQ calibration in Rust.
- Export an owned encoding-model snapshot and accept validated preassigned vectors or encoded SQ8 batches.
- Provide reusable GPU workers for center fitting, exact partition assignment, and optional SQ8 encoding. Keep serialization and querying on CPU.
GPU construction should use a model calibrated with exact assignment. CPU and GPU distance calculations may choose different partitions near ties, so validation must check retrieval quality. For identical assignments, GPU encoding should reproduce native SQ8 arithmetic, including rounding, clipping, scalar tails, constant bounds, and subnormal values.
Acceptance criteria
- No mandatory CUDA dependency, change to default CPU behavior, or file-format change.
- Explicit ownership and batch validation at the Rust/C/Python boundaries; invalid batches are rejected before append.
- GPU errors propagate without a silent CPU fallback; cleanup preserves the original operation error.
- CPU CI covers native interfaces and lifecycle/error contracts. Explicit GPU tests cover L2, cosine, inner product, numerical parity, and held-out retrieval.
- Controlled ablations compare CPU construction, GPU assignment with CPU encoding, and GPU assignment with GPU encoding using the same sample and centers. Report repeated stage timings, recall, hardware, and timing boundaries.
CPU SQ calibration remains a follow-up optimization, recorded as a TODO at its implementation entry point. GPU querying, multi-GPU execution, automatic batch sizing, and an out-of-core writer are outside this proposal. Device scratch is batch-sized; the native writer still retains the complete encoded index in host memory.
The GPU adapter would initially be experimental, with broader GPU/CUDA/cuVS version coverage left for follow-up.
- Lenguaje dominante
- Rust
- Estrellas
- 25
- Forks
- 24
- Merge medio
- 3 d 6 h
- PR fusionados (30 d)
- 5
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/paimon-vector-index
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
apache/paimon-vector-index#97 · 2 comentarios ·
-
[Feature] Add CI benchmarks to compare vector index PRs with their basePosiblemente ocupada @wangzhigang1999 la tomó hace 43 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
-
Support reusing a training result across multiple vector index writersPosiblemente ocupada @wangzhigang1999 la tomó hace 49 días. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 45/100
Todos los issues de apache/paimon-vector-index
Issues similares
-
proxy: include denial_category in the "proxy request denied" log linePosiblemente ocupada @sreyas-endor la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
nolabs-ai/nono#2172 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
metasequoiaime/msime#9113 ·
Los mantenedores suelen responder en 1 día
-
area:desktop priority:p2 type:chore
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
area: supply-chain
Dificultad 1/5 Menos de una hora Aptitud para principiantes 73/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100