Thanks Vitaliy for the typo correction.
Did you try option ValidationSet -> Scaled[0.1] for NetTrain? I wonder if that improves anything.
Since each time the code is run the data is generated, there is no need for a Validation Set, but it could be set just to verify the convergence.
I don't have GPU, too long to check. BTW what kind of GPU did you use and how long did it take to train?
I used a GTX 1050 and it took me around 5 min to train. The fast time is due to the compact size of the NN. Which could be further compacted for efficiency too.