Commit 9947e439 authored by YaningGao's avatar YaningGao
Browse files

revice model acquisition logic

parent 7f367336
Loading
Loading
Loading
Loading
+1 −24
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@ from vagen.env.svg.env import SVGEnv
from vagen.env.svg.env_config import SvgEnvConfig
from vagen.server.serial import serialize_observation, serialize_step_result
from vagen.env.svg.score import calculate_total_score, calculate_total_score_batch
from vagen.env.svg.dino import get_dino_model
from vagen.env.svg.svg_utils import process_and_rasterize_svg, is_valid_svg
from vagen.env.utils.context_utils import parse_llm_raw_response, convert_numpy_to_PIL
from .service_config import SVGServiceConfig
@@ -44,25 +43,6 @@ class SVGService(BaseService):
        self.device = "cuda" if torch.cuda.is_available() else "cpu"
        print(f"SVGService initialized with {self.max_workers} workers, model_size={self.model_size}, device={self.device}")
    
    def _get_dino_model(self):
        """
        Get or initialize the DINO model.
        Uses lazy loading to avoid loading the model until needed.
        """
        if self.dino_model is None:
            self.dino_model = get_dino_model(self.model_size, self.device)
        return self.dino_model

    def _get_dreamsim_model(self):
        """
        Get or initialize the DreamSim model.
        Uses lazy loading to avoid loading the model until needed.
        """
        if self.dreamsim_model is None:
            from vagen.env.svg.dreamsim import get_dreamsim_model
            self.dreamsim_model = get_dreamsim_model(self.device)
        return self.dreamsim_model
    
    def create_environments_batch(self, ids2configs: Dict[Any, Any]) -> None:
        """
        Create multiple SVG environments in parallel.
@@ -192,13 +172,10 @@ class SVGService(BaseService):
        
        # Step 3: Batch process scores if there are valid images
        if valid_env_ids:
            # Get DINO model
            dino_model = self._get_dino_model()
            dreamsim_model = self._get_dreamsim_model()

            # Calculate all scores at once
            batch_results = calculate_total_score_batch(
                gt_images, gen_images, gt_codes, gen_codes, score_configs, dino_model, dreamsim_model
                gt_images, gen_images, gt_codes, gen_codes, score_configs
            )
            
            # Process results directly using the index mapping