Short summary of this really well written article:
Pattern overview
MVP, MVVM, and MVI are some of the common patterns in Android and they can broadly be thought of as different flavours of the same core concept — abstracting logic from the UI into classes without references to Android. The main way in which they differ is how those classes accept their inputs and how they then output updates to the UI.Generally speaking the goal is to separate concerns and have a Unidirectional Data Flow.
MVP
The defining feature of MVP is that data is communicated back to the view imperatively.
MVVM
MVVM differs from MVP is in how data is communicated back to the view. Rather than imperatively calling the view, in MVVM changes are described by data which are then observable by the view. The UI can then reactively re-compose itself based on the new data.