Обучающий конвейер с использованием нескольких графических процессоров, по одному конвейеру на графический процессор

#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)  

К сожалению, этот код ничего не делает и завершается очень быстро. Я не знаю, что может быть не так.

Заранее спасибо