code-loader 0.2.88__py3-none-any.whl → 0.2.89__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- code_loader/leap_loader_parallelized_base.py +2 -2
- code_loader/leaploader.py +1 -0
- code_loader/visualizer_calculator_parallelized.py +63 -0
- {code_loader-0.2.88.dist-info → code_loader-0.2.89.dist-info}/METADATA +1 -1
- {code_loader-0.2.88.dist-info → code_loader-0.2.89.dist-info}/RECORD +7 -6
- {code_loader-0.2.88.dist-info → code_loader-0.2.89.dist-info}/LICENSE +0 -0
- {code_loader-0.2.88.dist-info → code_loader-0.2.89.dist-info}/WHEEL +0 -0
@@ -32,13 +32,13 @@ class LeapLoaderParallelizedBase(ABC):
|
|
32
32
|
self._generate_inputs_thread: Optional[Thread] = None
|
33
33
|
self._should_stop_thread = False
|
34
34
|
|
35
|
-
def
|
35
|
+
def _calculate_n_workers_bpyproject.tomly_hardware(self) -> int:
|
36
36
|
p = psutil.Process(self.processes[0].pid)
|
37
37
|
memory_usage_in_bytes = p.memory_info().rss
|
38
38
|
total_memory_in_bytes = psutil.virtual_memory().total
|
39
39
|
|
40
40
|
n_workers = min(int(multiprocessing.cpu_count()),
|
41
|
-
int(total_memory_in_bytes * 0.
|
41
|
+
int(total_memory_in_bytes * 0.5 / memory_usage_in_bytes))
|
42
42
|
n_workers = max(n_workers, 1)
|
43
43
|
return n_workers
|
44
44
|
|
code_loader/leaploader.py
CHANGED
@@ -327,6 +327,7 @@ class LeapLoader:
|
|
327
327
|
|
328
328
|
@lru_cache()
|
329
329
|
def _preprocess_result(self) -> Dict[DataStateEnum, PreprocessResponse]:
|
330
|
+
self.exec_script()
|
330
331
|
preprocess = global_leap_binder.setup_container.preprocess
|
331
332
|
# TODO: add caching of subset result
|
332
333
|
assert preprocess is not None
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# mypy: ignore-errors
|
2
|
+
from typing import Optional, List, Tuple, Dict
|
3
|
+
from multiprocessing import Process, Queue
|
4
|
+
|
5
|
+
import numpy as np
|
6
|
+
|
7
|
+
from code_loader.leap_loader_parallelized_base import LeapLoaderParallelizedBase
|
8
|
+
from dataclasses import dataclass
|
9
|
+
import tensorflow as tf
|
10
|
+
from code_loader.leaploader import LeapLoader
|
11
|
+
|
12
|
+
|
13
|
+
@dataclass
|
14
|
+
class VisualizerSerializableError:
|
15
|
+
visualizer_id: str
|
16
|
+
visualizer_name: str
|
17
|
+
index_in_batch: int
|
18
|
+
exception_as_str: str
|
19
|
+
|
20
|
+
|
21
|
+
class VisualizerCalculatorParallelized(LeapLoaderParallelizedBase):
|
22
|
+
def __init__(self, code_path: str, code_entry_name: str, n_workers: Optional[int] = 2,
|
23
|
+
max_samples_in_queue: int = 128) -> None:
|
24
|
+
super().__init__(code_path, code_entry_name, n_workers, max_samples_in_queue, "spawn")
|
25
|
+
|
26
|
+
@staticmethod
|
27
|
+
def _process_func(code_path: str, code_entry_name: str,
|
28
|
+
visualizers_to_process: Queue, ready_visualizations: Queue) -> None:
|
29
|
+
import os
|
30
|
+
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
|
31
|
+
|
32
|
+
leap_loader = LeapLoader(code_path, code_entry_name)
|
33
|
+
|
34
|
+
# running preprocessing to sync preprocessing in main thread (can be valuable when preprocess is filling a
|
35
|
+
# global param that visualizer is using)
|
36
|
+
leap_loader._preprocess_result()
|
37
|
+
leap_loader._preprocess_result.cache_clear()
|
38
|
+
|
39
|
+
while True:
|
40
|
+
index_in_batch, visualizer_id, visualizer_name, input_arg_name_to_tensor = \
|
41
|
+
visualizers_to_process.get(block=True)
|
42
|
+
try:
|
43
|
+
with tf.device('/cpu:0'):
|
44
|
+
visualizer_result = \
|
45
|
+
leap_loader.visualizer_by_name()[visualizer_name].function(**input_arg_name_to_tensor)
|
46
|
+
except Exception as e:
|
47
|
+
ready_visualizations.put(VisualizerSerializableError(
|
48
|
+
visualizer_id, visualizer_name, index_in_batch, str(e)))
|
49
|
+
continue
|
50
|
+
|
51
|
+
ready_visualizations.put((index_in_batch, visualizer_id, visualizer_result))
|
52
|
+
|
53
|
+
def _create_and_start_process(self) -> Process:
|
54
|
+
process = self.multiprocessing_context.Process(
|
55
|
+
target=VisualizerCalculatorParallelized._process_func,
|
56
|
+
args=(self.code_path, self.code_entry_name, self._inputs_waiting_to_be_process,
|
57
|
+
self._ready_processed_results))
|
58
|
+
process.daemon = True
|
59
|
+
process.start()
|
60
|
+
return process
|
61
|
+
|
62
|
+
def calculate_visualizers(self, input_arg_name_to_tensor_list: List[Tuple[int, str, str, Dict[str, np.array]]]):
|
63
|
+
return self.start_process_inputs(input_arg_name_to_tensor_list)
|
@@ -20,16 +20,17 @@ code_loader/helpers/instancesegmentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5
|
|
20
20
|
code_loader/helpers/instancesegmentation/utils.py,sha256=bl4nlg7mV8CZyPl8grGAE5603TFVM7PTZyM3BRMbXBg,930
|
21
21
|
code_loader/leap_binder/__init__.py,sha256=Oe7DNj6RmgX-tMruOrI7GYvf3SyAnzOxugF2e117_Z8,93
|
22
22
|
code_loader/leap_binder/leapbinder.py,sha256=-Ny2YewT1jg36Q5AXK8F2Fmv34zxhbcXZp807jIcHws,6293
|
23
|
-
code_loader/leap_loader_parallelized_base.py,sha256=
|
24
|
-
code_loader/leaploader.py,sha256=
|
23
|
+
code_loader/leap_loader_parallelized_base.py,sha256=4G7Ch3DmgArqmXAKyLCG5JJCgJ6V9LgueBDVKSyts0w,4772
|
24
|
+
code_loader/leaploader.py,sha256=wb-eiGw6p-CML8w3noESEjJLjXJ_AiHxfAlGxSBtjYA,18523
|
25
25
|
code_loader/metric_calculator_parallelized.py,sha256=X1FHFlfPorjFVNbms19s_yItkKFja0b97wUJHNvvlxs,2233
|
26
26
|
code_loader/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
27
|
code_loader/metrics/default_metrics.py,sha256=xtvTskR7LC5pyKSlFcvlyBpFY9TSXNGVAi5taEPSI60,6727
|
28
28
|
code_loader/samples_generator_parallelized.py,sha256=_t0lmf11y1Tas4bdndOSk2b2QMjBQt9N_voTg-tcTuQ,2376
|
29
29
|
code_loader/utils.py,sha256=WUcM97OuxrhfLCRPoH9EbXrxajNpYgX1CTMc3_PXtYU,1736
|
30
|
+
code_loader/visualizer_calculator_parallelized.py,sha256=dKAixQ7-TIcG2sEkvbDbxKyuZP0WJP5oLO2bqN2mWRY,2597
|
30
31
|
code_loader/visualizers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
31
32
|
code_loader/visualizers/default_visualizers.py,sha256=HqWx2qfTrroGl2n8Fpmr_4X-rk7tE2oGapjO3gzz4WY,2226
|
32
|
-
code_loader-0.2.
|
33
|
-
code_loader-0.2.
|
34
|
-
code_loader-0.2.
|
35
|
-
code_loader-0.2.
|
33
|
+
code_loader-0.2.89.dist-info/LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
|
34
|
+
code_loader-0.2.89.dist-info/METADATA,sha256=5L_HuArCRwuKYwHVcGXqcD_xanKChIFKcWtNdL-7tgU,950
|
35
|
+
code_loader-0.2.89.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
36
|
+
code_loader-0.2.89.dist-info/RECORD,,
|
File without changes
|
File without changes
|