Skip to content

Commit 0e05d9f

Browse files
authored
Merge pull request #50 from RapidAI/copilot/review-pr-38
Fix OpenVINO inference engine integration issues from PR #38
2 parents af8c351 + 835921f commit 0e05d9f

3 files changed

Lines changed: 42 additions & 32 deletions

File tree

rapid_layout/configs/engine_cfg.yaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ onnxruntime:
2626
enable_cann_graph: true
2727

2828
openvino:
29-
device: "CPU"
30-
inference_num_threads: -1
31-
performance_hint: "LATENCY"
32-
performance_num_requests: -1
33-
enable_cpu_pinning: null
34-
num_streams: -1
35-
enable_hyper_threading: null
36-
scheduling_core_type: null
29+
device: "CPU"
30+
inference_num_threads: -1
31+
performance_hint: "LATENCY"
32+
performance_num_requests: -1
33+
enable_cpu_pinning: null
34+
num_streams: -1
35+
enable_hyper_threading: null
36+
scheduling_core_type: null
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
from .main import OpenVINOInferSession
1+
from .main import OpenVINOInferSession

rapid_layout/inference_engine/openvino/main.py

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
import traceback
23
from pathlib import Path
34
from typing import Any, Dict, List
@@ -51,28 +52,29 @@ def __init__(self, cfg: RapidLayoutInput):
5152

5253
def _init_config(self, cfg: DictConfig) -> Dict[str, str]:
5354
config = {}
54-
engine_cfg = cfg.get("engine_cfg", {})
5555

5656
def _set(k, v, *, cast=str):
5757
if v is not None and v != -1:
58-
config[k] = cast(v)
59-
60-
_set("INFERENCE_NUM_THREADS",
61-
engine_cfg.get("inference_num_threads", -1),
62-
cast=lambda x: str(min(x, os.cpu_count())) if x > 0 else None)
63-
64-
_set("PERFORMANCE_HINT",
65-
engine_cfg.get("performance_hint"))
66-
_set("PERFORMANCE_HINT_NUM_REQUESTS",
67-
engine_cfg.get("performance_num_requests"))
68-
_set("ENABLE_CPU_PINNING",
69-
engine_cfg.get("enable_cpu_pinning"))
70-
_set("NUM_STREAMS",
71-
engine_cfg.get("num_streams"))
72-
_set("ENABLE_HYPER_THREADING",
73-
engine_cfg.get("enable_hyper_threading"))
74-
_set("SCHEDULING_CORE_TYPE",
75-
engine_cfg.get("scheduling_core_type"))
58+
casted_value = cast(v)
59+
if casted_value is not None:
60+
config[k] = casted_value
61+
62+
inference_num_threads = cfg.get("inference_num_threads", -1)
63+
if inference_num_threads > 0:
64+
cpu_count = os.cpu_count()
65+
if cpu_count is not None:
66+
_set(
67+
"INFERENCE_NUM_THREADS",
68+
inference_num_threads,
69+
cast=lambda x: str(min(x, cpu_count)),
70+
)
71+
72+
_set("PERFORMANCE_HINT", cfg.get("performance_hint"))
73+
_set("PERFORMANCE_HINT_NUM_REQUESTS", cfg.get("performance_num_requests"))
74+
_set("ENABLE_CPU_PINNING", cfg.get("enable_cpu_pinning"))
75+
_set("NUM_STREAMS", cfg.get("num_streams"))
76+
_set("ENABLE_HYPER_THREADING", cfg.get("enable_hyper_threading"))
77+
_set("SCHEDULING_CORE_TYPE", cfg.get("scheduling_core_type"))
7678

7779
if config:
7880
self.logger.info("OpenVINO runtime config: %s", config)
@@ -107,14 +109,22 @@ def characters(self):
107109
return self.get_character_list()
108110

109111
def get_character_list(self, key: str = "character") -> List[str]:
110-
val = self.model.get_rt_info()["framework"][key]
111-
return val.value.splitlines()
112+
rt_info = self.model.get_rt_info()
113+
framework_info = rt_info.get("framework", {})
114+
val = framework_info.get(key)
115+
if val is None or not hasattr(val, "value"):
116+
return []
117+
value = getattr(val, "value", None)
118+
if value is None:
119+
return []
120+
return value.splitlines()
112121

113122
def have_key(self, key: str = "character") -> bool:
114123
try:
115124
rt_info = self.model.get_rt_info()
116-
return key in rt_info
117-
except:
125+
framework_info = rt_info.get("framework", {})
126+
return key in framework_info
127+
except (AttributeError, TypeError, KeyError):
118128
return False
119129

120130

0 commit comments

Comments
 (0)