RecursionError when initializing KumoTabular with pretrained=True after #1153
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 74/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Área
- machine-learning
Línea de trabajo
Empieza en sdm/models/kumo/tabular/model.py, en el constructor de KumoTabular alrededor de la línea 139, donde la rama pretrained asigna self.models[task] a partir de _load_from_pretrained(), y lee ese método para confirmar que devuelve self y que carga los pesos en su lugar. Elimina la asignación para que la llamada solo cargue los pesos, y luego construye el modelo con pretrained=True para confirmar que self.eval() se completa. Está terminado cuando esa construcción se realiza sin un RecursionError; también deberían pasar los tests existentes del modelo tabular.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
Initializing KumoTabular with pretrained=True raises a
RecursionError during the constructor's self.eval() call.
This appears to be a regression introduced by #1153.
Reproduction
model = sdm.models.KumoTabular(
task="classification",
size="large",
pretrained=True,
device=device,
)
Actual behavior
Initialization fails with:
File sdm/models/kumo/tabular/model.py:139, in KumoTabular.__init__
self.eval()
File torch/nn/modules/module.py, in Module.eval
return self.train(False)
RecursionError: maximum recursion depth exceeded
Expected behavior
The pretrained model should initialize successfully in evaluation mode.
Suspected cause
#1153 changed _load_from_pretrained() to return self rather than
an individual task model, but the constructor still assigns its return
value to a child module:
self.models[task] = self._load_from_pretrained(size, device=device)
This effectively executes self.models[task] = self, creating a circular
module reference:
KumoTabular -> models -> KumoTabular
The subsequent self.eval() recursively traverses this cycle.
Suggested fix
Remove the assignment in the constructor:
if pretrained:
- self.models[task] = self._load_from_pretrained(size, device=device)
+ self._load_from_pretrained(size, device=device)
The loader already loads the weights into each task model in place via
model.load_state_dict(ckpt, assign=True).
Environment
- Python: 3.12
- Installation: local source checkout
- Related PR: #1153
- Lenguaje dominante
- Python
- Estrellas
- 358
- Forks
- 33
- Merge medio
- 1 d 7 h
- PR fusionados (30 d)
- 182
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 NVIDIA/structured-data-models
-
Kumo-Tabular weights unreachable behind restrictive egress proxies (Xet + plain HTTP both fail)Posiblemente ocupada @JGagacheva la tomó hace 3 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
NVIDIA/structured-data-models#1091 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
NIM errorAbierto
Dificultad 4/5 1-3 horas Aptitud para principiantes 15/100
NVIDIA/structured-data-models#1136 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
NVIDIA/structured-data-models#1071 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 32/100
NVIDIA/structured-data-models#1022 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 42/100
NVIDIA/structured-data-models#947 · 1 reacción ·
Los mantenedores suelen responder en 1 día
Todos los issues de NVIDIA/structured-data-models
Issues similares
-
area:core-platform effort:S priority:P3 status:in-review type:test
Dificultad 2/5 Menos de una hora Aptitud para principiantes 80/100
randomparity/kdive#3246 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Requantification library converts m/z to mass with the hydrogen-atom mass instead of the proton massAbiertobug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
nf-core/metaboigniter#130 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
common-workflow-language/cwl-utils#477 ·
Los mantenedores suelen responder en 1 día
-
Add dependabotAbiertofeat
Dificultad 2/5 Menos de una hora Aptitud para principiantes 72/100
open-nudge/opentemplate#204 ·
Los mantenedores suelen responder en 1 día
-
github-stale-ci-pr-closer: KV state is double-wrapped, never persists, and hits the depth-32 limitPosiblemente ocupada @VascoSch92 la tomó hoy. Abiertopriority:medium ready-for-dev
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
OpenHands/extensions#781 ·
Los mantenedores suelen responder en 1 día