if you have several gpus you can use dataparallel, which splits the batch in the amount of gpus you have.
If even doing that the embedding is still very big you can go inside the model an manually assign in which gpu you would like to store each tensor (you can ie process conv1 in gpu0 conv2 in gpu1 and so on) however this is not optimal since you are not using gpus in parallel but sequentially.
Check https://pytorch.org/tutorials/beginner/blitz/data_parallel_tutorial.html 44