A computer system comprising: one or more processors; and one or more computer-readable media having stored thereon instructions that are executable by the one or more processors to configure the computer system to apply machine learning prediction to data, including instructions that are executable to configure the computer system to perform at least the following: obtain a prediction instance comprising a set of training data and metadata associated with the set of training data, the metadata including a prediction type based on the training data and metadata, determining whether training the prediction instance with the set of training data exceeds a predetermined complexity threshold, including determining that training the prediction instance with the set of training data does not exceed the predetermined complexity threshold if: according to the prediction type, a program with linear execution time in terms of size of the training data can be devised to train the prediction model; or a time series of the set of training data is white noise; or a size of the training data is below a threshold; if a time series in the set of training data is white noise or if a size of the training data is below a threshold, not performing training; if a program with linear execution time in terms of size of the training data can be devised to train the prediction model, training the prediction model locally at the computer system; and only if it has been determined that the predetermined complexity threshold is exceeded, sending the set of training data and metadata to an entity being a machine learning service remote from the computer system and as a result, obtaining a trained prediction model from the entity. one or more processors; and one or more computer-readable media having stored thereon instructions that are executable by the one or more processors to configure the computer system to apply machine learning prediction to data, including instructions that are executable to configure the computer system to perform at least the following: obtain a prediction instance comprising a set of training data and metadata associated with the set of training data, the metadata including a prediction type based on the training data and metadata, determining whether training the prediction instance with the set of training data exceeds a predetermined complexity threshold, including determining that training the prediction instance with the set of training data does not exceed the predetermined complexity threshold if: according to the prediction type, a program with linear execution time in terms of size of the training data can be devised to train the prediction model; or a time series of the set of training data is white noise; or a size of the training data is below a threshold; according to the prediction type, a program with linear execution time in terms of size of the training data can be devised to train the prediction model; or a time series of the set of training data is white noise; or a size of the training data is below a threshold; if a time series in the set of training data is white noise or if a size of the training data is below a threshold, not performing training; if a program with linear execution time in terms of size of the training data can be devised to train the prediction model, training the prediction model locally at the computer system; and only if it has been determined that the predetermined complexity threshold is exceeded, sending the set of training data and metadata to an entity being a machine learning service remote from the computer system and as a result, obtaining a trained prediction model from the entity.