After bootstrapping a dead-simple language model for task extraction using Microsoft LUIS (Language Understanding Intelligent Service)1, then building a prototype task service and OneNote add-in around it, I wanted to extend the model significantly. My use of LUIS did not really fit into its prescribed “utterances—entities—intents” taxonomy; further, LUIS is not extensible enough for the kind of custom language modeling I wanted to do.
Enter: Azure Machine Learning. Azure ML is a newly-revamped2 suite of machine learning services and tools. It includes a Workbench for data preparation and model development using Python and family (Anaconda, Jupyter, scikit-learn, spaCy… whatever you need); an Experimentation service for running experiments, locally or remotely, on your local machine or Docker or Spark; and a Model Management service for deploying models behind a web service.
So after iterating on an NLP model for task classification (read all about it here), I turned to Azure ML to deploy it so that I could swap out the API call to LUIS with an API call to this new service hosting my custom NLP model3.
Azure ML is still in preview, and so there were various hiccups in getting my model deployed4. However, the team was very responsive to my questions and bug reports, and I eventually got things up and running. Because of this active engagement, I’m confident stability will continue to improve during preview.
Prototype of OneNote Task Extraction add-in with toy example (GIF)
My experience with using both LUIS and Azure ML has illustrated to me the importance of having both prebuilt/API-like and custom ML solutions available for developer use. LUIS as a prebuilt solution was excellent for bootstrapping my idea and getting something off the ground. Once I felt more comfortable in the space and had the context to apply more domain-specific ideas, I could easily transition to Azure ML, spaCy, scikit-learn, etc. to implement them.
How dead-simple? LUIS essentially held a classification model with a single feature: “does this candidate phrase contain a verb in the given list of present-tense verbs?” If it does, the phrase is a task. ↩
Keeping to Microsoft tradition, naming around Azure’s machine learning offerings is confusing. Back in 2014, Microsoft had a thing called Azure Machine Learning - that thing is now called Azure Machine Learning Studio, and the new thing launched this year became Azure Machine Learning. ↩
Quick disclaimer: I work at Microsoft so I’m more inclined to check out Microsoft products, but I don’t work on Azure or anything else too related. These are just my views and experience. ↩
Most issues occurred around deployment/operationalization. Something that worked yesterday would, occasionally enough, not work the following day. It’s somewhat understandable though: the system is essentially in beta, clearly has lots of dependencies, and the codebase seems to still be under churn. My biggest issue came from a hidden subscription cap on microsoft.insights/CurrentBillingFeatures/Basic
that caused Azure provisioning to fail (which I think, after my complaining to the team, eventually got documented). ↩