PyTorchでモデルがtrainモードの時には発生しないのですが、evalモードの時にGPUのメモリが解放されないまま消費されていきout of memoryが発生していました。調べたところ、Variableにvolatileという引数があって、これをTrueにすれば良いよというアドバイスがあり、確かにout of memoryが発生しなくなりました。
# evalモードへ
model.eval()
# evalモードの時はvolatile=TrueでGPUメモリ解放される
X = Variable(X, volatile=True)