Pull to refresh

Comments 97

Да, игровые видеокарты для работы с нейросетями подходят гораздо лучше, чем профессиональные. Но дело не в наценке за "профессиональность", а в том, что функционал профессиональных карт оказывается невостребован.


Так, производительность FP32 у Tesla P100 и GTX1080 примерно одинакова. Но вот производительность FP64 у Tesla P100 в 20 раз выше, чем у GTX 1080. Очевидно, что если вам для работы требуются вычисления в FP64, то покупка профессиональной карты себя полностью оправдает.


Но нейросетям не нужна запредельная точность. Им достаточно и FP16, и даже FP8. Подробнее про это можно почитать, например, тут:
https://www.ibm.com/blogs/research/2018/12/8-bit-precision-training/


Профессиональные карты, помимо высокой производительности FP64, имеют также и высокую производительность FP16 — она примерно в полтора раза выше, чем FP32. Но использование FP16 для ML не является выгодным из-за высокой цены на профессиональные карты.


Далее: ECC память. Нейросети обладают огромной избыточностью. Случайные ошибки, скорее всего, останутся полностью незамеченными. Да и валидация после каждой итерации позволяет ошибки, если они вдруг появятся, обнаружить.


Ну виртуализация (разбиение одной карты на несколько vGPU). Для ML-задач она нафиг не нужна.

+


Я "делил" одну А100 на несколько штучек во время тестирования, ну и кроме очевидной некой "сырости", мне показалось, что это делается для образования или для продакшена, но не для обучения "маленьких" сетей.


Насчет FP16 — по цене понятно что даже с обрезанностью это выгоднее. А по скорости — тут зависит уже от конкретной сетки. На каких-то даже и без AMP 3090 в 3 раза быстрее 1080 Ti.

tf.config.experimental.set_virtual_device_configuration (нынче tf.config.set_virtual_device_configuration) позволяют разбить даже 1080ti, причем как угодно. Единственное ограничение — объем памяти.

Не знаю будет ли в ТФ оно реально работать как два процесса или они будут толкаться.


В PyTorch две сетки среднего размера толкаются (мелкие не толкаются особо), а с MPS правда в сложном сетапе с DDP у меня как-то не особо запустилось прямо.


Правда DDP для сделан для такого и вообще с новыми дровами 2 процесса на одной карте не запустишь с ним уже — вылетает exception.

Были сеточки которые загружали GPU всего на четверть, через этот финт на одном gpu учились по 4 сетки. Просадки по скорости не было

Ещё есть такая фишка, что у консьюмерских Turing и Ampere в Tensor Cores понерфили FMA FP16->FP32.
Производительность такая же, как для FP32->FP32, и в два раза меньше, чем у FP16->FP16.
У аналогичных Quadro RTX 32-битный аккумулятор при FP16 FMA не дает замедления вовсе.
При этом для mixed precision на консьюмерских всё равно остается выгода от меньших требований к пропускной способности.

По поводу 3090 и 3080 с блоками питания есть нюанс. Не стоит собирать из старых моделей, потому-что есть вероятность ухода блока питания в защиту от резкой полной нагрузки даже на одну 3090.

Да, совсем забыл, надо добавить по идее про это тоже. У 3090 Turbo — ДВА 8-пиновых разъема питания, если кто не в курсе. Это очевидным образом влияет на выбор блока(ов) питания.


image

Майнеры давно освоили перепайку серверных БП, можно недорого взять БП на 2500Вт класса платинум/титаниум. Поэтому 8pin разъемы это вообще не проблема.

Место размещения определяет и корпус. В датацентр вам надо делать ящик 4-6U, и в него пихать по максимум вентиляторов невзирая на шум. Кожуха с карт можно в таком случае вообще снять, то есть превратить карты в тонкие и безвентиляторные. Райзеры появились весьма интересные в последнее время.

Если же хочется собрать свой крей, то есть уникальный суперкомпьютер в специально выделенном помещении, то я бы не отказывался от воды. Вода это по сути бесплатная производительность и теплый бассейн для сотрудников. И карты и процессоры дадут на воде +20%, и в суммарных затратах это будет ощутимо (когда карты и процессоры стоят не один и не два килобакса за штучку).

Тип памяти определяют процессоры по сути, если устраивают недорогие многоядерные низкочастотные зионы, то к ним бонусом пойдет серверная DDR3 ECC память.

Читал, правда руками не щупал, бывают адаптеры PCIe2PCIe. Для соединения сборки из небольшого количества материнских плат, это может быть интересно.
можно недорого взять БП на 2500Вт класса платинум/титаниум

А не подскажете где?


В датацентр вам надо делать ящик 4-6U

Вы имеете в виду "майнерский" корпус, или какие-то определенные модели, которые легко переделать под свои нужды?
Меня просто в свое время остановило нежелание особо ничего колхозить, т.к. 4 карты против 6 — это не особо разница прямо, проще просто два бокса рядом друг с другом поставить.


Читал, правда руками не щупал, бывают адаптеры PCIe2PCIe.

Интересно кто-то пробовал ли такое.


Если же хочется собрать свой крей, то есть уникальный суперкомпьютер в специально выделенном помещении, то я бы не отказывался от воды.

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

Райзеры появились весьма интересные в последнее время.

А кто-то такое пробовал для DL?
Они не мешают там друг другу?


Для майнинга понятно наверное, что точно норм.
Так мы упремся в процессор по сути, но топовые ThreadRipper или платы с 2 процессами в принципе доступны, наверное реальная проблема может быть в памяти.


Хотя опять же, недавно видел такую ссылку — https://www.amd.com/ru/processors/ryzen-threadripper-pro

Так мы упремся в процессор по сути, но топовые ThreadRipper или платы с 2 процессами в принципе доступны, наверное реальная проблема может быть в памяти.


Разумеется упремся в пропускную способность памяти, поэтому после определенного кол-ва ядер, дальнейшее их увеличение не особо сказывается на задачах, где важна большая пропускная способность памяти. Если бы с ростом кол-ва ядер еще бы росла пропускная способность памяти, это было бы интересно. Например для каждых 16 ядер, своя шина памяти(адресная+данных), свой контроллер памяти, тогда да, параллелизуемые задачи решались бы намного быстрее.
Например для каждых 16 ядер, своя шина памяти(адресная+данных), свой контроллер памяти, тогда да, параллелизуемые задачи решались бы намного быстрее.
Каждые 16 ядер упаковываются в отдельный корпус, и втыкаются в отдельные слоты. Обыватели говорят про такое «двухпроцессорный сервер», NUMA.
Как вариант — «авито серверный блок питания».

В принципе любой дешевый 4-6U корпус + напильник + шуруповерт + дремель = корпус суперкомпьютера. Есть и майнерские рековые корпуса, в том числе в виде наборов «склепай и покрась сам».

Я думаю что просто не нужна вода в серверной. Хотя были проекты такие, воду подавать в вертикальные конструкции шкафов. Но грубо говоря, оплачивая место в стойке вы платите в том числе и за +16 в зоне забора воздуха.

А какая им разница, PCIe x8 оно и есть x8.

Не очень понял какая проблема в памяти у топовых ThreadRipper? Но надо понимать, делаем дешево или топово. Сотни гигабайт RAM в любом случае будут очень недешевы.
Не очень понял какая проблема в памяти у топовых ThreadRipper?

Проблема в том, что материнские платы поддерживают зачастую только 256 GB RAM.
Если умудриться впихнуть через такие райзеры даже в геймерскую материнку 8 3090, то теоретически по памяти могут начать проблемы с ее нехваткой.


А какая им разница, PCIe x8 оно и есть x8.

Я видел тесты, когда искусственно занижается пропускная способность шины добавлением паразитного трафика, и гистограммы FPS начинают проседать и появляются фризы. Может с DL может быть что-то такое.

У майнеров есть корпуса на 6 карт для размещения в стойке. с ними одна проблема — карты устанавливаются не над материнкой, а за ней и райзеры в виде шлейфов подключить не получится. А вот райзеры из ссылки выше — довольно интересны (те что x8), но дадут еще +$50-60 на карту. На 6 карт — $350. Может лучше эту сумму добавить чтобы купить что-то типа такого?
С водой есть свои приколы — нужно обеспечить герметичность внутри корпуса, по-хорошему радиатор и вентиляторы нужно выносить за пределы корпуса, а для этого надо вывести трубки, причем так, чтобы они не перегибались, продумать возможность долива жидкости и слива/залива при необходимости обслуживания и т.п.
Но в эксплуатации вода в очень хороша
А вот райзеры из ссылки выше — довольно интересны, хотя они всего 4x

Там вроде есть BIFURCATED RISER X16 TO 2X8 (SET) — или я чего-то в упор не вижу?


Но в эксплуатации вода в очень хороша

все что описано выше с водой уже тянет на настоящий суперкомпьютер =)
как вариант брать гибридные карты просто
но их не купить просто так

Там вроде есть BIFURCATED RISER X16 TO 2X8 (SET) — или я чего-то в упор не вижу?

да, чего-то не туда сначала посмотрел
как вариант брать гибридные карты просто
но их не купить просто так

не. ну вот будет допустим 6 карт, у ним 6 радиаторов и 12 патрубков определенной длины. Как все это хозяйство размещать я не представляю. А оставлять тепло внутри корпуса — тогда не очень ясно зачем вода :)
Да, в один слот х16 можно поставить две видеокарты в режиме x8 или четыре x4. 50$ на карту, если карта уровня 3090 — в пределах погрешности цены.

По совсем хорошему, нужны не вентилятор и радиаторы, а теплообменник. Внутренний контур чистая вода, внешний контур водопровод — забираем холодную отдаем горячую. Никаких 6 радиаторов и 12 патрубков.

256 гигов это немало, 512 можно получить используя двухпроцессорные платы на 2011 сокете. Ну или экспериментировать.
BIFURCATED RISER X16 TO 2X8 (SET)

Интересно есть ли такие на PCIE 4.0
Гугл поиск пока показал "ждем"


не. ну вот будет допустим 6 карт, у ним 6 радиаторов и 12 патрубков определенной длины. Как все это хозяйство размещать я не представляю

Есть анекдот как человек 4 карты такие поставил в ATX корпус "кубик".
Как больше — не знаю, наверное идет к корпусам для майнинга.
Вообще есть корпуса такого типа — https://ru.thermaltake.com/core-x9.html — они огромные и там можно и сверху и снизу поставить радиатор.

Посмотрел еще тарифы — 4U размещать дороже чем ATX корпус, но это наверное детали уже.


Вообще если есть крутые реально работающие райзеры, то заколхозить наверное можно куда угодно.


Да, в один слот х16 можно поставить две видеокарты в режиме x8 или четыре x4. 50$ на карту, если карта уровня 3090 — в пределах погрешности цены.

Уточню на всякий, а вы пробовали? Вот на тех райзерах из ссылки или каких-то похожих? Нет проседаний по скорости?

Нет, еще не приехали они. И для двух карт с одного слота BIOS нужно править или брать у них плату которая такое умеет.

В цене размещения, энергопотребление займет основную долю. Так, 2500 Вт стоит 22000 рублей, а 4U всего 4000.

Про Биос это очень существенный комментарий. А то я подумал что воткнул и вперёд. А на какой мамке делать будете?

Интересно, 16 ядер хватило на 6 карт?
Прикольно что Биос уже из коробки это поддерживал
Как делали питание?

Скриншот с ценами свежий? Где по таким ценам 3090 турбы раздают? прикупил бы парочку

Нет, скриншот я сделал из письма в почте, когда приценивался =)
Мне уже тогда наценка в 30-40% против официальной цены показалась большой, но в итоге карточками я очень доволен.
Вероятно неспроста их сняли с производства.

Эмм, а если для текущих задач арендовать время от времени cloud GPU (по ценам — по разному, но средние конфиги около 1$ в час, +-) — так не выйдет дешевле? Плюс, цены со временем на вычисления снижаются, а доступная мощность растет…

Много копий сломано на том, кормить ли Амазон и обсуждениях того, что кажущиеся астрономическими чеки стартапов это всего лишь 1 год зарплаты 10 человек в Америке плюс 30-40% костов на сервисы GAFA (реклама + хостинг).


Но тут действует простое правило — если рассматривается покупка нового по официальной цене — то точка водораздела проходит где-то в районе года эксплуатации (с учетом простоя). Если вы покупаете подержанные карточки… то точка может наступать сильно раньше =)

Мы недавно собрали вообще на «бюджетных» k80.
Плюс, на сейчас, они — майнерам не интересны, и купить можно очень за не дорого.
По крайней мере дешевле 1080.

Тут действует правило — все что можете купить дешево, если можно набрать эквивалентную мощность в ваш корпус.
Я как-то купил Titan X Maxwell за 10 при цене 1080 Ti в районе 30-40.
Но у старых карт будет больше проблем с новыми фишками фреймворков.
И греются они больше.

О, супер! Тоже смотрю на них и думаю прикупить, благо на авито они недороги по сравнению с игровыми. Позвольте несколько вопросов:
1. Вы можете сравнить производительность к80 и игровых типа 2070,2080, 3080, 3090? Я встречал упоминание вскользь что производительность на уровне 2070супер, но это скорее было предположение. Интересно услышать из первых рук.
2. у к80 два чипа, тоесть это две карты в одном корпусе. и память 24гб. Вопрос по памяти- она делится на два- по 12 на чип или туда можно запихнуть гигантскую модель на все 24 гб?
как вообще в системе видится эта карта? как два ускорителя?
3. софтовых проблем нет? с дровами и поддержкой в современных фреймворках? тензорфлоу2 на них работает?

Как вообще впечатление от этой машины? Не разочаровались?
Заранее признателен за ответ.

Присоединяюсь, тоже интересно.
По идее должно быть что-то типа 1080 Ti, но больше памяти
Может греется сильнее
Как решили вопрос с охлаждением (она пассивная)

По охладу я уже думал. Текщие решения такие:
image
и
image

Но я думаю пойти дальше- содрать внешний пластик, оголить радиатор и приделать на него два вентилятора из днс по 250 рублей. На старых 1070 с умирающими вентиляторами такая схема работает годами.

Но на последней фотке мы видим что человек поставил еще обдув на память первого гпу. Видимо есть проблемы с этим. Возможно нужно делать бекплейт с задувом под него.
Отличная статья, спасибо!

Найти работающий на x8-x16 райзер это то еще развлечение.

На самом деле гибкие райзеры — вариант жизнеспособный, но думаю, что нужно тестировать на совместимость с конкретной материнкой. У меня хорошо работают Phanteks длиной 60 см и HLX-LINK c Aliexpress тоже длиной 60 см — на все 16x и с 0% ошибок.

Однако, обнаружилось интересное явление, которое долго не удавалось отладить — некоторые карты 3090 Founders Edition на некоторых задачах выбивают защиту по току на материнке (материнка после этого включается только после физического отключения питания). Поэтому, наверное, все же предпочтительнее райзеры с возможностью инжекции питания, либо отдельно покупать инжекторы.

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


Не совсем понимаю — большие карты ведь питаются от блока питания напрямую, или там какая-то хитрость ещё с питанием через pcie?

Ещё кстати есть мнение что FE карты лучше никогда не брать, у меня 1080 Ti одна такая (выиграл) и она горячее собратьев

Тоже к этому склоняюсь. 3090 FE достаточно холодная по температуре ядра, но у нее конструктивная недоработка, проблема с охлаждением памяти.

Вероятно речь про вот это? Как-то сразу не обратил внимания, белая, сливается.


Screenshot 2021-03-17 094316

Да, это оно… в данном случае, это стандартный разъем питания PCI-E, как на видеокарте. Но на разных райзерах разные разъемы бывают. Тут, вроде, нет единых стандартов.

понятно, прикольно
вкупе с материнкой из треда ниже, с такими райзерами даже без бифуркации возможности уже безграничны становятся
была бы такая материнка еще под ThreadRipper а не EPYC, было бы совсем хорошо!

Уже писал, но добавлю еще тут, так как здесь это более уместно, не сочтите за спам:
Считается что 25-30% карта потребляет с матери через pci-e разъем. Именно поэтому сильножрущие карты могут сжечь мать (для 5х3090 это составит в районе 500+ ватт или 40 ампер по 12вольтовой линии) — горит разъем питания на матери или дорожки от него. Выглядит примерно так:
image

Но райзеров с поддержкой питания больше чем x1 я не встречал.

Также еще важное по райзерам: существуют райзеры с тремя разными разъемами питания- считается, что лучше те, которые под такойже разъем как доп питание видеокарты- незнаю как он правильно называется. Худшим считается разъем как на сата хдд. молекс- посерединке. Разъем питания на райзере- также является одной из точек возгорания. Учитывая низкокачественность как самих райзеров, так и этих разъемов- это точка повышенного внимания.
Но райзеров с поддержкой питания больше чем x1 я не встречал.

Вроде по ссылке в треде выше как раз такой?

Да, такой. Но нужно пробовать его. Мне в руки попадал один подобный экземпляр — китайцы много чего заманчивого выкладывают на али. Завести не удалось. Плюс тут нужно понимать как работает pci-e-мультиплексор на матери — например на некоторых бытовых матерях, где есть два х16 разъема, при обнаружении подключения к первому на второй дается только 8 линий. Причем логика этого процесса у разных производителей разная. Поэтому конечный вывод можно сделать только при непосредственном тестировании железки.
Попробую угадать… на картинке AsRock Rack ROMED8-2T. На ней распаян дополнительный разъем PCI-E Power (как на видеокарте) и в инструкции написано, что, если больше 2х видеокарт в системе его обязательно надо подключить к блоку питания.
Проверьте, а то вдруг, кто-то просто инструкцию не прочитал.

Неплохая штука (ну… только дороговата).


Но не до конца пойму, зачем райзеры, 4 турбо карты поколения Ampere (да на картинке FE там другие кулеры) туда встанут просто напрямую. Или это корпус такой?

Корпуса были взяты из расчета установки 6 турбокарт или 4 обычных. Но турбо оказалось не купить :)
Проверьте, а то вдруг, кто-то просто инструкцию не прочитал.

Ну за дураков-то не надо людей считать.
Не… я и не думал… но иногда такие ошибки всё-же, к сожалению, случаются, потому и написал, на всякий случай…
Я сначала на фотке посмотрел, но, там, как раз место где этот разъем находится и не видно.
То есть мать за 60 тысяч и к ней можно купить дешевый EPYC 7261 за 30-70 тысяч и получить 128 PCI-E lanes? Вот это круто. Кажется я знаю, на чем буду собирать следующую систему.
Да. Примерно такой логикой и руководствовался при сборке. До кризиса с поставками электроники мать стоила 500 долларов. К ней EPYC 7302 на 16 ядер (не самый дешевый, но под мои задачи показался оптимальным вариантом с небольшим запасом на вырост).
При этом, через пару-тройку лет можно будет сильно добавить оперативки и купить EPYC третьей серии (Milan) с большим количеством ядер, если будет такая необходимость.
Я на Threadripper 1900X и Gigabyte X399 Aorus Exteme собрал, обошелся без райзеров, 4 GPU слота там правильно расположены
В моей сборке, разве что, еще присутствуют вот такие штуки, так что линий в Threadripper не хватило, и райзеры пригодились:
image
Там вообще не просто все с этими линиями. Несмотря на 64 линии, под PCI-E выдается максимум 48, то есть карты работают в режиме 16x-8x-16x-8x. Из-за этого потенциал для апгрейда довольно куцый — процессоры под сокет TR4 которые не 1900X стоят дорого, турбинные карты ограничивают выбор.
В целом решения есть, но что-то новое я бы собрал на EPYC, я почему-то думал что их дешевле 200к за комплект мать+проц не бывает.

Теперь я тоже знаю какой билд планировать в будущем)

Цены на карточки уже не найти, конечно, но за статью спасибо

Да понятно, повторюсь — это скриншот из почты.
Это скорее иллюстрации цены платформы.
С карточками-то все понятно(

Из комментов я реально узнал для себя новые вещи:


  • Про очень интересную материнку и недоступность ThreadRipper PRO
  • Что на авито продают блоки питания очень дешево и массово (майнинг)
  • Про модные райзеры

Но осталась все-таки еще пара вопросов, которые публика обошла стороной:


(0)


Пока все в основном писали про материнки, карточки и корпуса.
Но никто не написал про сеть какие-то свои хаки или находки.
Я вот просто не знаю (хватало, руки не доходили, ноды все слишком разношестные) нужно ли больше 10 гигабит сети чтобы тренить сетки через DDP.
Такое обычно очень плохо гуглится.


(1)


16 GB RTX 3080 W/ 8704 CUDA Cores

Кто-нибудь все таки знает что это такое тут?

Недавно проскакивала новость, что Threadripper Pro таки будут продаваться, но купить их все равно будет, наверно, сложно.
А, на перечисленные ваши вопросы ответов у меня, к сожалению, нет )).
В качестве хака могу посоветовать установить 14 видеокарт через райзеры в вышеупомянутую материнку, пробросить в виртуальные машины, и посмотреть сколько там будет трафика.
По поводу сети — посмотрите на статистику дропнутых и переотправленных пакетов во время работы, если она растёт — вы упираетесь в сеть.
Spark на больших объемах и 40Гб/с сеть неплохо утилизирует.
Кто-нибудь все таки знает что это такое тут?

Ноутбучная версия: videocardz.com/newz/nvidia-geforce-rtx-3080-mobile-confirmed-with-6144-cuda-cores-and-16gb-of-memory. Десктопной такой нет, варианты 3070/3080 с увеличенным объемом памяти nvidia отменила.

Еще лайфхак: слышал, что 40 гигабит недорого делают на б/у infiniband железе с ебэя.

У знакомого в офисе коллеге купили такой ноут
Если не забудет, спросит его как оно

Да, 354a мелланокс относительно не дорог (немного дороже 10 гигабитных sfp+ карт). Может работать как IB так и Eth.
Потребуется еще dac кабель примерно такой MC2207130-001
Основной затык, пожалуй, в свитче. Eth свитч с QSFP будет довольно дорог.
Как вариант если нужно объединить несколько серверов (gpu/data), то можно их залинковать по IB, а для доступа к остальной сети использовать встроенные гигабитную сетевуху. В этом случае можно посмотреть на бюджетную IS5022 (свитчи с гетвеем IB<->Eth стоят на порядок-полтора дороже). Но сам такое не пробовал.

А вас не затруднит накидать пару ссылочек на новое / старое, чтобы прицениться и понять, где вообще это искать?

Да не вопрос — ebay.com :)
2х портовый qsfp (40 гигабит) — Mellanox CX354A-FCBT (ebay)
QCBT можно пережить в fcbt, но китайцы по-моему и так все перешивают в старшие модели и продают уже как старшие модели.
Есть еще однопортовый (cx353a), но смысла нет — деньги те же, а порт один. дока1 дока2
Для подключения лучше использовать пассивные медные патчкорды (dac кабели)
dac кабель — MC2207130-001 (1 метр) или MC2207130-002 (2 метра).
Никакие трансиверы в этом случае не нужны. Смотреть на ebay, хотя на авито может что-то интересное пролетать
IB свитч mellanox is5022 (ebay)
Для Eth смотреть свитчи с qsfp портами. Скорее всего это будут большие железки для установки с стойку. На ебее есть интересные (и относительно недорогие) варианты, но из-за размера/веса и возможных проблем с таможней тащить их не очень интересно.

Еще особенность 40 гигабит — по сути это 4*10 гигабит агрегированных линка. Есть кабели которые позволяют разбивать 40 гигабитный порт на 4 по 10 гигабит (пример) но только со стороны свитча + требуется поддержки свитча
Также у мелланокса есть переходники для подключения в 40 гигабитный порт 10 гигабитных модулей (sfp+) MAM1Q00A-QSA

И еще здесь можно много интересного найти

Хм, читал что-то насчет волн апгрейдов с 10 до 40 и с 40 до 100.


Глупый вопрос, а сейчас разве не должны распродавать серверное оборудование на 100 гигабит, т.к. все апгрейдятся на 100+?


Или все еще на 40 переходят?


для Eth смотреть свитчи с qsfp портами. Скорее всего это будут большие железки для установки с стойку

я вот урвал 10 гигабитный маленький
их вообще не бывает маленьких?

100 гигабит, как я понял, тоже распродают. Цены по enterprise-меркам тоже очень низкие (например, $400-500 за адаптер), но это уже в разы дороже, чем 40 гигабит.
100 гигабитный мелланокс — это начиная с cx456a. Стартует он где-то с 300.
А вот свичи… 25/100 б/у с ебея там — думаю где-то от $2к. Здесь, думаю, ценник будет стартовать от 400-500тыр
Вот я не уверен, что «все апгрейдятся на 100+». Если в датацентрах они может и нужны, то в обычном энтерпрайзе далеко не всем нужно даже 100 гигабит. И встречал статью, в которой разбирался переход с 10/40 на 25/100. В реальности латенси почти такой-же, цены — в разы дороже, и учитывая что большинству 10/40 хватает — смысла перехода нет. Железки обычно скидывают, когда по ним наступает EOL и нет поддержки. Для 25/100 железок это время еще не наступило.
Учитываю какие потоки свитчи должны перемалывать — очень врядли что-то из маленького найдется хотя бы даже на 4-8 QSFP портов.
Кстати, какой маленький 10 гбит свитч взяли? что-то из микротика?

Мне в чате еще написали мол что люди пробовали для тренировки сеток
Мол 10 гигабит хватает
Но у меня банально двух одинаковых нод и задачи нет чтобы проверить =)


Если коротко подытожить


  • 10 гигабит — бесплатно, только свич найти
  • 40 гигабит — провода, найти свич (скорее всего рековый), 100-200 баксов за 1 карточку, PCIE порт лишний кушает
  • 100 гигабит, то же самое, но свич еще сложнее найти, 1 карточка 300-400+ баксов

все верно?

ну не бесплатно )
10 гигабит — даже если интегрированная, то rj45 свитч выйдет скорее всего немного дороже sfp+, и, вероятно, будет шумнее, а латенси будет чутка больше.
40 гагибит — патчкорд $25, карта $65. Свитч будет дороже чем для 10 гигабит

25/100 гигабит — все дороже 10/40, наверно раз в 5
Мол 10 гигабит хватает
Можно прикинуть — при обучении идет обмен градиентами, соответственно требуемая полоса пропорциональна размеру модели и количеству шагов оптимизации в секунду. Десятимегабайтная модель, апдейтящаяся 10 раз в секунду, требует порядка 100 мега_байт_ на ноду. Соответственно на гигабитном канале 50% времени будет идти прогон, 50% времени — обмен градиентами. На 10 гигабитах ситуация получше, но, с другой стороны, зачем такой модели, которая обучится за пару дней на одном GPU, сетевые решения? Если в пределах одной машины можно устроить молотилку на 4-8 GPU. Не понимаю.

Получается что если применить такой расчет, то 500-мегабайтной модели, делающей 2 шага в секунду нужно в районе 10 гигабит, а 50-мегабайтной — где-то гигабит. В принципе сходится.


о, с другой стороны, зачем такой модели, которая обучится за пару дней на одном GPU, сетевые решения

Да банально оценка цены дальнейшего масштабирования. Такие статьи это хороший повод собрать опыт в одном месте.

Большое спасибо!
Для себя я заначил вот это видео — там строят на дешевых компонентах 10гбпс. Возможно Вам пригодится: youtu.be/y1HLAkb2lrU

ну он зачем-то на оптике 10 гигабит делает
10 гигабит можно на cat 6 сделать
даже cat 5 работает на малом расстоянии


и карточки сетевые есть дешманские за 5-7 тыр
тут даже вторичка не нужна =)


а все топовые мамки для DL 10 гигабит на борту часто и так имеют

Рекомендация покупать 10 серию видеокарт вредная. В 10 серии нет тензорных ядер, а дальше они есть, и карты 20 серии с тензорными ядрами примерно в 3 раза быстрее в fp32 и в 9 раз быстрее в fp16 для обучения нейронок, чем аналогичные карты 10 серии.
Рекомендация покупать 10 серию видеокарт вредная.

10 серию надо покупать исключительно подержанными (и не убитыми) только по интересной цене. Идеальный вариант — с малым пробегом у дяденьки, кто собрал комп для красоты.


карты 20 серии с тензорными ядрами примерно в 3 раза быстрее в fp32

В fp16 сравнивать смысла нет, т.к. 10 серия просто не предназначена для этого.
А тут интересный вопрос, прирост по скорости будет зависеть скорее от задачи.
Вообще кажется странным, что если бы там реально на всех задачах было x3, то карты бы наверное пошли в массы все-таки.
Ну и плюс бенчмарки многочисленные на реальных сетках показывают далеко не x3.

У меня есть и то и то, я могу сказать только что все упирается в текущий рынок. За определенную сумму все карты выше определенного уровня хороши (совсем дешевые плохи из-за того, что занимают PCI-E слот, который стоит денег). Так что если на multi-GPU плевать и система собирается под инференс или под гридсерч, можно подумать.

В сентябре 1080Ti стоили 30 тысяч, 2070S стоили 40 тысяч новые, 2080S стоили столько б/у. Между 70S и 80S не такая большая разница чтобы покупка б/у окупалась, но вот 1080Ti на этом фоне смотрелись так себе.
Плюс 1080Ti: 11 гб памяти против 8 у 2070Super.
Плюсы 2070S: такая же производительность на 32 битах, но холоднее при этом (градусов на 10-15 в турбинном исполнении), есть 16 бит.
Как сейчас с рынком не знаю. Бегло похоже, что 2070S до сих пор предпочтительнее.

По поводу 16 бит. Главный плюс float16 не столько в приросте скорости, сколько в том, что это эффективное удвоение доступной памяти, а это много. То есть помимо прироста скорости еще и скорость тренировки выше из-за на 30% большего батча. Память — это хорошо.

Прирост скорости штука более тонкая. Если постоянно тренируешь один и тот же тип CNN — это одно, прирост будет двухкратный и без проблем. Если сравнивать поколение к поколению (то есть 1080Ti и 2080Ti) — верю и в трехкратный. Но. По сути это лишний «гиперпараметр», усложнение всей конструкции. Возможно где-то потребуется лишняя нормализация, возможно сторонний код незаметно кастанет все в 32 бита. Я вот вчера обнаружил, что при возврате на 32 бита у меня нет замедления вообще. Полгода назад было, сейчас нет. Потому что кастомные слои с гитхаба. Пофиксить не проблема. Но тем не менее, если бы у меня были 3090, я бы не запаривался с 16 битами вообще, это не бесплатная вещь.

Шина предусматривает подачу питания, а иногда даже контроль и управление оным.
И это питание используется, как минимум для поддержания работы интерфейса, контроллера питания, и тд.
Бывают кейсы когда ублюдочный рейзер и/или гениальная разводка бытовой платы и/или вы решили подправить биос и наплодить сущностей или мать сама умеет и их плодить но не разу не ждёт такой нагрузки.
Лечится паяльником, но нужно понимать что по хорошему это отдельный контур питания.

Я занимаюсь подобного рода «суперкомпьютерами» достаточно давно и накопилось прилично опыта. Добавлю свои три копейки. Всё, о чем я пишу, опробовано и испробовано мной лично, если не указано обратное.

Итак, поехали.

1. Размещение оборудования

1а. Если мы говорим о дешевом вычислителе, то зачем нужно размещать его в общественном датацентре (ну если вы конечно не аффилированны с оным)?
Нужно подумать о своем небольшом помещении с хорошей продуваемостью — и будет вам счастье. Если нужен доступ с разных мест- микротики и впн — сейчас это несложно, зато вы уходите от суровых ограничений датацентров на габариты, что важно не только для удешевления, но и для долговечной работы карт, которые вам не придется плотно упаковывать в тесные корпуса; Понятно, что датацентр может быть необходим из неких политических моментов, типа политик инвесторов и тд, но я рассуждаю исключительно в терминах денег и технических решений. Я занимаюсь этим на свои деньги и пришел именно к такому формату;

1б. Продуваемость помещения зависит от мощности оборудования и геометрии самого помещения. Если вы делаете это не сами, то посоветуйтесь с вентиляционщиками- при всей банальности вопроса- треки воздушных потоков весьма неординарны и без опыта в этом деле — непредсказуемы.
Помните, что 2070супер кушает 130 Вт, 3090- до 370 Вт в зависимости от настроек питания гпу; То есть пара ферм 5х3090 в пиковой нагрузке будет выдавать 4квт тепла, которые вам надо удалить из помещения вместе с воздухом и обеспечить приток холодного воздуха того же объема. Бытовой распространенный напольный вентилятор диаметром 45см и мощностью 120вт работающий на выдув- это тот минимум с которого нужно начать.
1в. Кондиционеры не решают. Они только будут жрать кучу электричества. Решает забортный воздух. Даже летом.

2. Технические моменты реализации вычислительной фермы
2а. Корпус
Корпус ненужен. Корпус это зло. Нужен каркас, как у майнеров. И не ставьте карты плотно. Пусть между ними будет 10см и как можно больше воздуха; Ограничением также выступает длина хвостов питания от БП;
2б. Питание и райзеры
i) Вопросы питания и райзеры связаны непосредственно. Примите как данность что вам нужно питание карт через райзеры иначе на мощных картах у вас загорится либо разъем питания на матери, либо дороги на самой матери; Я использую обычные майнинговые райзеры на одну линию pci-e у которых есть разъем для подключения питания. Да, это х1, но мне пока лень паять чтото самодельное на х16 с доп.питанием; зависит, естественно, от задач- если нужно постоянно гонять из основного озу в память гпу большие объемы — то надо уширять шину.
ii) Схема питания. Можно использовать один мощный БП, можно использовать несколько БП по следующей схеме: Один (более сильный) БП питает мать и дает питание на райзеры (для расчетов мощности считаем, что через райзер карта потребляет 30 процентов своего тдп), второй и последующие БП питают карты через разъемы доп питания на самих картах. Не перепутайте, в сети полно примеров сгорания систем; питание карт через райзеры электрически связано с питанием матери, поэтому должно осуществляться одним БП, доп питание на картах же электрически не связано с матерью- незнаю как это сделано, но это факт); Такая схема питания удешевляет сборку, но увеличивает габариты фермы.
Можно приобрести так называемые синхронизаторы для одновременного запуска ведомых бп от ведущего, но это излишне, можно просто перемкнуть на-вечно скрепкой у ведомых бп нужные пины и они будут всегда включенными. Для карт это нормально- я питал так и древние 1070 и текущие 3090;
При использовании нескольких бп нужно включать их в розетки однообразно, тоесть чтобы ноль и фаза были на одних и техже контактах БП. При использовании ассиметричных (г-образных) вилок- это не проблема. Да, это геморрой, но это экономит деньги. Но мы тут как раз за этим)
iii) Блоки питания. Я негативно отношусь к переделанным серверным БП, ибо в сети полно примеров на тему умирания карт при сбое в таких бп. Хотя, признаюсь, блоки на 3КВт от IBM выглядят очень вкусно и притягательно и я неоднократно думал перейти на них, но мысль о сгорании нескольких карт 3090 меня сразу отрезвляет.
Я использую или фирменные Zalman EBT на 1200 Вт (когдато они были по приятным ценам в ДНС) или фирменные же маломощные блоки на 750Вт от нормальных брендов типа того же Залмана, Термалтейка и тд — одно время в ДНС были приличные термалтейки по низкой цене и аж с 60месячной гарантией — от жадности я их купил много и теперь приходится использовать. В последнее время я использую китайские БП высокой мощности (1.6, 1.8, 2.4 КВт), продающиеся в майнинговых инетмагазах;
iiii) Кондиционирование питания. При высокой стоимости оборудования- это обязательный момент. Я использую стабилизатор двойного преобразования Штиль Инстаб. У них есть интересные модели, которые берут на вход 3 фазы и выдают однофазные 220вольт. Дорого (примерно 100тр на 20КВА или 16КВт), но необходимо. Без них можно лишится всего в один момент, если вдруг электрик перепутает фазу с нолем или сделает обрыв ноля.

2в. Материская плата (и процессоры).
Тут все просто. Нам нужна мать с большим количеством линий pci-e для подключения карт и ссд и с поддержкой нужного объема озу;
Если вам достаточно 64 гб озу — то это дешевые бытовые платы прошлых поколений типа MSI Z270-A PRO или аналогичные; Именно на таких у меня все и крутится.
Текущие бытовые платы я рассматривать смысла не вижу- они поддерживают только 128гб а стоят дорого;
Для тех кому надо больше 128 гб озу- огромный выбор серверных плат, например на авито много двухпроцессорных плат Супермикро предыдущего поколения с сокетом 2011-3 и чипсетом с612, поддерживающих процессоры Xeon E5-2600 v3/v4 и имеющих 16 слотов DIMM куда можно установить до 2Тб (в зависимости от модели), например — SuperMicro MBD-X10DRi. Этот вариант я собираюсь реализовать в ближайшее время. Поддержка же процессоров как v3 так и v4 дает большой разбег по итоговой стоимости, хотя основная часть стоимости тут будет память, конечно.
Также отдельно стоит сказать о вот таком моменте- я использую переходники для подключения м2 ссд в pci-e x16 слоты. Многие матери не позволяют грузиться с них, но в целом это не проблема- быстрый ссд используется для хранения обрабатываемых данных, а загрузка системы происходит с обычных сата ссд. Почему-то такой вариант многих отпугивает и народ упорно ищет платы (или шьет биосы) для поддержки загрузки с м2 — я не вижу в этом никакой надобности. Да и разделять диск с системой и диск с данными- это всегда хорошо;

3. Хранение данных. Как говорил один мой древний начальник — если можешь всё хранить локально- храни локально на одном накопителе или зеркале, если не умещается- делай локальный рейд для увеличения ёмкости, и если только оно нелезет уже никуда- думай про внешние схд и соответствующее сетевое высокоскоростное хозяйство. Я анализирую курсы валют и у меня пока нет проблем с хранением- вся база mysql на 600млн строк занимает жалкие 15гб, а выборки по нужным частям сохраненные в питоновские массивы — вообще копейки, поэтому у меня стоят ссд вд блэк на 1 тб и этого пока хватает, но в будущем планирую рейд из 4х двухтерабайтных ссд, аналогичный тому, что был приведен в пример выше. Понятно, что это не показатель, и на других задачах имеется сильно больший расход пространства и там не уйти от схд.

4. Жидкостное охлаждение
Отдельно хочется про это сказать несколько слов ибо в головах у народа часто каша и весьма вредная.
Менять имеющуюся воздушную со на водянку я сам не рискую и никому не советую. Имеется два аргумента против:
1) протечки. они случаются и иногда убивают карту и мать; погуглите- страдальцев полно;
2) память охлаждается через термопрокладки, которые со временем ухудшаются. Имея постоянный обдув фермы воздухом мы дополнительно уносим сколько-то тепла непосредственно с платы и чипов, установив же водянку мы лишаемся этого обдува, что не улучшает температурные условия работы памяти и системы питания карты;

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

5. Модели карт
Начиная с 20ого сеймейства я подсел на MSI Gaming X trio и MSI Suprim X. Это достаточно дорогие карты с хорошей схемотехникой, большим количеством фаз питания, хорошей отбраковкой чипов гпу (по сравнению с, например, MSI Ventus, которые вообще не едут) и очень крутой системой охлаждения. В целом я сделал достаточно обоснованный вывод, что лучше переплатить за премиум исполнение карты и получить отсутствие геморроя, больший срок службы и большую производительность, нежели взять дешевые варианты.

Надеюсь, это будет полезно людям, которые занимаются машинным обучением.
Всем успехов в обучении их моделей!

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


Тут на самом деле нет единственно верного решения, но касательно отличий майнинга от ML могу отметить несколько моментов:


зачем нужно размещать его в общественном датацентре

Вообще если есть куда ставить то конечно не надо (если есть загородный дом с пустыми комнатами, гараж, итд итп)
Если вообще балкон не на солнце и квартира большая… то очень многие на балконе просто держат
Некоторые колокейшены принимают ATX корпуса и корпуса на уголках (если самому ставить некуда)
Также прайсинг ML решений строится не от цены киловатта и железки, и размещение нескольких ATX боксов или стойки может быть разумно


Ну то есть условно не всегда нужно сильно больше чем 10 карточек (лучше делать более оптимальные алгоритмы) и решение вопроса с питанием и отведением тепла по сути может стоить маржи за электричество, которую берет ДЦ.


При построении фермы — дешевое электричество, охлаждение и размещение — очень важны. в ML — в некоторой степени меньше, т.к. масштабирование на 100 карточек на постоянку обычно уже не нужно. Ну или если нужно, на 1 неделю амазон все-таки проще. Чем полезным занять 100 карт на 100% времени целый год — если честно я не знаю. 10-20 карт — без проблем. Опять же правило года действует.


Я использую обычные майнинговые райзеры на одну линию pci-e у которых есть разъем для подключения питания. Да, это х1,

Для ML нужно минимум x4-x8.
Но комментарий про питание на райзерах очень ценный.
Я просто до этой статьи не знал, что райзеры надо питать =)


предыдущего поколения с сокетом 2011-3 и чипсетом с612

Для ряда ML задач процессора на этом сокеты не очень интересные по сравнению с решениями от AMD. Да и в самих матерях бывает нет слотов важных (M2).

Тут зависит от задач. Например для включения в биржевой трейдинг нужно как можно больше мощностей.
С другой стороны- если вычислитель нужен редко- то смысла все это городить конечно же нет, проще арендовать гпу в облаках.
Смысл строить свой суперкомп есть только тогда, когда вы его можете загрузить круглосуточной работой, когда у вас есть пайплайн и конвейер данных. Если вы нагружаете гпу только когда приходите на работу и только на 10 минут в час- то или аренда или обычный комп в просторном корпусе под столом…

Чем полезным занять 100 карт на 100% времени целый год — если честно я не знаю. 10-20 карт — без проблем.

тем же самым, только больше моделей, больше вариантов параметров, больше данных, больше фич))

Опять же правило года действует
А что это?

Для ML нужно минимум x4-x8
Если не секрет, вы на каких задачах это ощущаете? Тестировали чтото на х1 и на х8 и оно дало сильную разницу?
Я пробовал х16 (карта воткнута в слот на матери) и не увидел разницы с х1 вообще. Возможно это был чисто умозрительный пример и если поработать дольше то разница будет. Опыта нет.
А что это?

Ну если можно минимум год постоянно юзать (хотя бы 60%-70% времени), то выгоднее собирать самому. В облаке маржа 2-3 раза. Ну и некоторые подержанные части сильно снижают кост.


Если не секрет, вы на каких задачах это ощущаете? Тестировали чтото на х1 и на х8 и оно дало сильную разницу?

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


Я бы предположил, что скорость нужна когда сетки довольно большие (500 мб — 1000 мб) и используется 4 карты одновременно.


тем же самым, только больше моделей, больше вариантов параметров, больше данных, больше фич))

Принцип 20-80 и ограниченность рынка тут сильно мешают.

Для ряда ML задач процессора на этом сокеты не очень интересные по сравнению с решениями от AMD.

Можете привести пример из ML где амд будет лучше интела? У меня достаточно узкая специализация- числовые ряды- и вся предподготовка непараллелится и идет практически на одном ядре, поэтому несталкивался с этим, а по работе всегда был интеллистом, поэтому мало что знаю про амд. Интересно обоснованное мнение человека, который по настоящему использует многоядерность (или амд хороши чемто еще?).

примерно на коленке прикидывал для относительно больших моделей сколько нужно пропускной способности, но сам лично тестов не делал. Может тут кто-то из публики лично сравнивал?

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

Можете привести пример из ML где амд будет лучше интела?

При обучении сеток надо грузить много данных и делать с ними операции (аугментации). Зачастую данные лежат еще в сжатом формате.
Как правило это делается многопоточно, на 1 карточку обычно нужно 3-4 физических ядра.
Процессоры AMD в последнее время были сильно интереснее с точки зрения количества ядер * их тактовую частоту (понятно, что там и другие факторы важны).
На старые сокеты или нельзя найти решения с 16+ ядер, или они стоят очень дорого, или там тактовая частота 2 гигагерца против 3.5-4 у более современных.

Спасибо, очень интересный опыт.

Но вот не знаю… Аренда помещения + вложения в вентиляцию, фильтрацию воздуха и стабилизацию питания + электричество по коммерческому тарифу — это намного дешевле, чем стойка в датацентре?
Так все считается. Напишите, например, Игорю Тарасову (itsoft, habr.com/ru/company/itsoft, тут можно как-то упомянуть хабровчанина чтобы он это увидел? былобы здорово), владельцу нескольких стоек в разных дата-центрах, включая NORD в Мск, спросите сколько будет стоить. Само место в стойке недорогое, но вот в купе с электричеством подозреваю что будет дорого.
Но в целом я подразумевал ситуацию с небольшой фирмой или подразделением, которое занимается ML и которой нужны некоторые вычислительные мощности. Как правило, в такой фирме уже есть в наличии какая-то серверная комната или угол со стойкой- то есть зачатки инфраструктуры есть.
Фильтрация воздуха- ненужна. Замените ее ежемесячным продуванием оборудования небольшим компрессором. Стабилизация питания- на 100тр вложенных денег вы получаете 16квт безопасного электричества и устройство, которое в любой момент уйдет на авито за 90.
Понятно, что это колхоз. Но лучшие решения- это те, которые решают, а не те, которые красиво блестят. Имхо)

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


Тариф дома и в колокейшене отличается, но не супер сильно. Так что всегда просто надо смотреть что есть доступное под рукой. На 1 — 2 боксах зимой все прекрасно стояло на балконе.


Ещё в регионах у людей часто есть простаивающие гаражи.

Без комнаты с дверью более одного сервера начинает бесить своим шумом.

Я по ценам датацентров знаю, проводил сравнение, и у меня железо в датацентре стоит. Эл-во в Питере — из того, что я смотрел — средняя цена 8000 за кВт в месяц, минимум 5500 в месяц (это 11 и 7,6 рубля за кВт*ч). Насчет организации в своем помещении у меня тоже была поначалу мысль, но в итоге решил: действительно, хорошо если «зачатки инфраструктуры» уже есть. Но если их нет, то самому строить/арендовать (а плюс к этому, содержать и оперативно реагировать на аварии) достаточно затратно. Ладно воздух и питание, но как насчет системы пожаротушения и охраны, например? :)

Замените ее ежемесячным продуванием оборудования небольшим компрессором

Была у меня когда-то майнинг-ферма, охлаждалась с помощью вентилятора прямо забортным воздухом из окна, а окно выходило на проспект. Покрылась в итоге липкой маслянистой грязью, которая не сдувалась, пришлось мыть спиртом :)

Также пару раз наблюдал процедуру демонтажа отделки в помещении, при которой все окна открыты, и из них валят клубы пара и цементной пыли. Если такое вдруг полетит из соседнего помещения и попадет в вентиляцию, конец оборудованию.

Исходя из этого, в своем помещении я поместил бы очистку воздуха, хотя бы грубым hepa-фильтром, в список приоритетов. Если уже есть настоящая вентиляция, то, наверное, фильтр приделать несложно.
Если уже есть настоящая вентиляция, то, наверное, фильтр приделать несложно.
Если есть вентиляция, а в ней есть вентилятор, то перед ним обязательно защитный фильтр. Проблема надумана, в том числе из-за агрессивного маркетинга хеп.
Любая вентиляция это дырка с мотором, она становится дорогой и сложной когда нужно экономить на обогреве, но это не обсуждаемый случай.
Да, совершенно верно. Мелкодисперсную пыль остановить сложно и дорого, но у нас не «чистое помещение» для науки, у нас колхозная серверная. Обычной москитной сетки достаточно чтобы задержать самые неприятные вещи- собственно насекомых, тополиный пух и прочие штуки с деревьев и капли косого дождя.
Sign up to leave a comment.