Commit
·
2169e97
1
Parent(s):
2161eb0
get layers from model
Browse files
cognitive_mapping_probe/llm_iface.py
CHANGED
|
@@ -59,37 +59,44 @@ class LLM:
|
|
| 59 |
def _populate_stable_config(self) -> StableLLMConfig:
|
| 60 |
"""
|
| 61 |
Liest die volatile `transformers`-Konfiguration aus und befüllt unsere stabile Datenklasse.
|
| 62 |
-
Implementiert eine robuste,
|
| 63 |
"""
|
| 64 |
# --- Robuste Methode für hidden_dim ---
|
|
|
|
| 65 |
try:
|
| 66 |
hidden_dim = self.model.get_input_embeddings().weight.shape[1]
|
| 67 |
except AttributeError:
|
| 68 |
hidden_dim = getattr(self.config, 'hidden_size', getattr(self.config, 'd_model', 0))
|
| 69 |
|
| 70 |
-
# ---
|
| 71 |
num_layers = 0
|
| 72 |
try:
|
| 73 |
-
# METHODE 1 (BESTE): Direkte Inspektion der Architektur
|
| 74 |
-
|
| 75 |
-
|
|
|
|
| 76 |
num_layers = len(self.model.model.layers)
|
| 77 |
-
# Fallback für Architekturen, die die Layer anders benennen (z.B. model.transformer.h)
|
| 78 |
elif hasattr(self.model, 'transformer') and hasattr(self.model.transformer, 'h'):
|
| 79 |
num_layers = len(self.model.transformer.h)
|
| 80 |
except (AttributeError, TypeError):
|
| 81 |
-
# Wenn die direkte Inspektion fehlschlägt, was unwahrscheinlich ist,
|
| 82 |
-
# fahre mit der alten Methode fort.
|
| 83 |
pass
|
| 84 |
|
| 85 |
if num_layers == 0:
|
| 86 |
# METHODE 2 (FALLBACK): Inspektion der deklarativen Config-Datei.
|
| 87 |
-
# Dies ist weniger robust, aber ein guter zweiter Versuch.
|
| 88 |
num_layers = getattr(self.config, 'num_hidden_layers', getattr(self.config, 'num_layers', 0))
|
| 89 |
|
| 90 |
-
#
|
| 91 |
-
|
| 92 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 93 |
|
| 94 |
dbg(f"Populated stable config: hidden_dim={hidden_dim}, num_layers={num_layers}")
|
| 95 |
return StableLLMConfig(hidden_dim=hidden_dim, num_layers=num_layers)
|
|
|
|
| 59 |
def _populate_stable_config(self) -> StableLLMConfig:
|
| 60 |
"""
|
| 61 |
Liest die volatile `transformers`-Konfiguration aus und befüllt unsere stabile Datenklasse.
|
| 62 |
+
Implementiert eine robuste, mehrstufige Fallback-Strategie und eine auto-diagnostische Fehlerbehandlung.
|
| 63 |
"""
|
| 64 |
# --- Robuste Methode für hidden_dim ---
|
| 65 |
+
hidden_dim = 0
|
| 66 |
try:
|
| 67 |
hidden_dim = self.model.get_input_embeddings().weight.shape[1]
|
| 68 |
except AttributeError:
|
| 69 |
hidden_dim = getattr(self.config, 'hidden_size', getattr(self.config, 'd_model', 0))
|
| 70 |
|
| 71 |
+
# --- Robuste Methode für num_layers ---
|
| 72 |
num_layers = 0
|
| 73 |
try:
|
| 74 |
+
# METHODE 1 (BESTE): Direkte Inspektion der Architektur basierend auf empirischer Evidenz.
|
| 75 |
+
if hasattr(self.model, 'model') and hasattr(self.model.model, 'language_model') and hasattr(self.model.model.language_model, 'layers'):
|
| 76 |
+
num_layers = len(self.model.model.language_model.layers)
|
| 77 |
+
elif hasattr(self.model, 'model') and hasattr(self.model.model, 'layers'):
|
| 78 |
num_layers = len(self.model.model.layers)
|
|
|
|
| 79 |
elif hasattr(self.model, 'transformer') and hasattr(self.model.transformer, 'h'):
|
| 80 |
num_layers = len(self.model.transformer.h)
|
| 81 |
except (AttributeError, TypeError):
|
|
|
|
|
|
|
| 82 |
pass
|
| 83 |
|
| 84 |
if num_layers == 0:
|
| 85 |
# METHODE 2 (FALLBACK): Inspektion der deklarativen Config-Datei.
|
|
|
|
| 86 |
num_layers = getattr(self.config, 'num_hidden_layers', getattr(self.config, 'num_layers', 0))
|
| 87 |
|
| 88 |
+
# --- NEU: Automatisierte diagnostische Ausgabe bei Fehlschlag ---
|
| 89 |
+
if hidden_dim <= 0 or num_layers <= 0:
|
| 90 |
+
dbg("--- CRITICAL: Failed to auto-determine model configuration. ---")
|
| 91 |
+
dbg(f"Detected hidden_dim: {hidden_dim}, num_layers: {num_layers}")
|
| 92 |
+
dbg("--- DUMPING MODEL ARCHITECTURE FOR DEBUGGING: ---")
|
| 93 |
+
dbg(self.model)
|
| 94 |
+
dbg("--- END ARCHITECTURE DUMP ---")
|
| 95 |
+
|
| 96 |
+
# Finale Assertions zur Sicherstellung der wissenschaftlichen Validität.
|
| 97 |
+
# Diese werden nun eine informative Debug-Ausgabe vor dem Absturz haben.
|
| 98 |
+
assert hidden_dim > 0, "Could not determine hidden dimension from model config. Check debug dump above."
|
| 99 |
+
assert num_layers > 0, "Could not determine number of layers from model config. Check debug dump above."
|
| 100 |
|
| 101 |
dbg(f"Populated stable config: hidden_dim={hidden_dim}, num_layers={num_layers}")
|
| 102 |
return StableLLMConfig(hidden_dim=hidden_dim, num_layers=num_layers)
|