Spaces:
Sleeping
Sleeping
| @startuml async_dataloader | |
| header Async Dataloader | |
| title Async Dataloader | |
| participant main_process | |
| participant async_process | |
| participant get_data_thread | |
| participant job_queue | |
| participant worker_process_0 | |
| participant ... | |
| participant worker_process_n | |
| participant async_train_queue | |
| participant cuda_thread | |
| participant cuda_queue | |
| autonumber | |
| main_process -> async_process: Start async_process | |
| main_process -> get_data_thread: Start get_data_thread | |
| alt num_workers > 1 | |
| main_process -> job_queue: Init job_queue | |
| main_process -> worker_process_0: Start worker_process_0 | |
| main_process -> ...: Start ... | |
| main_process -> worker_process_n: Start worker_process_n | |
| end | |
| main_process -> async_train_queue: Init async_train_queue | |
| alt use_cuda | |
| main_process -> cuda_thread: Start cuda_thread | |
| main_process -> cuda_queue: Init cuda_queue | |
| end | |
| async_process -> get_data_thread: Send request "get_data" | |
| get_data_thread -> get_data_thread: Get data from "data_source" | |
| get_data_thread -> async_process: Send data (in CPU) | |
| alt num_workers <= 1 | |
| async_process -> async_process: Process data | |
| async_process -> async_train_queue: Put data in queue | |
| else | |
| async_process -> async_process: Chunk pre-process task into pieces | |
| async_process -> job_queue: Put sub-tasks in queue | |
| worker_process_0 -> job_queue: Get a sub-task from queue | |
| worker_process_n -> job_queue: Get a sub-task from queue | |
| worker_process_0 -> worker_process_0: Process data | |
| worker_process_n -> worker_process_n: Process data | |
| worker_process_0 -> async_train_queue: Put data in queue | |
| worker_process_n -> async_train_queue: Put data in queue | |
| end | |
| alt use_cuda | |
| cuda_thread -> async_train_queue: Get data (in CPU) | |
| cuda_thread -> cuda_thread: Move data from CPU to GPU | |
| cuda_thread -> cuda_queue: Put data(in GPU) in queue | |
| end | |
| @enduml | |