Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Add optional GPU acceleration for IVF-SQ training and construction

Abierto
#100 0 comentarios 0 reacciones 0 asignados Ver en GitHub

@TheR1sing3un ya está trabajando en esto.

Desde el 11/9/2026.

  • #101 de @TheR1sing3un — abierto

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
Stack tecnológico
python, rust

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

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/paimon-vector-index

Todos los issues de apache/paimon-vector-index

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.