From ff63b808419f0600a0e55fffad243302b8428f9d Mon Sep 17 00:00:00 2001 From: gouzi <530971494@qq.com> Date: Wed, 9 Jul 2025 20:36:08 +0800 Subject: [PATCH 1/3] fix: `DocVLMPredictor` device use error --- paddlex/inference/models/doc_vlm/predictor.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/paddlex/inference/models/doc_vlm/predictor.py b/paddlex/inference/models/doc_vlm/predictor.py index c7fb3a0c77..38910a2cc6 100644 --- a/paddlex/inference/models/doc_vlm/predictor.py +++ b/paddlex/inference/models/doc_vlm/predictor.py @@ -18,7 +18,7 @@ from typing import List from ....modules.doc_vlm.model_list import MODELS -from ....utils.device import TemporaryDeviceChanger +from ....utils.device import TemporaryDeviceChanger, constr_device from ....utils.env import get_device_type from ...common.batch_sampler import DocVLMBatchSampler from ..base import BasePredictor @@ -44,6 +44,9 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.device = kwargs.get("device", None) + if self.device is None and self.pp_option is not None: + if self.pp_option.device_type is not None and self.pp_option.device_type != "cpu": + self.device = constr_device(self.pp_option.device_type, str(self.pp_option.device_id)) self.dtype = ( "bfloat16" if ("npu" in get_device_type() or paddle.amp.is_bfloat16_supported()) From b239eab52247a2d27913e1efd37357872617d440 Mon Sep 17 00:00:00 2001 From: gouzi <530971494@qq.com> Date: Wed, 16 Jul 2025 21:25:59 +0800 Subject: [PATCH 2/3] fix --- paddlex/inference/models/doc_vlm/predictor.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/paddlex/inference/models/doc_vlm/predictor.py b/paddlex/inference/models/doc_vlm/predictor.py index 38910a2cc6..b6b75ba824 100644 --- a/paddlex/inference/models/doc_vlm/predictor.py +++ b/paddlex/inference/models/doc_vlm/predictor.py @@ -45,8 +45,15 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.device = kwargs.get("device", None) if self.device is None and self.pp_option is not None: - if self.pp_option.device_type is not None and self.pp_option.device_type != "cpu": - self.device = constr_device(self.pp_option.device_type, str(self.pp_option.device_id)) + if self.pp_option.device_type is not None: + self.device = constr_device( + self.pp_option.device_type, + ( + str(self.pp_option.device_id) + if self.pp_option.device_type != "cpu" + else None + ), + ) self.dtype = ( "bfloat16" if ("npu" in get_device_type() or paddle.amp.is_bfloat16_supported()) From 7cae6ce96d8305a2ffb4a1215b4d5e0b9f2f53ad Mon Sep 17 00:00:00 2001 From: gouzi <530971494@qq.com> Date: Fri, 5 Sep 2025 23:21:26 +0800 Subject: [PATCH 3/3] fix: pp_option device id --- paddlex/inference/models/doc_vlm/predictor.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/paddlex/inference/models/doc_vlm/predictor.py b/paddlex/inference/models/doc_vlm/predictor.py index b6b75ba824..b53b233439 100644 --- a/paddlex/inference/models/doc_vlm/predictor.py +++ b/paddlex/inference/models/doc_vlm/predictor.py @@ -46,14 +46,12 @@ def __init__(self, *args, **kwargs): self.device = kwargs.get("device", None) if self.device is None and self.pp_option is not None: if self.pp_option.device_type is not None: - self.device = constr_device( - self.pp_option.device_type, - ( - str(self.pp_option.device_id) - if self.pp_option.device_type != "cpu" - else None - ), + device_ids = ( + None + if self.pp_option.device_id is None + else [self.pp_option.device_id] ) + self.device = constr_device(self.pp_option.device_type, device_ids) self.dtype = ( "bfloat16" if ("npu" in get_device_type() or paddle.amp.is_bfloat16_supported())