From b14a0a2a1751d09863e34f5307b64af9ddd82c61 Mon Sep 17 00:00:00 2001 From: qtnull Date: Sat, 19 Apr 2025 20:05:35 +0200 Subject: [PATCH] I am giving up on MTAFE --- .../Implementation attempt for MTAFE.md | 15 + mtafe_lab/mtafe.py | 281 ++++++++++++++++-- mtafe_lab/test_mp.py | 30 -- mtafe_lab/test_mtafe.py | 23 +- mtafe_lab/testmtafeprofile.txt | Bin 0 -> 173665 bytes 5 files changed, 286 insertions(+), 63 deletions(-) create mode 100644 DLSiteFSearchObsidian/Implementation attempt for MTAFE.md delete mode 100644 mtafe_lab/test_mp.py create mode 100644 mtafe_lab/testmtafeprofile.txt diff --git a/DLSiteFSearchObsidian/Implementation attempt for MTAFE.md b/DLSiteFSearchObsidian/Implementation attempt for MTAFE.md new file mode 100644 index 0000000..f462192 --- /dev/null +++ b/DLSiteFSearchObsidian/Implementation attempt for MTAFE.md @@ -0,0 +1,15 @@ +My implementation attempt for a Multi-Threaded Audio Feature Extractor... my attempt ended in misery. + +My vision is a program that is multi-threaded, that will do audio pre-processing and feature extraction in different threads. There should be `i` threads that will do pre-processing on all given audio file paths, and there should be `j` threads that will do feature extraction. If the audio pre-processing pipeline is single-threaded, it will pose a bottleneck to the entire program. But the feature extractor itself is also a bottleneck, since all audio embedding extractor rely on GPU inference, the feature extraction process must be single-threaded on my computer. + +I was trying to adapt the program for multiple threads for audio pre-processing AND multi-threaded for feature extraction (for beefier GPU that can handle more inference threads) + +Unfortunately... All my attempts has ended in misery, my multi-threaded code is littered with performance issues and deadlocks. Python isn't exactly the best language for multi-threaded code due to the existence of GIL. I am trying to implement a multi-producer, multi-consumer model here. The best attempt I was able to do will hang for a long time waiting for the producer (audio feeder) to pre-process the audio, and put it on the shared queue. It will lock up for a really long time, but after that, it will process everything in light speed. But when it's nearing the end, there is a great chance that the program will deadlock itself. I wasn't able to debug, and the profile didn't really yield any result that are useful to me. + +At one point I even relied on AI, and I still wasn't getting a consistent result, the AI generated a code that was significantly faster, with less deadlock, but has the issue of skipping audio files due to them not being pre-processed in time. I could implement additional logic to catch processing errors, and retry if possible. But I am really burnt out, and I would look for better alternatives. + +The next thing I am going to try is to separate this program into two, this program attempts to do pre-processing AND feature extraction in the same time. I would split the process into two. One program (preferably multi-threaded) that will do all the audio pre-processing (resampling, chunking, etc.), and it will output the pre-processed audio into a serialized pickle file, or any other serialization formats. +I can see various issues with this approach, the most important of which is space, I am basically taking all of those audio files (which is NOT a small amount), and I am re-encoding it, without any compression. Even though I have decided to lower the audio's bit-rate (fro, the typical 48000 Hz or 192000 Hz to just 32000 Hz, or in specific embedding extraction models: 8000 Hz or 16000 Hz), this will still take up a lot of space. +Also the pickle won't be the best format for storing all of those audio, safety issue is one of them, but the alternative of encoding each chunk into FLAC/MP3 compressed format, will be very heavy on the file system. Even though I do have a SSD. I am uncertain if the filesystem, handling hundred of thousands of audio chunk files will have a hit on the performance and the life of the SSD. + +But at least this will be a lot easier to implement. \ No newline at end of file diff --git a/mtafe_lab/mtafe.py b/mtafe_lab/mtafe.py index ad4667d..4ebe43f 100644 --- a/mtafe_lab/mtafe.py +++ b/mtafe_lab/mtafe.py @@ -1,32 +1,269 @@ import logging -logging.basicConfig(format="%(asctime)s/%(levelname)s: [%(module)s] %(message)s", level=logging.INFO) +#logging.basicConfig(format="%(asctime)s/%(levelname)s: [%(module)s] %(message)s", level=logging.INFO) -import multiprocessing -import multiprocessing.process import dataset +import numpy as np import audiopreprocessing +import threading +import queue +import time +from concurrent.futures import ThreadPoolExecutor, Future from pathlib import Path -def copy_worker(origin_queue, target_queue): - p = origin_queue.get() - logging.info(f"Processing: {p}") - l = audiopreprocessing.load_preprocessed_audio(p, 32000, True) - print("Preprocess complete, putting it into queue") - target_queue.put(l) # Even on a small scale test, the process will always hang here - -if __name__ == "__main__": - audio_path_queue = multiprocessing.Queue() - audio_queue = multiprocessing.Queue() +class mtafe: + # Input + audio_path_queue: queue.Queue[Path] # List of audio paths to preprocess + # Feeder/Extractor/Queue threading options + audio_feeder_threads: int # Amount of audio feeder threads + feature_extractor_threads: int # Amount of feature extractor threads (if the method allows) + max_audio_in_queue: int # Maximum audio in queue + # Audio preprocessing parameters + desired_sr: int # Desired Sample Rate (Resampling) + mono: bool # Force load audio in mono mode + chunk_length: float # Audio chunk length + overlap: float # Audio chunk overlap + # Runtime + audio_queue: queue.Queue[ # List of ... + tuple[ # Pair of chunked audio and its path + list[tuple[np.ndarray, float, int]], # Chunked audio list of (ndarray, time position of chunk relative to original audio, channel_id) + Path # Path to original audio + ] + ] # Listed of Chunked/Resampled audio + audio_feeder_threadpool: list[Future] + feature_extractor_threadpool: list[Future] + features_lock: threading.Lock + audio_feeder_barrier: threading.Barrier # Synchronization barrier for all audio feeder threads + # Output + features: dict[Path, list[tuple[np.ndarray, float, int]]] - rand_paths = dataset.random_audio_chunk(1) - for p in rand_paths: - audio_path_queue.put(p) + def __init__( + self, + paudio_paths: list[Path], + pmax_audio_in_queue: int = 16, + paudio_feeder_threads: int = 8, + pfeature_extractor_threads: int = 8, + pdesired_sr: int = 32000, + pforce_mono: bool = False, + pchunk_length: float = 15.0, + pchunk_overlap: float = 2.0 + ): + # Check if the paths passed in are all valid and add them to queue + self.audio_path_queue = queue.Queue() + for p in paudio_paths: + if not p.is_file(): + raise Exception(f"Path '{p.absolute()}' is NOT a valid file!") + else: + self.audio_path_queue.put(p) + self.audio_path_queue.put(None) # To signal to the producer that the audio path list is empty, since Queue.empty() is unreliable - print("Files queued") + logging.info(f"[MTAFE] [Constructor] Queued {self.audio_path_queue.qsize() - 1} files") + + # Set up private attributes + ## Audio preprocessing parameters + self.desired_sr = pdesired_sr + self.mono = pforce_mono + self.chunk_length = pchunk_length + self.overlap = pchunk_overlap + + ## Extractor/Feeder settings + self.max_audio_in_queue = pmax_audio_in_queue + self.audio_feeder_threads = paudio_feeder_threads + self.feature_extractor_threads = pfeature_extractor_threads + + ## Set up runtime conditions + self.audio_queue = queue.Queue(maxsize=self.max_audio_in_queue) + self.features = {} + self.features_lock = threading.Lock() + self.audio_feeder_barrier = threading.Barrier(self.audio_feeder_threads) + self.audio_feeder_threadpool = [] + self.feature_extractor_threadpool = [] + + logging.info(f"[MTAFE] [Constructor] Extraction parameters: {pdesired_sr}Hz, Mono: {pforce_mono}, Divide into {pchunk_length}s chunks with {pchunk_overlap}s of overlap") + logging.info(f"[MTAFE] [Constructor] Using {paudio_feeder_threads} threads for preprocessing audio and {pfeature_extractor_threads} threads for feature extraction. Max queue size of {pmax_audio_in_queue} files") + + def audio_inference_embedding(self, audio: list[tuple[np.ndarray, float, int]]) -> list[tuple[np.ndarray, float, int]]: + """Receives a list of audio chunks, and then extracts embeddings for all audio chunks, returns the resulting embedding as a list of tuples(embedding, time, channel_id) + + Args: + audio (list[tuple[np.ndarray, float, int]]): list of audio chunks + + Returns: + list[tuple[np.ndarray, float, int]]: List of (embedding vector, timepos, channel id) + """ + features = [] + for audio_chunk in audio: + audio, timepos, channel_id = audio_chunk + zero = np.zeros(32) + features.append( (zero, timepos, channel_id) ) + time.sleep(1.5) # Simulate effort, change to simulate spent seconds in each audio file + return features + # To be overridden + + def audio_feeder_worker(self, thread_id: int, barrier: threading.Barrier): # AI + try: + while True: + # Add timeout to prevent blocking indefinitely + try: + new_audio_path = self.audio_path_queue.get(timeout=10) + except queue.Empty: + logging.warning(f"[MTAFE] [Audio Feeder {thread_id}] Queue get timeout") + continue + + if new_audio_path is None: + self.audio_path_queue.put(new_audio_path) # Put None back + break + + logging.info(f"[MTAFE] [Audio Feeder {thread_id}] Preprocess: {new_audio_path.absolute()}") + + try: + new_audio = audiopreprocessing.load_preprocessed_audio( + new_audio_path, + self.desired_sr, + self.mono, + self.chunk_length, + self.overlap + ) + + # Add timeout to prevent deadlock on full queue + try: + self.audio_queue.put((new_audio, new_audio_path), timeout=30) + logging.info(f"[MTAFE] [Audio Feeder {thread_id}] Feed: {new_audio_path.absolute()}") + except queue.Full: + logging.error(f"[MTAFE] [Audio Feeder {thread_id}] Queue full, skipping {new_audio_path}") + continue + except Exception as e: + logging.error(f"[MTAFE] [Audio Feeder {thread_id}] Error processing {new_audio_path}: {str(e)}") + continue + + # Add barrier timeout to prevent indefinite wait + logging.info(f"[MTAFE] [Audio Feeder {thread_id}] Waiting for other threads") + try: + barrier.wait(timeout=60) + except threading.BrokenBarrierError: + logging.error(f"[MTAFE] [Audio Feeder {thread_id}] Barrier broken") + + if thread_id == 0: + self.audio_queue.put(None) # Signal end + logging.info(f"[MTAFE] [Audio Feeder {thread_id}] Thread finished!") + except Exception as e: + logging.error(f"[MTAFE] [Audio Feeder {thread_id}] Fatal exception: {str(e)}") + logging.exception(e) + # Ensure barrier can progress even if a thread fails + try: + barrier.abort() + except: + pass + # Ensure sentinel is added even if threads fail + if thread_id == 0: + try: + self.audio_queue.put(None, timeout=5) + except: + pass - processes = [multiprocessing.Process(target=copy_worker, args=(audio_path_queue, audio_queue)) for _ in range(1)] - for p in processes: p.start() - for p in processes: p.join() + # def audio_feeder_worker(self, thread_id: int, barrier: threading.Barrier): + # try: + # while True: + # # Attempt to get audio path from audio path queue + # new_audio_path = self.audio_path_queue.get() + # # Check thread exit condition (If the queue returns None, that means the audio path queue is now empty and the thread should end itself) + # if (new_audio_path is None): + # self.audio_path_queue.put(new_audio_path) # Put None back to notify other audio feeder threads + # break # Break out of the infinite loop + # # Audio path queue is not empty: + # logging.info(f"[MTAFE] [Audio Feeder {thread_id}] Preprocess: {new_audio_path.absolute()}") + # new_audio = audiopreprocessing.load_preprocessed_audio( + # new_audio_path, + # self.desired_sr, + # self.mono, + # self.chunk_length, + # self.overlap + # ) + # self.audio_queue.put((new_audio, new_audio_path)) + # logging.info(f"[MTAFE] [Audio Feeder {thread_id}] Feed: {new_audio_path.absolute()}") + # logging.info(f"[MTAFE] [Audio Feeder {thread_id}] Waiting for other threads to finish") + # barrier.wait() + # if (thread_id == 0): + # self.audio_queue.put(None) # None to signal audio_queue has no more elements to process + # logging.info(f"[MTAFE] [Audio Feeder {thread_id}] Thread finished!") + # except Exception as e: + # logging.error(f"[MTAFE] [Audio Feeder {thread_id}] An exception occurred! Committing seppuku!") + # logging.exception(e) + # return - print("Joined") - #for _ in range(1): print(audio_queue.get()) \ No newline at end of file + def feature_extractor_worker(self, thread_id: int): + while True: + # Attempt to get next audio chunks to process + next_audio_tuple = self.audio_queue.get() + # Check thread exit condition + if (next_audio_tuple is None): + self.audio_queue.put(next_audio_tuple) # Put the None back to notify other threads + break # unalive urself + else: # Assuming we got more tuples + current_audio_to_process, current_audio_path = next_audio_tuple # Deconstruct tuple + logging.info(f"[MTAFE] [Feature Extractor {thread_id}] Extracting: {current_audio_path}") + features_to_add = self.audio_inference_embedding(current_audio_to_process) + with self.features_lock: + self.features[current_audio_path] = features_to_add + logging.info(f"[MTAFE] [Feature Extractor {thread_id}] Feature Extraction complete for {current_audio_path} w/ {len(features_to_add)} features") + logging.info(f"[MTAFE] [Feature Extractor {thread_id}] Thread finished!") + + def test_audio_feeder_worker(self): + total_file_amount = self.audio_path_queue.qsize() - 1 + logging.info("[MTAFE] [test_audio_feeder_worker] Spinning up new threads...") + with ThreadPoolExecutor(max_workers=self.audio_feeder_threads) as executor: + for i in range(self.audio_feeder_threads): + ld_ft = executor.submit(self.audio_feeder_worker, i, self.audio_feeder_barrier) + self.audio_feeder_threadpool.append(ld_ft) + logging.info(f"[MTAFE] [test_audio_feeder_worker] Launched audio feeder {i}") + for i in range(total_file_amount): + _, p = self.audio_queue.get() + time.sleep(0.25) + logging.info(f"[MTAFE] [test_audio_feeder_worker] Popped: {p}") + logging.info("[MTAFE] [test_audio_feeder_worker] All audio feeder worker joined!") + #logging.info(f"[MTAFE] [test_audio_feeder_worker] Current audio queue size: {self.audio_queue.qsize()}") + + def count_running_threads(self) -> tuple[int, int]: + running_extractors = 0 + running_feeders = 0 + for ft in self.feature_extractor_threadpool: + if ft.running(): running_extractors += 1 + for ft in self.audio_feeder_threadpool: + if ft.running(): running_feeders += 1 + return (running_feeders, running_extractors) + + def check_all_audiofeed_thread_finished(self) -> bool: + for ft in self.audio_feeder_threadpool: + if ft.running(): + return False + return True + + def check_all_featureextractor_thread_finished(self) -> bool: + for ft in self.feature_extractor_threadpool: + if ft.running(): + return False + return True + + def extract(self): + total_amount = self.audio_path_queue.qsize() - 1 # Account for None to indicate queue end + logging.info(f"[MTAFE] [Main] Starting feature extraction for {total_amount} file(s)") + t_start = time.perf_counter() # Timer + with ThreadPoolExecutor(max_workers=(self.audio_feeder_threads + self.feature_extractor_threads)) as executor: + # Audio feeder threads + for i in range(self.audio_feeder_threads): + logging.info(f"[MTAFE] Started audio feeder thread {i}") + ld_ft = executor.submit(self.audio_feeder_worker, i, self.audio_feeder_barrier) + self.audio_feeder_threadpool.append(ld_ft) + # Feature extractor threads + for i in range(self.feature_extractor_threads): + logging.info(f"[MTAFE] Started feature extractor thread {i}") + ex_ft = executor.submit(self.feature_extractor_worker, i) + self.feature_extractor_threadpool.append(ex_ft) + # Progress checking + while ( (not self.check_all_audiofeed_thread_finished()) and (not self.check_all_featureextractor_thread_finished()) ): + nfeeder, nextract = self.count_running_threads() + print(f"[MTAFE Progress] Processed {len(self.features)}/{total_amount} (L:{self.audio_queue.qsize()}/W:{self.audio_path_queue.qsize()}, LD:{nfeeder}/EXT:{nextract})", end="\r") + t_stop = time.perf_counter() + logging.info(f"[MTAFE] Processed {len(self.features)}/{total_amount} (L:{self.audio_queue.qsize() - 1}/W:{self.audio_path_queue.qsize() - 1} COMPLETE)") + delta_t = t_stop - t_start + total_features = sum( [len(self.features[path]) for path in self.features] ) + logging.info(f"[MTAFE] Extraction complete. Took {delta_t} seconds. Added {total_features} vectors/embeddings") \ No newline at end of file diff --git a/mtafe_lab/test_mp.py b/mtafe_lab/test_mp.py deleted file mode 100644 index f6c5f20..0000000 --- a/mtafe_lab/test_mp.py +++ /dev/null @@ -1,30 +0,0 @@ -import logging -logging.basicConfig(format="%(asctime)s/%(levelname)s: [%(module)s] %(message)s", level=logging.INFO) - -import multiprocessing -from dataset import random_audio_chunk -import audiopreprocessing -from time import sleep - -origin_queue = multiprocessing.Queue() -target_queue = multiprocessing.Queue() - -def worker(orig, targ): - p = orig.get() - #out = "PROCESSED" + str(p.absolute()) - out = audiopreprocessing.load_preprocessed_audio(p, 16000, True) # This will cause put to hang - targ.put(out) # This will hang the process - -if __name__ == "__main__": - K = 2 - - for p in random_audio_chunk(K): - origin_queue.put(p) - - processes = [multiprocessing.Process(target=worker, args=(origin_queue, target_queue)) for _ in range(K)] - for p in processes: p.start() - for p in processes: p.join() - - logging.critical("Successfully terminated all threads") - - for _ in range(K): print(target_queue.get()) \ No newline at end of file diff --git a/mtafe_lab/test_mtafe.py b/mtafe_lab/test_mtafe.py index e77eb52..9c8d55a 100644 --- a/mtafe_lab/test_mtafe.py +++ b/mtafe_lab/test_mtafe.py @@ -5,17 +5,18 @@ import mtafe from dataset import random_audio_chunk logging.info("Generating random audio path list") -rdpl = random_audio_chunk(2) +rdpl = random_audio_chunk(256) logging.info("Initializing MTAFE") -mtafe.initialize_parameters( - paudio_paths=rdpl, - pmax_audio_in_queue=4, - paudio_feeder_threads=2, - pfeature_extractor_threads=1, - pdesired_sr=32000, - pforce_mono=False, - pchunk_length=15, - pchunk_overlap=2 +m = mtafe.mtafe( + paudio_paths=rdpl, + pmax_audio_in_queue=8, + paudio_feeder_threads=8, + pfeature_extractor_threads=2, + pdesired_sr=32000, + pforce_mono=False, + pchunk_length=15, + pchunk_overlap=2 ) -mtafe.test_feeder() \ No newline at end of file +#m.test_audio_feeder_worker() +m.extract() \ No newline at end of file diff --git a/mtafe_lab/testmtafeprofile.txt b/mtafe_lab/testmtafeprofile.txt new file mode 100644 index 0000000000000000000000000000000000000000..b3e97ae57b6132d02e4822305d0fb6a0534a30c3 GIT binary patch literal 173665 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∾h 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%0DYagAJ^Y!ix*?f*(n8oRZ1qEBJtI-5jy@ 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 XO|UmvyzZTF=i(~xJrI@T3Kjkj@VIL8 literal 0 HcmV?d00001