Skip to content

Commit

Permalink
optimize: dont load padacioso if not needed by default
Browse files Browse the repository at this point in the history
  • Loading branch information
JarbasAl committed Dec 9, 2024
1 parent 88b094d commit b2e1494
Showing 1 changed file with 33 additions and 15 deletions.
48 changes: 33 additions & 15 deletions ovos_core/intent_services/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@
from collections import defaultdict
from typing import Tuple, Callable, Union

from ocp_pipeline.opm import OCPPipelineMatcher
from ovos_adapt.opm import AdaptPipeline
from ovos_commonqa.opm import CommonQAService
from padacioso.opm import PadaciosoPipeline as PadaciosoService

from ocp_pipeline.opm import OCPPipelineMatcher
from ovos_bus_client.message import Message
from ovos_bus_client.session import SessionManager
from ovos_bus_client.util import get_message_lang
from ovos_commonqa.opm import CommonQAService
from ovos_config.config import Configuration
from ovos_config.locale import setup_locale, get_valid_languages
from ovos_config.locale import get_valid_languages
from ovos_core.intent_services.converse_service import ConverseService
from ovos_core.intent_services.fallback_service import FallbackService
from ovos_core.intent_services.stop_service import StopService
Expand All @@ -31,7 +33,6 @@
from ovos_utils.lang import standardize_lang_tag
from ovos_utils.log import LOG, log_deprecation, deprecated
from ovos_utils.metrics import Stopwatch
from padacioso.opm import PadaciosoPipeline as PadaciosoService


class IntentService:
Expand Down Expand Up @@ -96,7 +97,14 @@ def _load_pipeline_plugins(self):
except ImportError:
LOG.error(f'Failed to create padatious intent handlers, padatious not installed')

self._padacioso_service = PadaciosoService(self.bus, self.config["padatious"])
# by default only load padacioso is padatious is not available
# save memory if padacioso isnt needed
disable_padacioso = self.config.get("disable_padacioso", self._padatious_service is not None)
if not disable_padacioso:
self._padacioso_service = PadaciosoService(self.bus, self.config["padatious"])
elif "disable_padacioso" not in self.config:
LOG.debug("Padacioso pipeline is disabled, only padatious is loaded. "
"set 'disable_padacioso': false in mycroft.conf if you want it to load alongside padatious")
self._fallback = FallbackService(self.bus)
self._converse = ConverseService(self.bus)
self._common_qa = CommonQAService(self.bus, self.config.get("common_query"))
Expand Down Expand Up @@ -168,11 +176,13 @@ def get_pipeline(self, skips=None, session=None) -> Tuple[str, Callable]:

# Create matchers
# TODO - from plugins
padatious_matcher = None
if self._padatious_service is None:
if any("padatious" in p for p in session.pipeline):
LOG.warning("padatious is not available! using padacioso in it's place, "
"intent matching will be extremely slow in comparison")
padatious_matcher = self._padacioso_service
if self._padacioso_service is not None:
if any("padatious" in p for p in session.pipeline):
LOG.warning("padatious is not available! using padacioso in it's place, "
"intent matching will be extremely slow in comparison")
padatious_matcher = self._padacioso_service
else:
padatious_matcher = self._padatious_service

Expand All @@ -181,20 +191,28 @@ def get_pipeline(self, skips=None, session=None) -> Tuple[str, Callable]:
"stop_high": self._stop.match_stop_high,
"stop_medium": self._stop.match_stop_medium,
"stop_low": self._stop.match_stop_low,
"padatious_high": padatious_matcher.match_high,
"padacioso_high": self._padacioso_service.match_high,
"adapt_high": self._adapt_service.match_high,
"common_qa": self._common_qa.match,
"fallback_high": self._fallback.high_prio,
"padatious_medium": padatious_matcher.match_medium,
"padacioso_medium": self._padacioso_service.match_medium,
"adapt_medium": self._adapt_service.match_medium,
"fallback_medium": self._fallback.medium_prio,
"padatious_low": padatious_matcher.match_low,
"padacioso_low": self._padacioso_service.match_low,
"adapt_low": self._adapt_service.match_low,
"fallback_low": self._fallback.low_prio
}
if self._padacioso_service is not None:
matchers.update({
"padacioso_high": self._padacioso_service.match_high,
"padacioso_medium": self._padacioso_service.match_medium,
"padacioso_low": self._padacioso_service.match_low,

})
if self._padatious_service is not None:
matchers.update({
"padatious_high": padatious_matcher.match_high,
"padatious_medium": padatious_matcher.match_medium,
"padatious_low": padatious_matcher.match_low,

})
if self._ocp is not None:
matchers.update({
"ocp_high": self._ocp.match_high,
Expand Down

0 comments on commit b2e1494

Please sign in to comment.