Pull to refresh

Comments 25

Показывал статью знакомым, добавлю еще ряд оговорок:


  • 1080 Ti не успел протестировать (они заняты сейчас), но думаю там все будет понять из gpu-burn;
  • Чтобы не греть атмосферу лишний раз,gpu-burn и тест на 1 "слайсике" я не делал прокидывая внутрь контейнера 1 "маленький" слайсик. По нагрузке очевидно, что при 2 слайсиках будет максимум так же быстро как на всей карте A100 целиком, а параллелизация не выходит с MIG. А с gpu-burn можно просто цифры разделить в уме согласно документации;
  • Цена карт Quadro — в районе US$5-6k;
  • Почему AMP не дружит с сеткой еще ищем;
  • Я уточнил через несколько каналов у Nvidia не затупил ли я с пониманием документации MIG, вроде все так;

И да, PCIE A100 пассивные, то есть кулера там нет

Скорее FP16 судя по цифрам. Если это FP32 — то налицо нерациональное использование АЛУ в обычном режиме, во что я не верю, впрочем в таблице: en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units#GeForce_30_series
TFlops:
FP32 35.68
FP64 0.558
FP16 35.68
FP16 Tensor 285.48 ???
что тоже странно.

У меня такое ощущение что в маркетинговых материалах про FP16 INT8 там везде дикий запад

Я думаю, что маркетологи сами запутались. Впрочем по мере распространения разберемся.Я еще пока не купил такую
Незнаю как в PyTorch, но в TensorFlow вполне возможно решить вопрос с мульти-инстансами работая через Horovod/MPI. Сделать количество процессов по количеству карт и запинить каждый процесс на свой куда-девайс. Нет у вас такой возможности?

Если вы про MIG то


CUDA is limited to use a single CI and will pick the first one available if several of them are visible.

То есть придется поднимать N контейнеров чтобы такое работало в Питорче. Кажется достаточно неоправданным геморроем на одной машине делать так.


Насчёт TF — не знаю, не пользовался, но мне кажется что тащить фреймворк для распределенных вычислений на N машинах для распределения по N картам на одной машине это оверкилл.

Я не говорил о контейнерах и ничего не знаю про pyTorch (к сожалению), но полагаю что там все очень похоже с TF. Однако запуск MPI процессов дает небольшой оверхед на синхронизацию в рамках одного узла. В AI нет большой связности, обычно там пересылается ошибка через SHM и на этом по большому счету всё.
Насчет «CUDA is limited to use a single CI and will pick the first one available» давно решается переменной окружения CUDA_VISIBLE_DEVICES, которая задается для каждого процесса своей.
Таким образом для multiGPU просто запускается количество процессов равное количеству карт, при этом масштабирование практически линейное.
пересылается ошибка

скорее градиенты


Насчет «CUDA is limited to use a single CI and will pick the first one available» давно решается переменной окружения CUDA_VISIBLE_DEVICES, которая задается для каждого процесса своей

Кстати я не догадался попробовать засетить ее после форка процесса, а не до
Это интересно
https://pytorch.org/docs/stable/distributed.html
В питорче говорят что NCCL даже по ethernet лучше

Кстати Nvidia посоветовала то же самое сделать в итоге


Здесь важно понимать, что 2 инстанса МИГА в распределенном обучении будут меньше по производительности, чем один но размером с оба инстанса. Я не зря написал, что не поддерживает в этом случае P2P операции, т.к. при работе с 2мя MIG весь обмен будет идти через системную память.

Можно сделать ухищрения через horovod, выставляя CUDA_VISIBLE_DEVICES в нужный миг и выставляя в конфиге тип устройства всегда 0, но это не более чем показать, что оно запустится.

В общем я завел
Но… ооочень медленно

Скорее всего пиннинг не совпал. Проверьте что у вас каждый процесс/трид ходит в ближайший GPU.

Внутри каждого процесса до импорта торча я сделал такое — установил в CUDA_VISIBLE_DEVICES разные карты согласно рангу процесса. Если это не работает из коробки, то вряд ли уже стоит дальше трать время.


  mig_devices: ['MIG-GPU-e6aa67a2-1b88-ad15-5bb8-ac9b1228d86f/3/0',
                'MIG-GPU-e6aa67a2-1b88-ad15-5bb8-ac9b1228d86f/5/0',
                'MIG-GPU-e6aa67a2-1b88-ad15-5bb8-ac9b1228d86f/6/0']

В любом случае это уже явно использование не по назначению.

Добавил gpu-burn вместе с CUDA_VISIBLE_DEVICES
Попробую указать CUDA_VISIBLE_DEVICES внутри каждого процесса PyTorch а не через device enumeration, посмотрим что выйдет

Update 2 — доабвил график утилизации карты когда запущено 3 параллельных gpu-burn через MIG

Финальный апдейт — MIG в текущем состоянии абсолютно точно не подходит для масштабной тренировки сетей. Сейчас это чисто фишка для инференса или для тренировки N маленьких сетей на маленьких датасетах.

Я прошу прощения, но у меня летом знакомые интересовались возможностью подключить несколько видеокарт для вычислений — возможно речь про другие вычисления, я не знаю — и на иБее накопал такой вариант:
1. В комп — такая плата:
www.ebay.com/itm/142614635879
2. А к ней подключается такая штука на 4 карты в 1U:
www.ebay.com/itm/223221951917
Это я не о том вообще или с новыми картами таких решений уже нет?

Не большой спец в серверном железе, но навскидку вижу только одну проблему
4 карты подключаются в один x16 PCIE разъем?
понятно что скорости может и вполне хватит (для DL надо 4-8x), но как будет система видеть такие карты?


насчет новых — там даже карт еще особо нигде нет =)
будет очень интересно если кто-то кто разбирается в таких штуках или пробовал напишет
а то подключить пассивные карты в обычный корпус через провод — очень интересно
экономим на платформе (ну или колхозим рядом), но получаем возможность работы с пассивными картами

а еще это очень старая железка

Погуглил слегка, для одного 1U-бокса (номер 2) требуется две карты (номер 1).
Т.е. при наличии 4 PCIEx16 на матери можно подключить 8 видеокарт в 2 1U-боксах (а не 16 как я думал изначально).
На картах (номер 1) стоят PCIE-коммутаторы, которые на дорогие материнки ставят для большего количества PCIE-портов, так что проблем с определением и видимостью всех быть не должно…
Товарищ один туда 1070 напихал с напилингом — ничё так суперсервер вышел…

PS: Старая — да, зато очень дёшево на иБее. Баксов в 500 можно уложиться на полный комплект, но без видях, есс-но…
Sign up to leave a comment.

Articles

Change theme settings