Yesterday, a colleague of mine asked me, “What does machine learning in the cloud mean?” After thinking about it for a few minutes I realized that the phrase has multiple meanings. Here are the first four that came to mind. But I’m reasonably sure I’m missing at least one or two key scenarios.
1.) You create a virtual machine in the Cloud and do ML tasks on that VM. 2.) You use a Web interface to access a custom ML system that lives in the Cloud. 3.) You use a job submission tool to submit ML tasks to GPU/CPU resources in the Cloud. 4.) You send an HTTP-based request to a ML Web service in the Cloud.
An example of Scenario #1 is when I go to Microsoft Azure, and create a virtual machine. Then I connect to the virtual machine using a Remote Desktop tool, and voila, it’s exactly like I’m doing ML on a desktop machine, except I can have as powerful a machine as I want, supported by massive storage. I like this approach because there’s no “friction” — I work just as I do normally — except I’m paying an hourly service fee. Google and Amazon have similar capabilities for creating VMs but I haven’t used them before.
Scenario #2 is fairly specific and what I have in mind is Azure Machine Learning Studio. It’s a Web-based GUI drag-and-drop program that allows you to perform ML tasks without any coding at all. AML Studio is good for rapid prototyping but is usually not flexible enough for the kind of ML work I usually do.
For Scenario #3 I’m thinking of “Google Cloud ML Engine”. You write a small script that packages up information about a TensorFlow program and some training data. Then you submit that package using the gcloud command-line tool/program and training happens in the Cloud on Google’s custom TPU (tensor processing unit) machines. After training you can deploy the trained model (but the details aren’t clear to me). I haven’t used this scenario, but it has the feel that it was designed by researchers for use by other researchers (which would be right up my alley).
An example of Scenario #4 is the Microsoft Cognitive Services. These are pre-built ML models that live in the Cloud. For example, there’s a Vision Service where you upload an image to the service, along with instructions on what to analyze, and the service returns JSON data such as, “three people in a park with a red balloon”. I don’t use this scenario very often, but it’d be valuable to an application developer.
For me, the real question now is, “What am I missing?” in this description of machine learning in the Cloud. Conceptually at least, the Cloud just means machines that are “somewhere else” so it’s possible for ML in the Cloud scenarios to be any ML scenarios.