#python #tensorflow #multiprocessing #python-multiprocessing #python-multithreading
#питон #тензорный поток #многопроцессорная обработка #python-многопроцессорная обработка #python-многопоточность
Вопрос:
У меня есть несколько графических процессоров, которые я могу использовать для запуска скрипта python. Этот скрипт представляет собой конвейер (загружает данные, строит и подгоняет модель Tensorflow). Я хотел бы выполнить поиск по сетке, используя все графические процессоры, доступные параллельно. Поиск по сетке генерирует множество комбинаций гиперпараметров, поэтому я создаю один пакет на графический процессор.
Я хотел бы отправить пакет для каждого графического процессора, например, следующий код:
def run_batch_on_gpu(batch, gpu_id): with tf.device_scope(f'/gpu:{gpu_id}'): for params in batch: utils.execute_run_pipeline(params) # training pipeline n_gpus = len(tf.config.list_physical_devices("GPU")) batches = get_params_batches(list_of_params, n_gpus) #divides a list_of_params in equally sized n_gpus sublists with concurrent.futures.ProcessPoolExecutor() as executor: for batch, gpu_id in zip(batches, range(n_gpus)): executor.submit(run_batch_on_gpu, batch, gpu_id)
К сожалению, этот код ничего не делает и завершается очень быстро. Я не знаю, что может быть не так.
Заранее спасибо