So, could you find where is a problem in your code ?

although trainer.state is correct, evaluator.state doesn’t have the same epoch and iteration .

evaluator.state normally contains nothing interesting except metrics. As we usually run it
like evaluator.run(train_loader) it makes 1 epoch defined by len(train_loader) and its should contain according to your example, the following:
iteration: 172
epoch: 1
epoch_length: 172
max_epochs: 1

And it is correct, evaluator did 1 epoch and 172 iterations as asked. And it does not contain any training information.