[diffusion-planner]nuplan/planning/script/builders/simulation_callback_builder.py
1. build_callbacks_worker 함수
- build_callbacks_worker 함수는 시뮬레이션 실행 중에 콜백(callback) 함수들을 병렬로 처리하기 위한 "작업자 풀(WorkerPool)"을 생성하는 역할
- 즉, 이 함수는 설정에 따라 콜백 함수들을 병렬 처리할 수 있는 작업자 풀을 구성하여, 시뮬레이션 과정에서 콜백의 실행 효율성을 높이는 역할을 수행합니다.
1.1. 구체적인 동작
-
병렬 실행 여부 결정:
- 설정(cfg)에서 지정된 worker 타입이 Sequential인지와, 콜백 병렬화(disable_callback_parallelization)가 활성화되지 않았는지 확인합니다.
- 만약 Sequential이 아니거나 병렬화가 비활성화되어 있다면, None을 반환하여 콜백을 병렬로 실행하지 않습니다.
-
CPU 할당 검증:
- 설정 값인 number_of_cpus_allocated_per_simulation이 None 또는 1이 아니면, Sequential 워커와 맞지 않으므로 ValueError를 발생시킵니다.
-
최대 작업자 수 계산:
- 현재 노드에서 사용 가능한 CPU 수(WorkerResources.current_node_cpu_count())에서 시뮬레이션에 할당된 CPU 수(1 또는 None)를 뺀 값과, 설정된 최대 콜백 작업자 수(cfg.max_callback_workers) 중 작은 값을 선택해 max_workers를 결정합니다.
-
작업자 풀 생성:
- 계산된 max_workers를 인자로 하여 SingleMachineParallelExecutor를 생성합니다. 이 클래스는 내부적으로 ProcessPoolExecutor를 사용해 병렬로 작업을 실행합니다.
-
작업자 풀 반환:
- 최종적으로 생성된 WorkerPool(콜백 전용 작업자 풀)을 반환합니다.