fix config saving compatibility issue for transformers 4.45+

#7
by katuni4ka - opened

config = AutoConfig.from_pretrained("OpenGVLab/InternVL2-1B", trust_remote_code=True)
config.save_pretrained("internvl2-1b")

raises error:

if llm_config['architectures'][0] == 'LlamaForCausalLM':
KeyError: 'architectures'

the root cause that transformers added validation of non-default parameters for generation during config saving it requires initialize configuration class without parameters and as the result llm_config comes as None (and according to code above it become {} at llm config class init stage)

OpenGVLab org

Try to downgrade to transformers==4.44.2

@Yeshenglong unfortunatly, I can not to do that, my project requires to use transformers 4.45. Can you please thinking about small fix for issue? I provided workaround that works for me (from logical point of view, it is really bug in code, you allow to provide empty dictionary as llm_config but after that does not care that it can be provided, so some default values should be filled.)

@Yeshenglong . The cause is that llm_config is a None object, initialized with an empty dictionary. For InternVL2-8B-MPO, I just handle that with this code:

       self.vision_config = InternVisionConfig(**vision_config)
        # Check architecture to initialize config
        llm_config_architectures = llm_config.get("architectures", ["InternLM2ForCausalLM"])[0]
        if llm_config_architectures == "LlamaForCausalLM":
            self.llm_config = LlamaConfig(**llm_config)
        elif llm_config_architectures == "InternLM2ForCausalLM":
            self.llm_config = InternLM2Config(**llm_config)
        elif llm_config_architectures == "Phi3ForCausalLM":
            self.llm_config = Phi3Config(**llm_config)
        elif llm_config_architectures == "Qwen2ForCausalLM":
            self.llm_config = Qwen2Config(**llm_config)
        else:
            raise ValueError("Unsupported architecture: {}".format(llm_config_architectures))

I set the default value and executed the code with transformers==4.46.*. @katuni4ka you can refer to this solution if you wanna upgrade your transformers version

czczup changed pull request status to merged
Your need to confirm your account before you can post a new comment.

Sign up or log in to comment