Doh. I had set the print_every = 1. So it was running the whole validation function (on ~5000 images) every 1 step. This combined with only having a batch size of 10 meant that for every 10 images (out of 21,200) it was running the whole validation function.
I am still suprised that it couldn’t even run the validation function once in 9 hours though but I have increased the batch size and print_every condition so fingers crossed.