Нынче никого не удивишь достижениями искусственного интеллекта машинного обучения (ML) в самых разных областях. При этом доверчивые граждане редко задают два вопроса: (i) а какая собственно цена экспериментов и финальной системы и (ii) имеет ли сделанное хоть какую-то целесообразность? Самым важным компонентом такой цены являются как ни странно цена на железо и зарплаты людей. В случае если это все крутится в облаке, нужно еще умножать стоимость железа в 2-3 раза (маржа посредника). И тут мы неизбежно приходим к тому, что несмотря на то, что теперь даже в официальные билды PyTorch добавляют бета-поддержку ROCm, Nvidia де-факто в этом цикле обновления железа (и скорее всего следующем) остается монополистом. Понятно, что есть TPU от Google и мифические IPU от Graphcore, но реальной альтернативы не в облаке пока нет и не предвидится (первая версия CUDA вышла аж 13 лет назад!). Что делать и какие опции есть, когда зачем-то хочется собрать свой "суперкомпьютер", но при этом не хочется платить маржу, заложенную в продукты для ультра-богатых [мысленно вставить комментарий про госдолг США, майнинг, крах Бреттон-Вудсткой системы, цены на здравоохранение в странах ОЭСР]? Чтобы попасть в топ-500 суперкомпьютеров достаточно купить DGX Superpod, в котором от 20 до 100 с лишним видеокарт. Из своей практики — де-факто серьезное машинное обучение сейчас подразумевает карточки Nvidia в количестве примерно 8-20 штук (понятно что карточки бывают разные). Основная оговорка — в этой статье мы поговорим про билд, в котором нужно делать много стандартных операций (для чего обычно используют видеокарты), но не нужно астрономически много RAM (вообще вроде как даже топовые процессоры ThreadRipper от AMD поддерживают много RAM, но материнских плат таких нет). Вообще все эти вещи довольно очевидны и просты, но я нигде не видел их собранными в одном месте без купюр. Итак нам стало понятно, что нам нужны карточки Nvidia для вычислений. Но не торопитесь покупать карты Quadro или Tesla или покупать официальные сборки, потому что зачастую в сборках заложена маржа в 50-60%. Обращаю внимание также на то, что все "метрики" в этой статье приведены весьма примерные и условные (скорее коррелирующие с нашей ежедневной работой, цены меняются постоянно, а тренды — нет), потому что всегда найдется какой-то вид нейросетей на каком-то особом модном виде тензоров от Гугла, где все будет работать не так. Также опустим и то, что из-за короны и бума майнинга розничные цены неадекватны, но как говорится "This time is not different" и можно всегда будет закупиться на дне пузыря. Как ни странно, с точки зрения потребителя с картами все просто. Вообще есть довольно популярная и длинная статья про выбор и сравнение карточек, она довольно неплохая, но автор явно в силу своего бекграунда упускает некоторые вопросы админства и сравнивает целесообразность опций только с точки зрения первичного рынка США (и очень много букв). Полезную выжимку этой статьи я уже писал тут а для целей этой статьи выжимка уже более подробная и такая: Карточки для обучения:  Карточки для продакшена: Охлаждение: PCIE lanes: Питание:  Вообще можно понятно привести старый график показывающий, что цены падают все еще и на SSD и на HDD, но никак не пересекутся. Но самое адекватное описание ситуации, которое я видел, можно глянуть тут. Если коротко и немного с добавлением ML: И раз уж мы собераем "дешевый" суперкомпьютер из нескольких нод, то можно к нему и собрать и сетевую помойку тоже недорого (раз, два, три). Дальше в принципе можно стандартными средствами Linux даже SSD подкачку сделать для RAID массива (я пока просто обходился десятым RAID на 10 Gbit сети для наших задач). Единственный момент — нужно недорого найти 10 Gbit/s оборудование, с этим может быть сложнее, но многие топовые материнские платы сейчас имеют 2 10 Gbit/s порта и на рынке есть пара недорогих PCIE решений. Допустим с выбором карточек определились. И тут мы переходим к самом интересному — к шасси, на котором предстоит сборка. Большими мазками для обычных граждан и не только условно легко доступны 4 основных типа систем: Первую категорию мы смело отметаем, т.к. мы хотим все-таки экономить. Вторая и четвертая категории по сути идентичны, но мы не хотим платить 50% маржи за гарантию (которую при покупке новых деталей и так дает производитель) и "поддержку" (и какие-то детали проще купить подержанными, например те же 1080 Ti на первое время). Получается, что выбор на самом деле между специализированными серверными платформами и самостоятельной сборкой. Есть еще пятый вариант — заколхолзить на основе Б/У или "пустого" серверного корпуса применив смекалку, но по сути этот вариант просто является адаптацией варианта четыре к установке в стойку, но нужно или иметь такие железки под рукой или знать где покупать и как проверять (мне пару раз предлагали по цене металлолома какие-то старые салазки — но там всегда или не было посадочных мест под PCIE в нужном количестве, или было вопросы к питанию — а колхозить не хотелось). Если внимательно посмотреть на характеристики серверных шасси и "профессиональных" материнских плат, то можно найти несколько интересных закономерностей (по сути они и размер вашего бюджета будут диктовать ваш выбор): Еще отдельно отмечу, что я не использовал однослотовые видеокарты Quadro RTX для обучения нейросетей, но чисто по характеристикам кажется, что две такие карты примерно эквивалентны одной 3090, было бы также интересно выслушать тех, кто пробовал, в комментариях.  Тут на самом деле все просто. Процессор вы по сути выбираете выбирая материнскую плату (я описал основные моменты, которые кажутся мне важными). В случае выбора серверной платформы — вы сразу получаете шасси с блоком питания. В случае самостоятельной сборки — нужно еще найти корпус куда это все влезет, но благо на 4 карты это не представляет сложностей. У меня пока не было потребности (ну или скажем так, мы всегда умудрялись оптимизировать свои расчеты), где нужно было бы соединять несколько нод для расчетов используя скажем DistributedDataParallel из PyTorch (на одной ноде все конечно прекрасно работает). Не могу оценить хватит ли для него "стандартных" 10 Gbit/s без установки дорогих сетевых карт на 40+ Gbit/s. Отдельный вопрос конечно что с этим делать, т.к. такая плата скорее всего займет еще один PCIE-слот. Пока тут могу рассказать только про один хак — в "профессиональных" и "экстремальных" материнках зачастую бывает 1-2 разъема по 10 Gbit/s (и иногда даже третий гигабитный). В совсем дешевом варианте (только цена патч-корда высокой категории, но на коротком расстоянии даже "плохие" патч-корды показывают 10 гигабит) две такие материнки можно соеденить напрямую друг с другом и получить "суперкомпьютер". Если таких разъема два, то можно в мастер ноду уже воткнуть два патч-корда. Но чтобы соединить сеть больше, уже придется найти 10 гигабитный свич (внезапно найти подержанный Mikrotik не проблема, но они обычно очень сложны в настройке). Буду очень рад, если знающие люди, кто строил такие системы и сети поделятся в комментариях опытом, проблемами, результатами своих экспериментов и мотивацией при выборе своей платформы! Александр Вейсов — основатель / владелец комании Силеро (silero.ai), небольшой независимой компании, которая занимается разработкой продуктов в сфере распознавания, синтеза речи и NLP. Публике Хабра Силеро может быть известна по датасету Open STT, моделям silero-models или VAD-у silero-vad. На российском рынке компания распространяет свои решения через прямые продажи / проекты и вендоров / системных интеграторов софта. Machine Learning / Data Science