But not as obvious is this question,
who does the pre-processing?
Who will do the input transformations on behalf of the client code?
You can't pass in the raw input variables to the trained model because
a trained model expects scaled transformed inputs.
You also have to worry about model changes.
When you do a bag of words, for example,
with a certain word mapped to the number 32,
the embedding might change the next model run because your input data is larger,
and now that word gets mapped to a different number,
say the number 56.
Similarly and scaling the minimum,
the maximum, the standard deviation,
these can all change.
So, doing the bookkeeping associated with
pre-processing and feature crosses is painful and it's a major source of error.
It's also near impossible to debug,
so there are probably many models out there that have a training serving skew.
This difference between what it was trained
on and what it's being presented at prediction time.
Cloud ML Engine gives you the ability to carry out
machine learning that is repeatable, scalable, and tuned.
Repeatable, well you need
a machine learning framework that helps you handle training serving skew.
The use of TensorFlow transform, for example,
simplifies the bookkeeping in several common situations. It's scalable.
In training, Cloud ML will help you
distribute the pre-processing and training of your model.
It will also help you deploy your trained model to the Cloud.
This is important because you need high-quality execution,
both during training and in prediction time.
Of course, you can use Cloud ML Engine to do hyper-parameter tuning.