How to split data into training, validation, test data sets if the data is non-stationary?
In general, for time series data, you can split it in such a way that the temporal order is as is in all your splits (training, validation and testing sets).
Once you make your series stationary (via differentiation for instance), you can make use of the TimeSeriesSplit cross-validator by scikit-learn, with wich you get the time-ordered indices of each train-validation split, so that you can use them later on with the validation strategy you might want to use, something like:

As a possible validation strategy, you could use the walk-forward validation (nice info here)