Преглед изворни кода

feat: add shutdown method to engine

AlpinDale пре 8 месеци
родитељ
комит
41338053e7
2 измењених фајлова са 13 додато и 0 уклоњено
  1. 6 0
      aphrodite/engine/aphrodite_engine.py
  2. 7 0
      aphrodite/executor/executor_base.py

+ 6 - 0
aphrodite/engine/aphrodite_engine.py

@@ -239,6 +239,12 @@ class AphroditeEngine:
         # the closure used to initialize Ray worker actors
         raise RuntimeError("AphroditeEngine should not be pickled!")
 
+    def __del__(self):
+        # Shutdown the model executor when engine is garbage collected.
+        # Use getattr since __init__ can fail before the field is set
+        if model_executor := getattr(self, "model_executor", None):
+            model_executor.shutdown()
+
     def get_tokenizer(self) -> "PreTrainedTokenizer":
         return self.tokenizer.get_lora_tokenizer(None)
 

+ 7 - 0
aphrodite/executor/executor_base.py

@@ -96,6 +96,13 @@ class ExecutorBase(ABC):
         exception."""
         raise NotImplementedError
 
+    def shutdown(self) -> None:
+        """Shutdown the executor."""
+        return
+
+    def __del__(self):
+        self.shutdown()
+
 
 class ExecutorAsyncBase(ExecutorBase):