[Engine] scope: should per-card weight trimming cover --layer-split auto, and on by default? (PR #4522)

Abierto
#4,541 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 3 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
cpp

Línea de trabajo

Read PR #4522 and compare its default behavior with the current --layer-split handling, especially the auto path and CUDA0. Use the reported two-card benchmarks and rounding comparison to assess the tradeoff between enabling trimming by default and keeping it opt-in. Done means settling the default and updating the PR accordingly; the issue identifies no files or tests.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Main already trims each card's dense weights to its own layer range with an explicit --layer-split (opt-in, off by default), so the common path - --layer-split auto, which the app uses - never trims, and CUDA0 never trims at all. PR #4522 extends it there: every card including the first reloads only its own layers' weights, and the freed VRAM goes to the expert cache.

The scope question is the default. Measured on RTX 5080 + RTX 4060 Ti / 32 GB (Swift 1.5 IQ2_XS, 64K, q4_0 KV, same prompts, engine-log rates): expert cache 6812 -> 8021 slots on CUDA0, decode 33.9-38.8 -> 52.0 tok/s (+34 to +53%). The fork the implementation comes from (Strata-DualGPU, #642) ships it on by default; #639 proposed the same idea for explicit splits.

Two options:

  • on by default (as in the PR, as in the fork): every two-card auto user gets the faster placement without a flag; the placement changes, which changes the last bits of expert rounding (the fork's author measured perplexity 7.28 vs 7.24 and the same top token at 93.9% of positions over 5,333 teacher-forced tokens);
  • opt-in (--trim-stage-weights, like today's explicit-split switch): the default path stays byte-identical to the last release, users opt in; the app would need to pass the flag for its users to benefit.

Happy with either - if opt-in is preferred I will flip the PR's default and keep the rest. Tradeoffs above; the measurements stand either way.

Lenguaje dominante
C++
Estrellas
11.6k
Forks
1k
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

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 Niko1221/Strata

Todos los issues de Niko1221/Strata

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.