Machine Learning for Mobile
上QQ阅读APP看书,第一时间看更新

Utilizing machine learning service providers for a machine learning model

There are many service providers offering machine learning as a service. We can just utilize them.

Examples of such providers who provide machine learning as a service are listed in the following points. This list is increasing every day:

  • Clarifai
  • Google Cloud Vision
  • Microsoft Azure Cognitive Services
  • IBM Watson
  • Amazon Web Services

If we were to go with this model, the training is already done, the model is built, and model features are exposed as web services. So, all we have to do from the mobile application is simply to invoke the model service with the required dataset and get the results from the cloud provider and then display the results in the mobile application as per our requirement:

Some of the providers provide an SDK that makes the integration work very simple.

There may be a charge that we need to provide to the cloud service provider for utilizing their machine learning web services. There may be various models based on which this fee is charged, for example, the number of times it is invoked, the type of model, and so on.

So, this is a very simple way to use machine learning services, without actually having to do anything about the model. On top of this, the machine learning service provider keeps the model updated by constant retraining, including new datasets whenever required, and so on. So, the maintenance and improvement of the model is automatically taken care of on a routine basis. 

So, this type of model is easy for people who are experts in mobile but don't know anything about ML, but want to build an ML-enabled app. 

So the obvious benefits of such a cloud-based machine learning service are as follows:

  • It is easy to use.
  • No knowledge of machine learning is required and the tough part of the training is done by the service provider.
  • Retraining, model updates, support, and maintenance of the model are done by the provider.
  • Charges are paid only as per usage. There is no overhead to maintain the model, the data for training, and so on.

Some of the flip sides of this approach are as follows:

  • The prediction will be done in the cloud. So, the dataset for which the prediction or inference is to be done has to be sent to the cloud. The dataset has to be maintained at the optimal size.
  • Since data moves over the network, there may be some performance issues experienced in the app, since the whole thing now becomes network-dependent.
  • Mobile applications won't work in offline mode and work as completely online applications.
  • Mostly, charges are to be paid per request. So, if the number of users of the application increases exponentially, the cost for the machine learning service also increases. 
  • The training and retraining is in the control of the cloud service provider. So, they might have done training for common datasets. If our mobile application is going to use something really unique, chances are that the predictions may not work.

To get started with ML-enabled mobile applications, the model is the right fit both with respect to cost and technical feasibility. And absolutely fine for a machine learning newbie.