Spawn a new process for each GPU
Browse files- src/vadParallel.py +6 -1
src/vadParallel.py
CHANGED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
from src.vad import AbstractTranscription, TranscriptionConfig
|
2 |
from src.whisperContainer import WhisperCallback
|
3 |
|
@@ -22,6 +23,7 @@ class ParallelTranscription(AbstractTranscription):
|
|
22 |
merged = transcription.get_merged_timestamps(audio, config)
|
23 |
|
24 |
# Split into a list for each device
|
|
|
25 |
merged_split = self._chunks(merged, len(merged) // len(devices))
|
26 |
|
27 |
# Parameters that will be passed to the transcribe function
|
@@ -43,7 +45,10 @@ class ParallelTranscription(AbstractTranscription):
|
|
43 |
'language': None
|
44 |
}
|
45 |
|
46 |
-
|
|
|
|
|
|
|
47 |
# Run the transcription in parallel
|
48 |
results = p.starmap(self.transcribe, parameters)
|
49 |
|
|
|
1 |
+
import multiprocessing
|
2 |
from src.vad import AbstractTranscription, TranscriptionConfig
|
3 |
from src.whisperContainer import WhisperCallback
|
4 |
|
|
|
23 |
merged = transcription.get_merged_timestamps(audio, config)
|
24 |
|
25 |
# Split into a list for each device
|
26 |
+
# TODO: Split by time instead of by number of chunks
|
27 |
merged_split = self._chunks(merged, len(merged) // len(devices))
|
28 |
|
29 |
# Parameters that will be passed to the transcribe function
|
|
|
45 |
'language': None
|
46 |
}
|
47 |
|
48 |
+
# Spawn a separate process for each device
|
49 |
+
context = multiprocessing.get_context('spawn')
|
50 |
+
|
51 |
+
with context.Pool(len(devices)) as p:
|
52 |
# Run the transcription in parallel
|
53 |
results = p.starmap(self.transcribe, parameters)
|
54 |
|