Generally yes. After calling model.train() some layers like nn.BatchNorm will change their behavior, e.g. by updating the running estimates and using the batch statistics to normalize your activations.
Depending on your workload your training procedure should be faster running on the GPU. However, if your workload is quite small or if you have some bottlenecks in your code, the CPU time might be close to the GPU one.