Fix remaining Transformers v5 crash: guard llm_config and to_dict() for None (follow-up to `e980c02`)

#13
by KBayoud - opened
Files changed (1) hide show
  1. configuration_internvl_chat.py +10 -7
configuration_internvl_chat.py CHANGED
@@ -51,16 +51,19 @@ class InternVLChatConfig(PretrainedConfig):
51
  self.vision_config = InternVisionPatchConfig(**vision_config)
52
  else:
53
  self.vision_config = None
54
- if llm_config['architectures'][0] == 'LlamaForCausalLM':
 
 
55
  self.llm_config = LlamaConfig(**llm_config)
56
- elif llm_config['architectures'][0] == 'InternLM2ForCausalLM':
57
  self.llm_config = InternLM2Config(**llm_config)
58
- elif llm_config['architectures'][0] == 'InternLM2VEForCausalLM':
59
  self.llm_config = InternLM2Config(**llm_config)
60
- elif llm_config['architectures'][0] == 'Qwen2ForCausalLM':
61
  self.llm_config = Qwen2Config(**llm_config)
62
  else:
63
- raise ValueError('Unsupported architecture: {}'.format(llm_config['architectures'][0]))
 
64
  self.use_backbone_lora = use_backbone_lora
65
  self.use_llm_lora = use_llm_lora
66
  self.pad2square = pad2square
@@ -87,8 +90,8 @@ class InternVLChatConfig(PretrainedConfig):
87
  `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance,
88
  """
89
  output = copy.deepcopy(self.__dict__)
90
- output['vision_config'] = self.vision_config.to_dict()
91
- output['llm_config'] = self.llm_config.to_dict()
92
  output['model_type'] = self.__class__.model_type
93
  output['use_backbone_lora'] = self.use_backbone_lora
94
  output['use_llm_lora'] = self.use_llm_lora
 
51
  self.vision_config = InternVisionPatchConfig(**vision_config)
52
  else:
53
  self.vision_config = None
54
+
55
+ arch = (llm_config.get("architectures") or [None])[0]
56
+ if arch == 'LlamaForCausalLM':
57
  self.llm_config = LlamaConfig(**llm_config)
58
+ elif arch == 'InternLM2ForCausalLM':
59
  self.llm_config = InternLM2Config(**llm_config)
60
+ elif arch == 'InternLM2VEForCausalLM':
61
  self.llm_config = InternLM2Config(**llm_config)
62
+ elif arch == 'Qwen2ForCausalLM':
63
  self.llm_config = Qwen2Config(**llm_config)
64
  else:
65
+ self.llm_config = None
66
+
67
  self.use_backbone_lora = use_backbone_lora
68
  self.use_llm_lora = use_llm_lora
69
  self.pad2square = pad2square
 
90
  `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance,
91
  """
92
  output = copy.deepcopy(self.__dict__)
93
+ output['vision_config'] = self.vision_config.to_dict() if self.vision_config is not None else {}
94
+ output['llm_config'] = self.llm_config.to_dict() if self.llm_config is not None else {}
95
  output['model_type'] = self.__class__.model_type
96
  output['use_backbone_lora'] = self.use_backbone_lora
97
  output['use_llm_lora'] = self.use_llm_lora