Как сохранить все устройства GPU, выполняющие задачи, используя скрипт Bash? - PullRequest
0 голосов
/ 30 октября 2019

У меня есть сервер с 8 GPU, и я хотел бы обучить одну нейронную сеть на каждой из них одновременно. У меня есть несколько десятков таких сетей для обучения, и я хотел бы запланировать учебное задание. В настоящее время я пишу свой собственный скрипт bash для этой задачи планирования.

for l1 in {1e-4,2e-4,5e-4,1e-3}; do

      python train.py --lr $l1 --attr 0 --device 0 &
      python train.py --lr $l1 --attr 1 --device 1 &
      python train.py --lr $l1 --attr 2 --device 2 &
      python train.py --lr $l1 --attr 3 --device 3 &
      python train.py --lr $l1 --attr 4 --device 4 &
      python train.py --lr $l1 --attr 5 --device 5 &
      python train.py --lr $l1 --attr 6 --device 6 &
      python train.py --lr $l1 --attr 7 --device 7

      sleep 1
      wait 
done 

В приведенном выше сценарии флаг --device выбирает графический процессор для использования, в то время как другие флаги просто определяют гиперпараметры моей глубокой нейронной сети. сетей. Этот скрипт выполняет для каждой итерации цикла for один запуск обучающей задачи на каждом графическом процессоре и ожидает завершения всех из них перед началом следующей итерации. Проблема в том, что для выполнения каждой учебной задачи может потребоваться разное время, поэтому я буду использовать значительное количество времени менее чем на 8 графических процессорах одновременно, что удлиняет время для завершения всей задачи.

Мне интересно, есть ли какой-нибудь способ определить, какой графический процессор завершил свою задачу, и запустить на нем новую задачу, чтобы у меня всегда было 8 запущенных графических процессоров.

Спасибомного!

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Я видел, что вы не используете кластер, это означает, что графические процессоры находятся на вашем локальном компьютере.

В этом случае вы можете использовать эту библиотеку: https://pypi.org/project/simple-gpu-scheduler/

Надеюсь, это поможет.

0 голосов
/ 01 ноября 2019

Только что обнаружил, что Ray - отличный пакет для управления вашим экспериментом. (https://github.com/ray-project/ray)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...