The .cuda() accepts a device id. So you could assign the GPUs as:
model1 = nn.DataParallel(model1).cuda(device=0)
model1_feat = model1(input_image)

model2 = nn.DataParallel(model2).cuda(device=1)
model2_feat = model2(model1_feat, input_feat)

Your current setup is replicating both of your models on all devices and spliiting the data across them.