AppBooks are applications generated from notebooks. They are a refinement on parametrized notebooks in that they present an auto-generated form with variables in the code that you decide to expose to users, and enable running the notebook with the new values without changing the notebook's code. They also allow you to deploy a model, or build a Docker image for it in one click.
There are many scenarios where AppBooks are ideal. One example is a training notebook where you constantly change training parameters or hyper-parameters. This is tedious as you constantly have to open the notebook's interface and change the code with the new parameters. Code never was meant to change every time parameters change.
Instead of doing this, you can publish an AppBook, which will automatically generate a form for your parameters. You can then interact with it simply by changing the values in the form and running the AppBook.
Publishing an AppBook
To publish an AppBook, click on the Publish button in the notebook's toolbar. If you want to expose a parameter to the AppBook user, simply assign a default value to it.
Running an AppBook
To run an AppBook, visit the App Centre, then click on an AppBook, which will show you a form with the variables the notebook's author has decided to expose, and the notebook outputs they chose to make visible.
You can then change variables in the form, and click on the button labeled Run. If your notebook server is not running, you will be prompted to choose from Server Options. Once you choose your server, click Start, and the server will be started and the AppBook will run, show progress, and display outputs.
Deploying a Model
To deploy a model, go to an AppBook and click on the Deploy button. You will be presented with a tutorial on how to invoke the model, and a link to its page where you can invoke it using a form by entering values or uploading a CSV file.
Note that the deployment may take some time, so the model may not be available right after you click on the button.
Model Docker Image
You may want to package your model into a Docker image, so you can start a container and invoke it as you see fit. To build a Docker image for your model, simply click on the Build Docker Image button in the AppBook view.
AppBooks also automatically track your runs: they track the training parameters, metrics, and log your models. You can then compare model performances, and by clicking on the Deploy button, deploy the model and make it accessible through a REST API to get inference results. This makes it easier for collaboration between machine learning practitioner and application developers, as the former can easily deploy a model to be invoked by the latter, without either bothering with deployment details, or installing dependencies.
One useful collaboration this allows is with domain experts. You can share the link to an AppBook with a domain expert who can execute the code without the overwhelm a non-programmer might experience looking at the notebook's interface. They might then change some domain specific parameters, and be able to train and deploy a model with one click.
Another use case is if you already have a pre-trained model and want to expose it to domain experts without writing an application. You can simply create a notebook where you load the model, expose the inputs, publish the AppBook, and have an application a domain expert can use simply by entering values into the form, and having the pre-trained model return the results.
Machine learning practitioners often produce notebooks, and then struggle to expose the value of that product to the customer. They will either send PDF or HTML exports of the notebook, but this lacks flexibility and interactivity. They then try and deploy a model
They also track parameters, metrics, and the resulting model behind the scenes, and, once you are satisfied with a model's performances, enable you to deploy it, or to build a docker image for that model.
They are also useful when you want to run a notebook against a set of parameters without changing the notebook's code.