What algorithm does Open-NMT-py use?

And please give a description or some readings about how the algorithm works.

You can start by reading the most recent description paper:

For OpenNMT-py specifically, some additional references are shown in the docs (not necessarily exhaustive):
https://opennmt.net/OpenNMT-py/ref.html

okay, thank you so much!