You can just wrap the list comprehension into nn.ModuleList:
class learn_vector(nn.Module):
    def __init__(self, in_channels, out_channels):
        super(learn_vector, self).__init__()
        self.lins = nn.ModuleList([nn.Linear(4, 1) for _ in range(8)])
    def forward(self, x):
        print(x.size())
        outputs = torch.stack([lin(x[:, idx]) for idx, lin in enumerate(self.lins)], 1)
        return outputs 

Also, you forgot to register lins as class attributes using self.
Using this code, you can now create the model and push it onto the device:
model = learn_vector(1, 1).to('cuda')