Skip to content

Instantly share code, notes, and snippets.

@EFF
Last active April 6, 2021 21:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save EFF/4ca70e15a0012621017321a9b9021b13 to your computer and use it in GitHub Desktop.
Save EFF/4ca70e15a0012621017321a9b9021b13 to your computer and use it in GitHub Desktop.

Solutions pour sortir le NLU

Solution 1 (La plus simple)

Description

Engine ne change pas d'interface et on code un http API par dessus.

Avantages

  1. Rapide à coder
  2. break rien pentoute

Désavantages

  1. Demande de pousser un model de 1Gb à chaque fois que le model est bumpé de la cache
  2. Demande de supporter deux serveurs de NLU différents; Stan et Engine

Solution 2 (La plus compliquée)

Description

On utilise Stan, mais on copie/colle les models de APP_DATA_PATH vers le ghost pour ne pas breaker les users qui ont plusieurs clusters.

Avantages

  1. Un seul http server à supporter pour le NLU
  2. Pas de code à ajouter dans Stan
  3. Pas de passage de models par HTTP

Désavantages

  1. Demande de syncer le ghost et le FS à 3 places différentes:
    1.1 on bot mount: - on copie tout les models du bot vers APP_DATA_PATH 1.2 après un training: - on copie le model de APP_DATA_PATH vers le ghost - important car si on spin une nouvelle node de Botpress, les models du bot doivent être dans le ghost 1.3 on bot unmount: - on doit deleter les models du file system sauf si le model est utilisé par plusieurs bot
  2. Demande à ce que chaque node de Botpress spin son propre Stan pour sharer un même FS.
  3. Demande de refactorer le module NLU

Solution 3 (La plus durable IMO)

Description

On ajoute la possibilité à Stan de persister les models dans un bucket S3 (ou n'importe quel distributed file system DFS).

Avantages

  1. Un seul http server à supporter pour le NLU
  2. Rend Stan dispo pour HA
  3. Pas de synchronization à faire entre le ghost et le FS (Les models sont à un seul endroit)
  4. Il n'y aucune obligation à ce que Stan roule sur la même machine qu'une node de Botpress
  5. Rien de breaking

Désavantages

  1. Demande d'ajouter des endpoints dans Stan (listModels, deleteModels)
  2. Demande de coder un client DFS
  3. Rajoute une dependency dans botpress à une techno de DFS
  4. Demande de refactorer le module NLU quand même

Solution 4 (step vers #3)

Description

1 seule instance de Stan ... Chaque instance dépendent du Stan qui roule

Avantages

  1. Models tous au meme endroit (FS de stan)
  2. Pas de synchronization à faire entre le ghost et le FS (Les models sont à un seul endroit)
  3. Rien de breaking
  4. Il n'y aucune obligation à ce que Stan roule sur la même machine qu'une node de Botpress

Désavantages

  1. Demande d'ajouter des endpoints dans Stan (listModels, deleteModels)
  2. L'instance Stan devient un bottleneck
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment