Fix vqa script (#66)

* fix vqa script

* lint
This commit is contained in:
Lufang Chen
2025-11-04 22:22:51 +08:00
committed by GitHub
parent 345677c8fa
commit fbe354c266
+15 -5
View File
@@ -1,15 +1,16 @@
import torch import torch
from PIL import Image from PIL import Image
from transformers import AutoProcessor from transformers import AutoProcessor
import yaml
from wall_x.model.qwen2_5_based.modeling_qwen2_5_vl_act import Qwen2_5_VLMoEForAction from wall_x.model.qwen2_5_based.modeling_qwen2_5_vl_act import Qwen2_5_VLMoEForAction
class VQAWrapper(object): class VQAWrapper(object):
def __init__(self, model_path: str): def __init__(self, model_path: str, train_config: dict):
self.device = self._setup_device() self.device = self._setup_device()
self.processor = self._load_processor(model_path) self.processor = self._load_processor(model_path)
self.model = self._load_model(model_path) self.model = self._load_model(model_path, train_config)
def _setup_device(self) -> str: def _setup_device(self) -> str:
if torch.cuda.is_available(): if torch.cuda.is_available():
@@ -20,8 +21,12 @@ class VQAWrapper(object):
def _load_processor(self, model_path: str) -> AutoProcessor: def _load_processor(self, model_path: str) -> AutoProcessor:
return AutoProcessor.from_pretrained(model_path, trust_remote_code=True) return AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
def _load_model(self, model_path: str) -> Qwen2_5_VLMoEForAction: def _load_model(
model = Qwen2_5_VLMoEForAction.from_pretrained(model_path) self, model_path: str, train_config: dict
) -> Qwen2_5_VLMoEForAction:
model = Qwen2_5_VLMoEForAction.from_pretrained(
model_path, train_config=train_config
)
if self.device == "cuda": if self.device == "cuda":
model = model.to(self.device, dtype=torch.bfloat16) model = model.to(self.device, dtype=torch.bfloat16)
else: else:
@@ -65,7 +70,12 @@ class VQAWrapper(object):
if __name__ == "__main__": if __name__ == "__main__":
MODEL_PATH_FOR_MODULE_TEST = "/path/to/model" MODEL_PATH_FOR_MODULE_TEST = "/path/to/model"
wrapper = VQAWrapper(model_path=MODEL_PATH_FOR_MODULE_TEST) train_config_path = "/path/to/config.yaml"
with open(train_config_path, "r") as f:
train_config = yaml.load(f, Loader=yaml.FullLoader)
wrapper = VQAWrapper(
model_path=MODEL_PATH_FOR_MODULE_TEST, train_config=train_config
)
try: try:
test_question = "To move the red block in the plate with same color, what should you do next? Think step by step." test_question = "To move the red block in the plate with same color, what should you do next? Think step by step."