Hi! Here is my code:
import torch.nn as nn
import torch
import torch.optim as optim

class model(nn.Module):
    def __init__(self):
        super().__init__()
        self.seq = nn.Sequential(nn.Linear(5,5), nn.Linear(5,5),nn.Linear(5,5))
    def forward(self, x):
        return self.seq(x)

x_train = torch.tensor([1,2,3,4,5], dtype = torch.float)
y_train = torch.tensor([1,2,3,4,5], dtype = torch.float)

m1 = model()
m2 = model()
m2.load_state_dict(m1.state_dict())
criterion = nn.MSELoss()
o1 = optim.Adam(m1.parameters(), lr = 1e-3)
o2 = optim.Adam(m2.parameters(), lr = 1e-3)

for i in range(2):
    o1.zero_grad()
    o2.zero_grad()

    out1 = m1(x_train)
    out2 = m2(x_train)

    print('out1:', out1)
    print('out2:', out2)

    loss1 = criterion(out1, y_train)
    loss1.backward()
    loss2 = criterion(out2, y_train)
    (loss2 * 100).backward()

    o1.step()
    o2.step()

And here is the output:
out1: tensor([ 0.1006, -1.0441,  1.1687, -0.7200, -0.5491], grad_fn=<AddBackward0>)
out2: tensor([ 0.1006, -1.0441,  1.1687, -0.7200, -0.5491], grad_fn=<AddBackward0>)
out1: tensor([ 0.1065, -1.0204,  1.1568, -0.7082, -0.5328], grad_fn=<AddBackward0>)
out2: tensor([ 0.1065, -1.0204,  1.1568, -0.7082, -0.5328], grad_fn=<AddBackward0>)

I noticed that you used the SGD optimizer and I used Adam. But on switching to the SGD optimizer it works fine and the outputs are different.
Output with SGD optimizer:
out1: tensor([ 0.6368, -0.8041, -0.0553,  0.4925, -0.5171], grad_fn=<AddBackward0>)
out2: tensor([ 0.6368, -0.8041, -0.0553,  0.4925, -0.5171], grad_fn=<AddBackward0>)
out1: tensor([ 0.6088, -0.7789, -0.0402,  0.4936, -0.4706], grad_fn=<AddBackward0>)
out2: tensor([-2.0355, -0.3274, -0.3055, -1.2581,  1.1941], grad_fn=<AddBackward0>)

Switching from Adam to SGD seems to bring about the necessary change but I do not know why. Is this supposed to happen with adam?