The state dicts don’t have to be used on the whole model, you can do it module by module, something like model2.conv3.load_state_dict(model1.conv3.state_dict()).  But in any case, loading a state dict is the same thing as transferring all the attributes manually, it’s just easier.

load to a brand new Pytorch architecture without quantized info(M2_int)

If you are still seeing different results after transferring the weights, there could be other differences.  Some things to debug would be:

are the other parameters you need to transfer (conv bias, etc)
is the input data coming in exactly the same (you are modeling quant/dequant correctly, etc)