Training your ML Models Locally

Train Locally from a Rasa Platform Instance

If you would like to test test out a new NLU model, or just tweak some training parameters on your local machine, you have the option to retrieve the data straight from the running Rasa Platform instance. This lets you avoid having multiple copies of the same dataset which are difficult to keep in sync.

Note

This page covers the instructions for manually training Rasa NLU with data from Rasa Platform. If you would like to set up a nightly build or continuous integration, see Continuous Integration of Machine Learning Models.

How do I do that?

The training process is similar to the one outlined in the Rasa NLU docs on training. Here, instead of specifying a local path to the training data with --data, you can use the data URL of your Rasa Platform instance with the --url parameter. Under the hood, Rasa NLU logs into the Rasa Platform, fetches the training data, temporarily saves it to a local file, and uses that for training.

If your Rasa Platform runs under https://platform-example.com, the URL you’re going to use is https://platform-example.com/api/default/data.json?api_token=<TOKEN>. Replace <TOKEN> with your personal API token. You can find your API token in the Platform under the NLU Training/Training Data tab (along with the command shown below). Have a look at the example below:

$ python -m rasa_nlu.train \
    --config sample_configs/config_spacy.yml \
    --url https://platform-example.com/api/default/data.json?api_token=<TOKEN> \
    --path projects

Note

If you want to reproduce the Platform results, copy the config from the Model config page, save it to a .yml file and use that with the --config option.

Upload an NLU model

If you have trained a model locally and would like to try it out on Rasa Platform, you can simply create a zip file and send it to your Platform API. Enter the directory of your trained model, for example with cd models/nlu/default/model and create a zip file called my_nlu_model.zip with

$ zip -r my_nlu_model.zip *

The next step is to send the model to Rasa Platform. If your Platform runs at https://platform-example.com/, the command looks like this:

$ curl -F "model=@my_nlu_model.zip" -H "filename: my_nlu_model.zip" https://platform-example.com/api/projects/default/models/nlu?api_token=<TOKEN>

Note

You can specify the filename in the filename header as in the example above. Everything before .zip will show up as your model name. If you don’t provide the filename header, the name of the file will be used.

The <TOKEN> is available in the NLU Training/Training Data tab in the command to pull data. If the upload is successful, your model will show up in the NLU model overview, where you can assign tags to it or mark it as active.

Upload a Core model

Once you have trained your model locally, navigate into the folder containing it (for example models/dialogue) and create a zip file called my_model.zip with

$ zip -r my_model.zip *

The next step is to send the model to Rasa Platform. If your Platform runs at https://platform-example.com/, the command looks like this:

$ curl -F "model=@my_model.zip" https://platform-example.com/api/projects/default/models/core?api_token=<TOKEN>

You can find your api_token in the example curl command in the https://rasa.example.com/data/training-data view.

If the upload is successful, your model will show up in the core models view at https://rasa.example.com/models/core-models, where you can mark it as active. Marking the model as active means that it will be used by Rasa Core.