Rasa on Apple M1

This is largely a re-post of Vincent Warmerdam’s excellent Rasa Forum post which can be found here. Vincent has a lot of good NLP and Python tools on github and you can find his blog at koaning.io.

As Vincent points out “it is likely that things might change depending on the Tensorflow support for these devices.”

Benchmarks

Before jumping into the install steps, after working with Rasa on the M1 for several weeks, I’ve noticed much longer training times. Using a simple FAQ bot that uses the DIET classifier and Response Selector, here are the training times I’ve tested on three different platforms with 3.0.8.

  • Intel i7-4790 @ 3.60GHz, 16Gb, Ubuntu 20.04
  • M1 Max, 10-core CPU, 24-core GPU, 16-core Neural Engine, 32Gb, MacBook Pro 2021
  • GitHub Action
Component i7 M1 M1 3.1.0 GitHub Notes
DIET :59 4:10 3:26 1:48 M1 takes 4.2x longer than i7
RespSelector :24 2:40 2:23 :33 M1 takes 6.6x longer than i7

System Dependencies

We use Homebrew to install the system dependencies:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Once brew is installed it’s time to install the dependencies:

brew install libpq libxml2 libxmlsec1 pkg-config postgresql

Conda

Install Conda if you don’t already have it setup:

chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh
sh ~/Downloads/Miniforge3-MacOSX-arm64.sh
source ~/miniforge3/bin/activate

Create Rasa Conda Environment

Conda uses an env.yml file to configure the list of packages to install when creating a new environment.

As of this writing, the latest version of Rasa is 3.1.0. The version of a github gist with the a working env.yml is posted here.

conda env create -v --name rasa-3.1.0 -f env.yml
conda activate rasa-3.1.0

Install Dependencies

pip install git+https://github.com/vpol/text.git --no-deps
pip install git+https://github.com/RasaHQ/rasa-sdk@3.1.1 --no-deps
pip install git+https://github.com/RasaHQ/rasa.git@3.1.0 --no-deps
rasa --version