Бюджетный сервер для обучения нейронных сетей
Всем добрый день. В этой статье я расскажу как собрать сервер для обучения нейронных сетей и сэкономить кучу денег.
Спойлер, сэкономлено почти 400 000 рублей.
Немного предыстории.
Я много лет занимаюсь наукой и стартапами. Последние несколько лет я делал проект в сфере аналитики международных финансовых рынков на базе нейронных сетей (В связи с развалом международной оплаты его пришлось прикрыть, если кому-то интересно, и сейчас я его разворачиваю в другую сторону. Но написать я хочу не об этом). Кому интересно, можете прочитать статьи здесь.
Проблематика проектов такова, что развиваясь я неизбежно пришел к работе с большими данными. Легко некоторые датасеты стали достигать под сотню гигабайт, и обучать их на обычном дектопе стало затруднительно.
Если посмотреть в сторону облачных решений, то все они стоят как крыло от боинга.
Не в рамках рекламы, а в рамках примера я приведу сервис:
В качестве примера на рисунке выше я привел некую сопоставимую по характеристикам машину, сборку которой я буду описывать.
Как вы видите, 50+ к в месяц заставляют задуматься о покупке своего сервера.
Логика решения
Когда вы создаёте сервер, то ваши действия должны быть целесообразны.
Например, мне нужно создать ансамбль нейронных сетей. В ансамбле от 9 до 12 нейронок. Допустим каждой из них нужен датасет по 100 Гб. У вас может быть больше или меньше. Главное, вы можете посчитать, сколько у вас должен быть размер хранилища.
Следующим немаловажным фактом является наличие RAID 0 уровня под PCI-E для максимизации производительности работы с данными. В моём случае это ключевой фактор как с целью генерации датасетов, так и работы с ними.
Другой фактор, возможность масштабирования ресурсов.
Объем датасета желательно целиком засунуть в оперативную память, чтобы комфортно было подготавливать и гонять данные через обучение нейронной сети.
Всё это и многое другое накладывает ограничения на ваш выбор.
Другим супер важным фактором является текущий финансовый кризис. Поэтому закупка и сборка должна быть такой, чтобы сэкономить очень много денег.
Материнская плата
В качестве материнской платы была выбрана двухсокетная материнская плата X99 D4X8
Материнская плата имеет 2 сокета 2011-3, 256 Гб максимальный объем оперативной памяти, два NVME m2 слота и 3 PCI-E слота по 16 линий на каждом, что является важным фактором с точки зрения вычисления на GPU.
Куплена материнская платы была на aliexpress за 11500.
Для примера ссылка:
На момент написания статьи она стоит 7200. Упал доллар к рублю, стало дешевле.
В качестве аналога можно привести:
Материнская плата Supermicro MBD-H11DSI-O Socket SP3 16xDDR4 2xPCI-E 16x 3xPCI-E 8x 10 EATX Retail.
Цена: 57 тысяч рублей.
Или вот:
Серверная материнская плата ASUS Z10PE-D8 WS.
Цена: 59 тысяч рублей.
Итого, сэкономлено 45 тысяч рублей.
Здесь я скажу ДВА очень важных момента, на которые вы должны обратить внимание!!!
Если вы будете покупать подобные платы, то осознавайте её размер. Об этом я дополнительно скажу ниже.
Например, размер этой платы 33 на 30,5. Заявляется EATX, что в принципе правда. Но ей нужен ООЧЕНЬ большой корпус, желательно EEATX.
Выбирайте верно блок питания. Посмотрите, у материнской платы 2 гнезда для подключения питания CPU на 8 пинов.
Если у кого то не работают SSD под M.2 слоты, то около слота есть переключатели, которые я обозначил на картинке выше. Их нужно переключить.
К сожалению, аппаратного RAID для M2 SSD у меня сделать не удалось, поэтому пришлось довольствоваться программным через Windows. Для SATA портов разумеется всё в порядке.
Другим важным моментом является разгон. Имеется возможность прошить BIOS и сделать анлок Turbo Boost и андервольтинг. Turbo Boost и андервольтинг дают возможность поднять частоту на ядрах до 3 ГГц, что является важным с целью повышения производительности.
На просторах интернета есть решения на эту тему. Но я пока себе не делал.
CPU
Процессоры подбирал здесь:
Смотрел по соотношению цены и характеристик. Взял топовый по производительности, но хороший по цене.
Взял 2 XEON 2693v3 по 18 ядер на каждом.
Оба они мне обошлись в 25500
В России они продавались дорого, по 70 тысяч за штуку.
Итого сэкономлено порядка 130 тысяч.
Оперативная память
Большая часть датасетов у меня порядка 100 Гб. И на текущем этапе было принято установить на борт 128 Гб. 4 планки по 32 Гб DDR4 фирмы Samsung обошлись мне в 12 тысяч каждая планка, итого 48.
ВАЖНО! Когда вы покупаете память, обращайте внимание на её тип в спецификации материнской платы и её поддержку процессором. Потому как часть китайских плат поддерживают DDR3.
Обращаю внимание на то, что данная память серверная. Она подойдет в х99, но не подойдет в обычные компьютеры.
Для сравнения взял Самсунг 32 Гб с яндекс маркета: 42 тысячи рублей за планку. Итого: 168 за комплект.
Сэкономлено: 120к.
Блок питания
Взял Taifast на 1800 Вт за 8,5к. В Росси такой мощности стоят порядка 55к.
Разница порядка 47к.
Здесь есть важный момент, в выборе блока питания я немного ошибся. Точнее ошибся не я, а заявлено было неверно, что якобы есть 2 ветки питания CPU на 8 пинов, по факту оказалась 1. В итоге мне пришлось покупать переходник 2xPATA->8-pin 12В.
Всё отлично работает, особенно с учётом того, что веток питания в принципе на данном блоке великое множество.
Важным фактором выбора данного блока была возможность наращивания мощности сервера с точки зрения обучения на GPU.
Вы должны понимать, что ваш блок питания должен спокойно питать всю систему.
х145 Вт CPU уже 300 Вт. + 60 Вт Материнская плата.
+ Видеокарта 3090 ti 450 Вт.
Итого, если вы ставите 2 топовые карты объединенные по SLI, то вам и 1800 Вт может хватить впритык.
SSD и HDD
HDD взял Seagate на 4 Тб. На первое время достаточно для хранения датасетов.
Цена вопроса 7 тысяч. В ДНС такой стоит порядка 10к. +3к экономии
SSD KingSpec 2 штуки по 512 Гб работают в RAID 0 для ускорения производительности. Обошлись оба за 8,5 к. В России за 2 можно отдать порядка 14к. +6к экономии.
В будущем планирую поставить что-то такое. Это переходник PCI-E под M2, чтобы сделать RAID 0 уровня под несколько SSD. Например данный под 4 SSD.
Система охлажедения
Здесь есть важный нюанс для рассматриваемой платы, для которой я купил процессор 2693v3.
Можно рассмотреть какого-то рода башенные куллеры (с 6 трубками), как представлено на рисунке выше. Проблема в том, что 2-х вентиляторных куллеров не достаточно по рассеиваемой мощности для охлаждения, нужно радиатор как на рисунке ниже. Однако он не помещается в материнскую плату. И это очень важно!
Поэтому, было принято решение об установке водяного охлаждения с показателями рассеиваемой мощности порядка 200Вт, что вполне хватит на наши 145 Вт процессоры.
Цена вопроса системы охлаждения для 2 CPU: 6,5K. Цена в России примерно одинаковая.
На корпус было установлено 3 куллера по 120 - 140 мм.
Корпус
Корпус это очень больная тема. Я перепробовал несколько. Покупал в России, пришлось относить в магазин.
Если посмотреть на размер плат:
То E-ATX точно соотносится с тем, что заявляет производитель материнской платы: E-ATX305 × 330.
Однако, корпуса, которые заявляют поддержку E-ATX делают это опрометчиво. Я перепробовал несколько, ни в одну он не вошел.
Если же рассматривать что-то вроде такого: Корпус Fractal Design Define 7 XL [FD-C-DEF7X-01] черный [Full-Tower, E-ATX, EE-ATX, Micro-ATX, Mini-ITX, USB 2.0 Type-A, USB 3.2 Gen1 Type-A, USB 3.2 Gen2 Type-C]
Он поддерживает EE-ATX, и наверное в него войдет материнская плата, но подобные корпуса стоят 35к+.
Поэтому было принято решение купить самый большой корпус с поддержкой E-ATX и немного допилить его напильником, чтобы установить туда материнскую плату.
Был куплен: корпус Cougar PANZER MAX-G [106AMK0015-00] черный
Цена вопроса 12к. +30к экономии.
Для того, чтобы выпилить часть задней панели как на рисунке выше, а также для доработки мест крепления материнской платы был куплен инструмент: пилки для электролобзика, свёрла 2,5 мм, метчики М3, вороток. В качестве упоров для материнской платы использовались пластиковые скобы высотой 5 мм.
После удаления лишнего, материнская плата встала.
Упоры для крепления материнской платы дорабатывались как показано на картинке ниже.
Как итог, часть корпуса под материнскую плату после установки упоров выглядела вот так:
Для поддержки материнской платы сверху пришлось делать пластиковый прихват:
Тем не менее, всё отлично встало и работает:
Итог
Всё отлично работает.
Цена сборки (с учётом доработки): порядка 130 000 рублей.
Экономии 380 000 рублей, по сравнению, если закупать аналоги в России.
Под конец хочу сказать, что не призываю никого покупать на Алике. Следует понимать, что это риск в разных смыслах слова. + Качество. Каждый делает свой выбор сам.
Однако, в кризис порой не бывает выбора, и приходится искать решения.
Всем всех благ и успешного бизнеса.
Мам, это для учебы.
К сожалению, аппаратного RAID для M2 SSD у меня сделать не удалось, поэтому пришлось довольствоваться программным через Windows.
К счастью.
/fixed
Когда развалится программный RAID - поматеришься, но восстановишь. А вооот когдааа развалится аппарааатный...
Взял 2 XEON 2693v3 по 18 ядер на каждом.Это Хасвелл почти 10 летней давности
Обращаю внимание на то, что данная память серверная. Она подойдет в х99, но не подойдет в обычные компьютеры.Все Ryzen поддерживают ECC. Как минимум часть плат ASRock поддерживает комбинацию ECC + Ryzen. Но в целом это конечно бессмысленно, т.е. память с ECC дороже.
Взял Taifast на 1800 Вт за 8,5к. В Росси такой мощности стоят порядка 55к.Это унылое говно, а не блоки питания. У той же supermicro блоки питания под сервера с видюшками от 2 кВт, хотя можно 3 кВт+ купить. Но самое большое отличие в том, что у серверов два блока питания, если это не лезвие. Лезвия по-другому резервируют питание в случаях выхода из строя одного из блоков питания.
+ Видеокарта 3090 ti 450 Вт.Не серверная видеокарта. И нужно понимать, что есть обучение, есть инференс. Надо смотреть на то что там с тензорными ядрами. Велика вероятность что в ваших задачах v100 скорее всего будут сильно производительнее 3090 ti.
SSD KingSpec 2 штуки по 512 Гб работают в RAID 0 для ускорения производительности. Обошлись оба за 8,5 к. В России за 2 можно отдать порядка 14к. +6к экономии.Никогда не стоит использовать RAID0. Во-первых, это не надежно. Во-вторых, встроенные контроллеры обычно очень плохие по производительности. Смысла брать SSD и объединять их - нет. Если уж хочется RAID0, то надо брать внешний PCI-E контроллер, но с Intel могут быть проблемы. Лучше собирать коробку на AMD EPIC, у AMD PCI-E линий раза в 3-4 больше, чем аналогичных конфигурациях у Intel. Вообще любые конфиги на видеокартах типа A100 сейчас собирают на AMD из-за PCI-E.
Цена сборки (с учётом доработки): порядка 130 000 рублей. Экономии 380 000 рублей, по сравнению, если закупать аналоги в России.Это не экономия. Собрали +/- нормальный игровой комп со старыми процами, которые будут медленнее современных десктопных процов. Тем более SIMD инструкции в новых десктопных процах возможно превзойдут старые Xeon. Не могу оценить, т.к. нет десктопных вариантов и некуда их вставить. На сервер это все не тянет, скорее воркстейшен. Ну и я бы лучше брал б/у v100 все же.
А вообще, есть такая вещь как исследования: https://benchgame.com/ru/compare-cpu
Можно сравнить производительность процессоров.
У него одинаковые показатели производительности с core i9, как это показано на картинке.
Да вы меня конечно извините, но я за него отдал в 5 раз ниже, а у меня их 5.
Поэтому, лично я считаю подобный выбор разумностью в современных условиях.
Однако, я никого не призываю поступать также. Само собой можно отдавать по сотку за топовые зеоны.
Там есть смысл райда 0 уровня. Он используется ТОЛЬКО с целью максимизации производительности.
Само собой, хранить проекты на нем опасно. Поэтому для хранения проектов нужно создавать отдельный райд, например 5 уровня.
По поводу говна согласен. Проблема только в том, что сейчас на дворе кризис, а жить как то нужно. Поэтому, некоторые вещи это неизбежность.
По поводу игрового компа не согласен.
Но самое большое отличие в том, что у серверов два блока питания, если это не лезвие.Ващет по-разному бывает, какой конфиг соберете. Но 2 БП большого смысла нет. Проще собирать с одним и резервировать нодами.
Полезно, спасибо за такую подробную инструкцию