diff --git a/tueri/output_scanners/factual_consistency.py b/tueri/output_scanners/factual_consistency.py index 1cb7bb63..e3f6e726 100644 --- a/tueri/output_scanners/factual_consistency.py +++ b/tueri/output_scanners/factual_consistency.py @@ -50,7 +50,11 @@ def __init__( use_onnx=use_onnx, ) if not use_onnx: - self._model = self._model.to(device()) + # Handle meta device properly - use to_empty() when moving from meta device + if hasattr(self._model, 'device') and str(self._model.device) == 'meta': + self._model = self._model.to_empty(device=device()) + else: + self._model = self._model.to(device()) self._model.eval() def scan(self, prompt: str, output: str) -> tuple[str, bool, float]: diff --git a/tueri/output_scanners/relevance.py b/tueri/output_scanners/relevance.py index c5715a37..402da9c9 100644 --- a/tueri/output_scanners/relevance.py +++ b/tueri/output_scanners/relevance.py @@ -110,7 +110,12 @@ def __init__( subfolder=model.subfolder, revision=model.revision, **model.kwargs, - ).to(device()) + ) + # Handle meta device properly - use to_empty() when moving from meta device + if hasattr(self._model, 'device') and str(self._model.device) == 'meta': + self._model = self._model.to_empty(device=device()) + else: + self._model = self._model.to(device()) LOGGER.debug("Initialized model", model=model, device=device()) self._model.eval() diff --git a/tueri/transformers_helpers.py b/tueri/transformers_helpers.py index 8fa34edb..1cf58632 100644 --- a/tueri/transformers_helpers.py +++ b/tueri/transformers_helpers.py @@ -93,7 +93,11 @@ def get_tokenizer_and_model_for_classification( low_cpu_mem_usage=False, **model.kwargs, ) - tf_model = tf_model.to(device()) + # Handle meta device properly - use to_empty() when moving from meta device + if hasattr(tf_model, 'device') and str(tf_model.device) == 'meta': + tf_model = tf_model.to_empty(device=device()) + else: + tf_model = tf_model.to(device()) LOGGER.debug("Initialized classification model", model=model, device=device()) return tf_tokenizer, tf_model @@ -131,7 +135,11 @@ def get_tokenizer_and_model_for_ner( low_cpu_mem_usage=False, **model.kwargs, ) - tf_model = tf_model.to(device()) + # Handle meta device properly - use to_empty() when moving from meta device + if hasattr(tf_model, 'device') and str(tf_model.device) == 'meta': + tf_model = tf_model.to_empty(device=device()) + else: + tf_model = tf_model.to(device()) LOGGER.debug("Initialized NER model", model=model, device=device()) return tf_tokenizer, tf_model