mlrequest is a machine learning API that makes it simple for developers and data scientists to deploy low-latency, highly-available, real-time machine learning models for their web-based applications.
I'm just not sure if our landing page / website communicates our benefits well enough. Would really appreciate what others on IH think!
Our benefits over existing platforms right now is that:
- Can be used with any application, on any platform. No language or library dependencies (because REST API).
- We don't require server maintenance, server deployment, or server fees. Creating a production model only requires 1 request to a /predict or /learn endpoint. Other big MLaaS require handling deployment of new models, and some still require server deployment and maintenance.
- Models are super low-latency and highly available because they are replicated to many data centers across the world and latency-routed. Most other MLaaS centralize models and they might only exist on a single instance.
- Models predict and learn in real-time, online. Good for applications that need a quick response and need to update the model frequently. Most other MLaaS are batch-processed.
I believe this is targeted to very very very very very very very beginners in machine learning? Because it lacks a lot of the features anybody beyond that level would look for, for example model tuning, being able to select the algorithm to use (eg. decision trees, k-means, neural networks, etc). Also I can't find a reference to what models are you using in the backend with what parameters.
Learning through http api request is a poor choice because it involves a lot of network latency and overhead just from the http layer. There is a reason there is a huge market for GPU compute resources in most big clouds and most of the machine learning libraries support running models on the GPU.
I think it is too expensive. Training models requires a lot of input data and iterations and it's not very clear how you tackle this in the backend. The documentation is way too sparse and unclear for something that technical. I am having difficulties understanding how:
Sorry to say it, but all these things need to be further developed if you really want to make this appealing to people that would actually pay for it. In the state it is now, there is no way I am going to pay 10$+ and lack all those features instead of using an open source alternative on which I have total control and deploy it on a 5$ droplet on digital ocean. That's your main competitor.
My 2 cents :)
Hey, thanks for stopping by and taking time to go through my site, and write all of that up. I really appreciate that. Are you a data scientist? I am still in the validation phase and am probably targeting a different market than what you describe. I really feel the benefits of my service are not communicated because most of your feedback focused on the wrong kind of market I'm trying to target. My assumptions about my target market may be wrong, but this is what I'm going with for now. Hopefully I can clear some things up with the response below and I hope you can respond again to let me know what you think! :D
This is targeted to people who don't want to get 99% accuracy out of their model, 90% would work fine (linear models, mostly) and instead they want an easy way to get a fast, low-latency, highly-available model to work with their production app. Deploying to a $5 droplet is going to be too much latency if your customer/user is in Japan but you deployed in New York. You also won't have high-availability that way unless you have at least 2 instances with a load balancer (which would probably be closer to $25 now, over 2x my lowest-tier cost and still not globally distributed).
Learning through HTTP can be fast if you're working with the right models. These aren't deep learning models and they aren't meant to be. For now, these are super-fast linear learners. Sending multiple batches of 100 model updates asynchronously allows you to update the model at 10k+ examples a second-- and this can scale much higher (e.g., 100k examples/second). I just wrote a python wrapper that makes this simple. GPU is not required for this type of model.
Just curious if you think that Azure or AWS is too expensive, too? Their prices are much higher than mine (albeit they are also a bit more flexible with modeling). They charge per transaction and they have validated this type of market.
Some of the things you were confused about:
You make a good point about training phase-- right now when you submit data for training it is trained once on each example and that is it. This is something I've thought about modifying (to provide a parameter for the number of passes on the data), but for now I kept it simple during the validation phase.
Model validation may be a feature for later where I give back model results without using transactions, but for now it is up to you to run any validation strategy you would like (k-fold, etc.).
You also make a good point about the docs. I did a quick and dirty job on them for now just to see who is interested. Regarding the batch labels, you send them as a list of maps like:
[{'features': {'feature1':'val1', ...}, 'label': label_val }, ...]Does this clear some things up?
Again, my assumptions about my target market may or may not be correct, and I'm still in the validation phase. If you're a data scientist, I could see how you would be more focused on getting the absolute best, highest-accuracy (or other metric), non-linear model possible. But my service tackles the other performance items with more importance: how can I easily make this thing respond in real-time, regardless of location, and never go down for my business needs? I'm trying to invite more than just data scientists to do modeling-- so that's why I kept it simpler than you might be used to. I made it a point to not list too many parameters to tweak because a lot of the times it's not super necessary unless you want to squeeze that last 2% out of your model-- particularly for the types of models my service employs.
I see. I am not a data scientist, I just played with some machine learning in my own time doing some tutorials and training some basic models. Most of the very beginner targeted tutorials go into model tuning, overfitting prevention and testing the model.
I suppose you can have some pretrained models people can use for specific use cases? That might allow people to start using your thing even faster. "The big boys" do it this way and offer service for "classifying images", "classifying text", etc based on some of their own pre trained models.
Yes, there are a lot of pretrained models being used as services with many different companies. I think I plan on getting into that territory as well but this was just an MVP to get going.
I revisited your comment about pricing. I thought mlrequest was a bargain but when I compared what I was offering to the other big ml services, I realized my pricing structure needed to change. I changed the pricing tiers so that I am obviously the bargain now, which was what I intended from the beginning. For the paid tiers, I'm providing unlimited model training and the cap on API calls only applies to predictions. This way anyone can train models and validate them without taking away too much from their monthly API call limit.
I also mentioned you in my milestone about pricing-- is there a way to @ people on IH? I'm new here :)