How do we know what packages are installed by default by rasa?

I was following the medium article to set up GPU.

FROM tensorflow/tensorflow:2.3.1-gpu
RUN pip install rasa[full]==2.1.3

was used instead of FROM rasa/rasa:2.1.3-full, maybe because he wanted something from the tensorflow image, or there is no way to FROM from both tensorflow and rasa images (or is there?)

  1. What are the similarities and differences (in terms of what is installed/set up, what can be done as a result) between doing the above, and using below? Generally what’s the difference between doing things through pip install and doing things through pulling images? Is the former a subset of the latter?
FROM rasa/rasa:2.1.3-full
RUN pip install tensorflow-gpu==2.3.1
  1. How do I know what is installed (specifically python packages) when I pull FROM rasa/rasa:2.1.3-full? Is it shown under [tool.poetry.dependencies] key of https://github.com/RasaHQ/rasa/blob/main/pyproject.toml?

  2. How do I know what is installed when doing pip install rasa[full]==2.1.3 or pip install rasa[==2.1.3? Is there a way to list the nested dependencies like tensorflow?

  3. What tensorflow and tensorflow-gpu version is rasa installing? It seems like rasa does not care about tensorflow-gpu at all, and is depending on the fact that installing tensorflow alone will automatically use GPU if there is GPU? Please confirm or deny Tensorflow after 1.15 - No need to install tensorflow-gpu package - Stack Overflow

  4. When designing docker image, is it a matter of preference whether we pull from image or install through pip? (reference to question 1). What heuristics lead us to choose 1 way or another? Any non-rasa/tensorflow examples are welcome too.

  5. When doing rasa train after

FROM tensorflow/tensorflow:2.3.1-gpu
RUN pip install rasa[full]==2.1.3

I get

InvalidModelError: Please confirm that en_core_web_md is an available spaCy model. You need to download one upfront. For example: python -m spacy download en_core_web_md.

I don’t remember seeing this error in other workflows, and don’t think this warning would occur if FROM rasa/rasa:2.1.3-full was used. Which is the command that automatically downloaded this spacy model? I was trying to find it from the Image Layers shown at Docker Hub but don’t see anything spacy related.

You can find the answers to this in the source repo. For example, you can see how the -full image is built in the makefile here.

For enterprise deployments, the docker images and kubernetes helm chart are recommended.