Cannot train NLU model after changing pipeline

I don’t understand why training fails after I’ve added Duckling to my pipeline. Training fra Rasa X, traceback from docker console.

config.yml

language: dk
pipeline:
  - name: supervised_embeddings
  - name: DucklingHTTPExtractor
    url: 'http://localhost:8000'
    dimensions:
      - time
    locale: da_DK
    timezone: Europe/Berlin
    timeout: 3
policies:
  - name: MemoizationPolicy
  - name: KerasPolicy
  - name: MappingPolicy
  - name: FallbackPolicy
    nlu_threshold: 0.3
    core_threshold: 0.3

Traceback

Training NLU model...                                                                                                                                                                                                                        2019-12-10 09:10:43 ERROR    
rasax.community.api.blueprints.models
  - 500, Internal Server Error, 
body='b'{
	"version":"1.5.1",
	"status":"failure",
	"message":"An unexpected error occurred during training. Error: Cannot find class \'supervised_embeddings\' from global namespace. Please check that there is no typo in the class name and that you have imported the class into the global namespace.",
	"reason":"TrainingError",
	"details":{},
	"help":null,
	"code":500
}

Hi @Krogsager,

you are combining a preconfigured NLU pipeline (preconfigured pipelines) with an actual component.

You should have this instead:

language: "en"

pipeline:
- name: "WhitespaceTokenizer"
- name: "RegexFeaturizer"
- name: "CRFEntityExtractor"
- name: "EntitySynonymMapper"
- name: "CountVectorsFeaturizer"
- name: "CountVectorsFeaturizer"
  analyzer: "char_wb"
  min_ngram: 1
  max_ngram: 4
- name: "EmbeddingIntentClassifier"
  - name: DucklingHTTPExtractor
    url: 'http://localhost:8000'
    dimensions:
      - time
    locale: da_DK
    timezone: Europe/Berlin
    timeout: 3

I see. Do I have to monitor this page to keep the configuration up to date?

Here are the default components that make up the supervised_embeddings pipeline

Fortunately, the changes to the default pipeline configuration are very rare. What behavior would you expect / prefer? Mixing pipeline templates and individual components is a bit tricky, cause there can be multiple instances of some components, but for some components multiple components don’t make sense.

The config is rather opaque and complicated. It is something I set up and forget about. I doubt that I will ever want/dare to change the setup from the default components of supervised_embeddings. I just think “how do I add x feature?”, in this case Duckling, so for me the ideal behavior would be so the config file was more forgiving to use.