neuralworm commited on
Commit
2169e97
·
1 Parent(s): 2161eb0

get layers from model

Browse files
Files changed (1) hide show
  1. cognitive_mapping_probe/llm_iface.py +19 -12
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, zweistufige Fallback-Strategie.
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
- # --- KORREKTUR: Robuste Methode für num_layers ---
71
  num_layers = 0
72
  try:
73
- # METHODE 1 (BESTE): Direkte Inspektion der Architektur des geladenen Modells.
74
- # Dies ist die Ground Truth.
75
- if hasattr(self.model, 'model') and hasattr(self.model.model, 'layers'):
 
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
- # Finale Assertions zur Sicherstellung der wissenschaftlichen Validität
91
- assert hidden_dim > 0, "Could not determine hidden dimension from model config."
92
- assert num_layers > 0, "Could not determine number of layers from model config."
 
 
 
 
 
 
 
 
 
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)