Как собрать компьютер для ML



    Свой собственный сервер для обучения — как машина в 20 веке: если вы всерьез занимаетесь Data Science, рано или поздно вы придете к тому, что нужна единая настроенная среда, уверенность в ресурсах, независимых от правил работодателя и админов. Кто-то скажет, что всё можно делать в облаках, однако постоянный доступ, долгие эксперименты 24/7, да еще и с хранением данных выйдут в копеечку.

    Итак, если вы решились — нужно строить свой город-сад.

    Давайте посмотрим, что нам нужно:

    • Датасеты где-то должны лежать. Нужна возможность хранить и иметь быстрый доступ к большим объемам данных.
    • Видеокарта. Resnet-ы и Unet-ы ждут.
    • Многоядерный процессор. Многие забывают, но многие операции в numpy, pandas, да и алгоритмы градиентного бустинга отлично распараллелены для multithreading, но все еще не работают на видеокартах.
    • Оперативная память. Должна вмещать все.
    • И остальное, что должно обслуживать параметры: достаточный источник питания, корпус и материнская плата, где все это счастье поместится, операционная система.

    Самый главный определяющий фактор, конечно, бюджет. Свой я определил в районе 150 тыс. рублей.

    Итак, первое и самое дорогое — это видеокарта. Давайте признаем очевидное: Nvidia является сейчас абсолютным лидером по производительности и совместимости фреймворков, и если вы пишете нейросети, то вам нужно cudnn и cuda. Но хорошие видеокарты стоят круглые суммы: если мы хотим хотя бы 11 Gb памяти и соответствующую производительность, надо выложить 1000 $+ за топовую модель. Видеокарты разлетаются, а цены растут. Как быть? Надо вспомнить, что прямо сейчас мы живем в уникальное время: пузырь криптовалют лопается по швам, и на рынок выходит большое количество видеокарт от майнеров. Я являюсь счастливым обладателем подержанной 1080 Ti за 30 тыс. рублей, и почти за год она ни разу меня не подвела, работая 24/7. Возьмите компьютер с Windows (почему-то большинство программ тестирования видеокарт именно под эту систему), запаситесь программами, проверьте вашу рабочую лошадку вдоль и поперек и смело берите графический ускоритель в 1.5-2 раза дешевле.

    Продолжая идею вычислителей, перейдем к процессору. Тут хотелось бы сказать, по аналогии с предыдущим, что абсолютный лидер — Intel (тем более, я там когда-то работал). Это верно… только если мы говорим про однопоточные приложения или неограниченный бюджет. Однако, у нас ни тот, ни другой случай, а хочется параллелить и денежку оставить, тут к нам приходит AMD Ryzen в целом и их линейка Threadripper в частности. За 700-1000$ можно купить 24-32 ядерный кристалл, на котором Catboost будет летать, аналогичные параметры Intel стоят в два раза дороже. Конечно, есть большое “НО”: своей производительности Threadripper обязан специфической конструкции, и с этим придется считаться (об этом ниже)…



    Немного лирики от сборщика: «Думаю, после недавнего фиаско Intel с 10980XE вопрос о том, какой процессор выбрать для многопоточных вычислений, имеет довольно понятный ответ. Но… всё может поменяться».

    И тут мы переходим к памяти. Делать сервер меньше чем с 32 гигабайтами оперативной памяти странно (тогда уже проще считать на фитнес-браслетах) и лучше брать память с высокой частотой (3200+, процессоры архитектур ZEN и ZEN 2 ее любят). Конечно, оперативная память — не самый сложный компонент схемы, а значит и производителей много, но лучше брать проверенных (я взял Corsair). Тут надо определиться с тем, сколько брать, и с количеством каналов. Самый простой ответ: побольше, чтобы на каждой плашке да по 16 гигабайт сидело. Кажется, что можно и 256 гигов оперативы заполучить в свой ПК. Но не всё так просто. Если вы берете двухканальную память, то к одному объему информации в памяти будет лезть вдвое больше активных ядер, а это значит, что снижается скорость доступа – тут надо вспомнить про необходимость быстрого доступа к памяти, как критичное требование. Значит берем четырехканальную. На каждой плашке у нас будет по 8 гигов памяти.

    Еще один инсайт от сборщика, а точнее, обещанные подробности о Threadripper: «В целом, если в вас сидит мантра «все каналы памяти должны быть заполнены» (а у Threadripper их 4) можете скроллить вниз. Остальным напоминаю, что у этого процессора старой архитектуры интересная структура из 4 NUMA nodes, узлов с неоднородным доступом к памяти. Работать они могут и с одним каналом, но тогда у вас будут копиться задержки, вызванные этой архитектурой. В более новых Threadripper, построенных уже на ZEN 2, эта особенность ликвидирована, но пожелание компьютеру многих каналов памяти остается».

    Итак, мы вывели ограничение материнской платы на количество слотов под память, хотя бы 4 (чтобы получить 32 гигабайта), а желательно — 8. Еще стоит сразу подумать, собираетесь ли вы брать вторую видеокарту, и, конечно, посмотреть на производителя. Тут мы выясняем, что предложений на рынке для PC (не серверных), подходящих под наши ограничения, не так много (по крайней мере, было немного, когда эта машина собиралась). Конечно, на ум приходит ASUS, и при неограниченном бюджете взял бы его, но пытаясь влезть в рамки, берем ASRock, младшего брата большой компании, доступного даже после падения рубля.

    Конечно, имея такой быстрый вычислитель, странно упираться в скорость жесткого диска, значит нам нужен SSD. Они, конечно, дороже, однако выясняется, что мало какие задачи требуют терабайтов данных в постоянном доступе. Значит, можно взять 512 Гб, а датасеты, которые пока не хочется удалять, держать вместе с коллекцией домашних фильмов — на отдельном классическом терабайтном диске. Или больше. Сколько нужно и что позволит бюджет.

    Собрав основные компоненты, прикидываем, что может дать хозяйству мощность. Тут подумайте о развитии и, например, о второй видеокарте (лучше взять с запасом). И, конечно, надо решить, кто охладит эту мощь. Threadripper-ы греются, как цветочные цены на 8 марта, так что нужна мощная система охлаждения. Формально подойдет сильная воздушная и водяная, но я советую брать водяную: по цене сравнима с сильной воздушной, но не будет постоянного ощущения, что живете на взлетно-посадочной полосе. Плюс, за последнее время количество производителей, предлагающих вменяемые охладители специально для Threadripper, выросло — есть из чего выбрать.



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

    Существуют следующие возможности покупки всего счастья:

    1. Заказать собрать кому-то внешнему
      • плюсы: могут еще раз проверить комплектацию, нет проблем с совместимостью
      • минус: ~10-15% стоимости в зависимости от сложности работы и стоимости комплектующих
    2. Выписать всё на листочек, прийти на Савеловский/Горбушку (если живете в Москве) и собрать там.
      • плюсы: точно ничто не побьется при доставке, все сделают при вас, меньше денег за сборку
      • минусы: могут быть не самые дешевые компоненты (даже в рамках одного рынка цена прыгает до 50%, плюс за эту цену могу попробовать поставить Б/У)
    3. Заказать все на Яндекс-маркете
      • плюсы: можно дешевый вариант
      • минусы: сложно проверить доставку
    4. Заказать всё за границей (алиэкспресс/ebay)
      • плюсы: самый дешевый вариант, сюрприз по приезду
      • минус: сюрприз по приезду (серьезно, не надо так – в Спортлото чаще выигрывают)

    Я сам выбрал первый вариант (в личке могу порекомендовать конкретных людей).

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

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

    Когда все работает, попросите у своего провайдера статический IP — это бесплатно или недорого и обеспечит доступ к вашим юпитер-ноутбукам почти отовсюду.

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



    Финальный подсчет (цены начала 2019 года):

    Наименование
    Цена в рублях
    Ссылка
    Корпус COUGAR Panzer MAX Black
    9200
    https://market.yandex.ru/product--kompiuternyi-korpus-cougar-panzer-max-black/1712295303/offers?priceto=10000&local-offers-first=1&deliveryincluded=1&how=aprice
    Материнская плата ASRock X399 Taichi
    27200
    https://market.yandex.ru/product--materinskaia-plata-asrock-x399-taichi/1730976015/offers?local-offers-first=1&how=aprice&deliveryincluded=1
    Процессор AMD Ryzen Threadripper 1920X (sTR4, L3 32768Kb)
    31150
    https://market.yandex.ru/product--protsessor-amd-ryzen-threadripper-1920x-str4-l3-32768kb/1732027853/offers?onstock=1&local-offers-first=1&how=aprice&deliveryincluded=1
    Оперативная память 32Gb (4x8Gb) 3200MHz DDR4 DIMM Corsair
    23100
    https://market.yandex.ru/product--operativnaia-pamiat-corsair-cmk32gx4m4d3200c16/1729035586/offers?local-offers-first=1&deliveryincluded=1&how=aprice
    Потом еще купил столько же
    Блок питания Chieftec BDF-1000C 1000W
    7330
    https://market.yandex.ru/product--blok-pitaniia-chieftec-bdf-1000c-1000w/1731273730/offers?priceto=9000&local-offers-first=1&deliveryincluded=1&how=aprice
    SSD Samsung M.2 970 EVO 500 Gb (R3500/W2500MB/s)
    9960
    https://market.yandex.ru/product--tverdotelnyi-nakopitel-samsung-mz-v7e500bw/41265856/offers?local-offers-first=1&how=aprice&deliveryincluded=1
    Видеокарта GeForce GTX 1080Ti поюзанная
    31000
    СЖО Deepcool Castle 280 RGB
    9500
    https://market.yandex.ru/product--kuler-dlia-protsessora-deepcool-castle-280-rgb/163585623/offers?local-offers-first=1&how=aprice&deliveryincluded=1
    Паста TG Kryonaut
    1600
    https://key.ru/shop/devices/termopasta/termopasta_thermal_grizzly_kryonaut1/
    Вентиляторы Noctua и Gelid 140mm для водоблока
    2000
    Покупка, Сборка, настройка, установка ОС
    13000
    Советую человека, который собирал, но контакты по запросу
    Итого:
    165040
    Итого за части
    152040


    Автор: Николай Князев, руководитель группы машинного обучения компании «Инфосистемы Джет»
    Инфосистемы Джет
    198,92
    Системный интегратор
    Поделиться публикацией

    Комментарии 31

      +7
      Свой собственный сервер для обучения — как машина в 20 веке

      … оба не обязательны?

        0
        не роскошь, а средство вычисления
        +4
        Вот бы советовать 2 летний проц за оверпрайс.
        Если важен бюджет, проще и дешевле собрать 2-головый LGA2011(-3).

        Еще и 13к за сборку, напонимаю, это статья на Хабр.
          +1
          Да там не только к процессору претензии, а ко всей сборке в принципе. Хотя, возможно, собиралось с заделом на возможный апгрейд.
            +3
            Тут треть хабра за 13к сами с удовольствием соберут комплектующие.
              0
              Да больше, наверное. При наличии комплектующих путем научного тыка собирается за час-полтора.
                +2
                включая тест видеокарты и поиск мест где купить комплектующие с их тестом?
              +2
              я посчитал, что поиск нужной видеокарты + ее тест, а так-же мест для каждого комплектующего и их тест, еще и тест всего вместе и рулежка если вдруг-чего, имеет скорее спортивный интерес, на который не было тогда времени.
              +2
              9200 за корпус? При чем тут вычисления и обучение?
              13000 за сборку? Серьезно?

              Есть небольшое ощущение что вы не на тот сайт написали статью
                +1
                см. комменты выше и текст.
                Сборка — включая тесты видеокарты и всего вместе
                Корпус — каждый сам, до достаточно больших, чтобы много видеокарт поместилось еще поискать надо, и цели сэкономить несколько тысяч при покупке в 150 выглядят странно.
                –1
                компьютер для ML
                Остался не раскрытым вопрос что такое «ML»
                  +1

                  machine learning

                  0

                  а может дешевле все в облаке считать?

                    +1
                    Зависит от количества расчетов + желание иметь одну настроенную среду еще и для хранения датасетов. Ну и облака недешевые так-что на длинной перспектив кмк не дешевле (тут вопрос еще в апдейте комплектующих)
                      +1
                      неа. 24х7 аренда самой днищенской конфигурации GPU-сервера с одной теслой — 3 или 4 тысячи долларов в месяц.
                      а теперь подумайте, сколько вы будете ждать, пока туда многогигабайтные трейнинг-сеты будут заливаться (в собранный самостоятельно можно винт воткнуть в доке). и какова будет TCO.
                        0
                        А зачем машину 24 * 7 арендовать? Можно на пару часов взять, выполнить расчеты и погасить. Многогигабайтные данные можно из бакета в том же регионе загрузить за десятки секунд, у хорошей машины в облаке будет и bandwidth хороший.
                          0

                          Часто такие расчеты идут на дни/недели, особенно когда данные терабайтные.

                            0
                            Когда данные терабайтные, их имеет смысл обрабатывать не одной машиной с 500 ГБ жестким диском как у ОП, а каким-нибудь кластером. Опять же эти терабайтные данные уже скорее всего будут где-то в облаке лежать (ну а где им еще быть, не на флешке же?). Ну данные данным рознь, конечно, может для каких-то целей действительно имеет смысл дома иметь мощный комп, но я с трудом себе такое представляю. Даже в игрушки уже в облаке играть можно на Гугл Стадии.
                              0

                              а зачем им лежать в облаке, если они могут лежать на локальном накопителе? и почему их обязательно обрабатывать в кластере, если GPU-accelerated реализации хреново кластеризуются, а сотен или даже десятков гигабайт ОЗУ в контексте ML для протаскивания таких задач хватает.


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

                      +2
                      Современные Ryzen (конкретно 3900x) рвут по всем тестам старые Threadripper-ы (1920x). Материнки b450 стоят значительно дешевле.
                      А продать в будущем десктопный комплект будет сильно проще.
                      Да, 2- а не 4-канальная память.
                      Если суммарное количество видеокарт 1-2-3, то других «за» в сторону Threadripper-а нет.

                      SSD в вашей сборке ИМХО дороговат (маркетинг). Самый дешевый того же объема будет не сильно уступать.
                        0

                        Это если SSD с SATA моделями сравнивать?

                        0
                        А если собрать кластер десктопов? начать с 3 шт и расширять по необходимости?
                        Или нужен 1 максимально мощный ПК?
                          +1
                          Время на передачу данных убьет эффективность. Нет возможности использовать multithreading только multiprocessing, гораздо более ограниченный класс задач получится
                          +2
                          Собирал в прошлом году ПК с заделом под это. Получилось 75к.
                          — Ryzen 5 2600x
                          — 48 Gb DDR4
                          — 512 Gb NVMe WD Black
                          — ASRock на B450
                          Добавил RTX2080Ti от Inno3D за 89к.

                          Так что итого 165 без тестов и сборки.
                            0

                            SSD маловат, как по мне… Если кешировать прерассчитанные датасеты, или что-то типа аугментации делать. Хотя, все от задач зависит.

                              +1
                              1. Брать видеокарту после майнинга — вселенская глупость с такого же масштаба лотереей.
                              2. Совет брать водянку — второй довольно спорный аргумент (и это я очень мягко выражаюсь). За цену посредственной водянки можно взять такую воздушку, которой не будет слышно. Никогда. Нигде. Ни при каком разгоне.
                                0
                                1) абсолютно не согласен с этим утверждением. Если следовать логике (а я надеюсь ваша логика в том что карты из майнинга подвергаются перегреву) то тогда оно относиться ко всем БУ картам не зависимо от способа их использования.
                                2) за цену посредственной водянки никакая воздушка не сможет обеспечить тишину и стабильную работу без перегрева в случаях двух видеокарт. так что в этой части совет водяки — оправдан.

                                Но если вдруг — вот вам виртуальные 30 тысяч рублей на охлаждение — удивите меня.
                                  0
                                  1. Чтобы судить об обоснованности моего утверждения, равно как и о видеокартах после майнинга, стоит опираться на истории тех, кто их ремонтирует. Подсказка: все БУ-карты не работают 24/7, кроме майнерских. Майнеры эксплуатируют карты на пределе, что не очень хорошо сказывается на их здоровье.
                                  2. Не понимаю, зачем вы тут упомянули видеокарту рядом с водянкой. У автора СВО только на процессоре. Но, всё-таки: если вы собираетесь защищать СВО перед термотрубками в ценовом плане, то вас ждёт сразу же неудача: в тепловых трубках НЕТ турбины; НЕТ соединительных трубок, вернее, сама трубка есть соединитель и холостая, нерабочая часть очень короткая; всё остальное очень одинаково и тут СВО выиграть может лишь за счёт количества вентиляторов. Сравнивать же по эффективности СВО с системой, основанной на фазовом переходе (теплотрубки) — проигрышная задача со старта. Для простой, очень приблизительной, грубой оценки: материнка на разогнанном скальпированном Хасвелле, да под праймом-95, плюс обычный Noctua NH-D14, на котором штатные вентиляторы заменил на два 15 см вентилятора с управлением скоростью: пришлось снять второй вентилятор, так как мать его просто не запускала. Единственный оставшийся выше 50% скорости просто никогда не разгонялся. Его и сейчас, по прошествии 5 лет, не слышно. Вообще. Никогда, ни при каких условиях, то есть приходится светить фонариком сбоку на лопасти, чтобы понять, вращается ли он вообще. Или запускать утилиту, которая показывает скорость вращения вентилятора. Глубокой ночью, когда тихо, очень тихо, я слышу разницу, когда выключаю компьютер; под утро, когда только-только первые машины выходят на дороги в городе, этой разницы уже не уловить. Я в начале своего пути к бесшумному и мощному ПК бредил о безвентиляторном Phanteks, SilverStone Heligon или о какой-то модели от DeepCool (у них тоже был какой-то безвентиляторный монстр, не помню уже), но Ноктуа перекрыл одним махом все мои хотелки. Все эти бандуры не дотягивают и до 200 долларов, если я не ошибаюсь. Ностуа тот вообще меньше сотни, кажется, сейчас стоит. Accelero Plus закончил мою борьбу с шумом видеокарты.

                                  Не знаю даже, где потратить виртуальные 30 тысяч, честно. Топовые воздушки уже заканчиваются там, где водянка только начинается.
                                0
                                А на случай отключения электроэнергии у Вас что-нибудь предусмотрено?
                                  0
                                  cpubenchmark дает 1920x 20085 попугаев. e5-2697v2 — 17170. то есть два e5 за 23 тысячи рублей просто порвут 1920x. фирменная материнка на 2xe5 + 16xddr3 покупается в нераспакованной коробке за 8 тысяч рублей. DDR3 сейчас покупается по 100-110руб/ГБ.
                                  ps. обожаю старые зионы!
                                    0
                                    А не подскажите где Вы нашли материнку за 8к? Потому как у меня ищутся только либо махровые китайцы, либо б/у ebay

                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                  Самое читаемое