Pull to refresh

Comments 11

А можно наоборот: как объединить несколько GTX 1050 Ti
Или это разорит nvidia?)

Вы можете посмотреть, как это имплементировано в tensorflow https://www.tensorflow.org/guide/gpu?hl=ru#using_multiple_gpus

Но кстати мы пытались таким образом запустить модель на нескольких партициях MIG и получили отрицательный результат. Вот ссылка на источник
https://forums.developer.nvidia.com/t/docker-doesnt-detect-mig-gpu-devices/201921/2

компании знают о шеринге GPU как о технологии, но пока не применяют ее.

работает на ограниченном количество видеокарт — A100 и A30;

Хм, интересно, почему же?

А если серьёзно, то ещё интереснее было бы попробовать тренировать небольшие сетки используя 7 "кусочков" одной большой карты как 7 разных карт. Когда-то давно я пробовал что-то такое делать, но это не работало, так как в документации был такой пассаж:

There is no GPU-to-GPU P2P (both PCIe and NVLINK) support in MIG mode, so MIG mode does not support multi-GPU or multi-node training. For large models or models trained with a large batch size, the models may fully utilize a single GPU or even be scaled to multi-GPUs or multi-nodes. In these cases, we still recommend using a full GPU or multi-GPUs, even multi-nodes, to minimize total training time.

А сейчас такая поддержка появилась?

Как раз ответил выше в комментарии, что обучать модельку на нескольких партициях MIG не получится. Вот на форуме представители от nvidia обозначают (но не раскрывают) проблему https://forums.developer.nvidia.com/t/docker-doesnt-detect-mig-gpu-devices/201921/2

Конкретно эта технология полезна, если у вас допустим есть GPU для обучения модельки и команда датасайнтистов, которые за нее конкурируют. Чтобы не создавать очередь, можно поделить гпушку и отдать каждому по кусочку.

Например в кубернетесе поды при атаче GPU смотрят на лейбл nvidia.com/gpu, который нельзя обозначить не целым числом (то есть нельзя написать что хочу 0.5 GPU). Соответственно инстанс какого-нибудь jupyterlab заберет себе целую видеокарту, остальным инженером придется ждать либо вам покупать на каждого свою GPU)))

MIG и Timeslicing например решают эту проблему. MIG на уровне железа, обезпечивая защиту по памяти, Timeslicing - по сути просто обманка кубера, чтобы из nvidia.com/gpu=1 можно было сделать nvidia.com/gpu=N, где N любое число

А почему нельзя просто всем инженерам дать все карты, и просто заставить договариваться друг с другом?

Думаю если 5 инженеров в команде проблем не будет. Но и в такой команде А100 врятли используют)

В командах 20-30+ договориться сложнее, соответственно могут создаваться очереди.

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

Когда смотрел последние две конференции (от билайна и от яндекса по куберу), заметил что вопросом по разделению GPU интересуются, но обзор конкретных технологий откидывают пока что в беклог. Возможно действительно пока такой проблемы и не стоит, но думаю в дальнейшем с ростом команд по ML точно появится) Тем более карты все сложнее достать...

Кстати, а есть инсайды, на рынке карты поколения Ada появятся?

В общем и целом могу сказать, что на рынке запросы есть и даже что-то в наличии.

Но чисто дома побаловаться еще можно будет не скоро(

К сожалению не владею информацией о конкретных поставщиках(

Из графика видно, что при запуске одной реплики инференса пропускная способность на A100 будет ниже, чем на T4 и V100.

Вот это основной нюанс. 7 штук Т4 в GCP стоит практически столько же или даже дешевле чем одна A100, а на большинстве задач дают значительно лучший перформанс и более простой и гибкий сетап чем A100 разделенная на 7 частей.

Поэтому технология интересная, но практическое применение несколько ограниченное, по моим впечатлениям. Но при этом не сомневаюсь что есть случаи когда это актуально.

Sign up to leave a comment.