The posted code would allocate ~27MB, which is also shown in your memory_summary() output:
model = nn.Sequential(
    nn.Linear(1000, 1000),
    nn.Linear(1000, 1000),
    nn.Linear(1000, 1000),
    nn.Linear(1000, 1)
)
   
print(torch.cuda.memory_allocated())
> 0

model.cuda()
print(torch.cuda.memory_allocated()/1024**2)
> 11.4609375

x = torch.randn(1000, 1000, device='cuda')
print(torch.cuda.memory_allocated()/1024**2)
> 15.27587890625

out = model(x)
print(torch.cuda.memory_allocated()/1024**2)   
> 27.64990234375

out.sum().backward()
print(torch.cuda.memory_allocated()/1024**2)
> 26.74072265625

The peak usage is also reasonable.
The rest of the allocation is caused by the CUDA context, which loads all native PyTorch CUDA kernels as well as CUDA kernels from libraries such as cuDNN, cublas etc.