компьютер для машинного обучения и нейросетей
Как собрать компьютер для ML
Свой собственный сервер для обучения — как машина в 20 веке: если вы всерьез занимаетесь Data Science, рано или поздно вы придете к тому, что нужна единая настроенная среда, уверенность в ресурсах, независимых от правил работодателя и админов. Кто-то скажет, что всё можно делать в облаках, однако постоянный доступ, долгие эксперименты 24/7, да еще и с хранением данных выйдут в копеечку.
Итак, если вы решились — нужно строить свой город-сад.
Давайте посмотрим, что нам нужно:
Немного лирики от сборщика: «Думаю, после недавнего фиаско 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, выросло — есть из чего выбрать.
В целом все собрано, осталось упаковать во вместительный корпус — тут советов не будет, это шанс для самовыражения, — можно выбрать тот, который понравится лично вам.
Существуют следующие возможности покупки всего счастья:
Когда все приехало и собрано, осталось накатить систему.
Это история для отдельного поста, здесь расскажу вкратце: поскольку я хотел его еще использовать как десктоп и имел предыдущий опыт работы в 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 |
Автор: Николай Князев, руководитель группы машинного обучения компании «Инфосистемы Джет»
💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения
1. Разница между ЦП и ГП
Центральный процессор (ЦП) не оптимизирован для одновременного выполнения большого количества простых операций. Для параллельных вычислений лучше подходит графический процессор (ГП):
2. Устройство ГП
2.1. CUDA
Графический процессор состоит из набора независимых мультипроцессоров, которые включают в себя :
На одном ядре CUDA (архитектура параллельных вычислений от NVIDIA) выполняется одна нить, иначе – поток. Каждому потоку соответствует один элемент вычисляемых данных. Потоки образуют блоки, которые общаются между собой через:
Мультипроцессор на каждом такте выполняет одну и ту же инструкцию над варпом (warp) – группой из 32 потоков. Потоки одного варпа принадлежат одному блоку и могут взаимодействовать только между собой. Каждому потоку и блоку присваивается идентификатор – трехмерный целочисленный вектор:
Рис. 5. Сетка блоков в CUDA
Алгоритм работы технологии CUDA выглядит следующим образом.
2.2. Иерархия памяти
Локальная память (local memory):
Разделяемая память (shared memory):
Глобальная память (global memory):
Константная память (constant memory):
Текстурная память (texture memory):
3. Как выбрать ГП
Последовательность шагов при выборе ГП.
3.1. Когда достаточно менее 11 ГБ памяти
Рис. 10. Видеокарта NVIDIA RTX 3080
3.2. Когда нужно больше 11 ГБ памяти
3.3. Тензорные ядра
Рис. 11. Архитектура тензорных ядер в GeForce RTX 2080 Super и GeForce RTX 3080
3.4. Пропускная способность памяти
Тензорные ядра быстрые и обычно простаивают до 70% времени, ожидая данные из глобальной памяти. Поэтому выбирайте ГП с максимальной пропускной способностью памяти. Еще нужна большая разделяемая память и кэш L1, чтобы сократить число обращений к внешней памяти и держать данные ближе к АЛУ.
Сколько нужно памяти:
3.5. Система охлаждения
В конструкции системы охлаждения Reference RTX 30 (NVIDIA) первый вентилятор расположен на верхней стороне видеокарты. Он выдувает воздух в пространство, где расположена оперативная память и процессор. Второй вентилятор выдувает воздух сразу из корпуса (Рис. 12).
Рис. 12. Cистема охлаждения Reference RTX 30
Еще нет тестов, подтверждающих эффективность решения и необходимость замены штатной системы охлаждения. Установка нескольких ГП в одном корпусе может негативно сказаться на циркуляции потоков воздуха внутри корпуса и охлаждении видеокарт.
3.6. Электропитание
Картам может не хватить мощности блока питания. Четыре карты RTX 3090 потребляют на пике 1400 Вт. Продаются блоки питания на 1600 Вт, но остальным комплектующим 200 Вт может быть недостаточно.
Рис. 13. Блок питания Super Flower Leadex Titanium SF-1600F14HT на 1600 Вт
3.7. Рекомендации для кластеров
Рис. 14. Сервер SuperMicro Superserver 4028gr-tvrt, до 8 Tesla v100 sxm2
Для кластера из 256+ ГП – NVIDIA DGX SuperPOD.
Рис. 15. Суперкомпьютер NVIDIA DGX SuperPOD
При 1024+ ГП – Google TPU Pod и NVIDIA DGX SuperPod.
Рис. 16. Суперкомпьютер Google TPU Pod на тензорных процессорах
3.8. Не покупайте эти карты
Не покупайте более одной видеокарты RTX Founders Editions или RTX Titans, если нет PCIe-удлинителей для решения проблем с охлаждением.
Рис. 17. Видеокарта NVIDIA RTX Titan
Tesla V100 или A100 рентабельны только в кластерах. Карты серии GTX 16 имеют низкую производительность, так как из них убрали тензорные ядра. Аналоги GTX 16: б/у RTX 2070, RTX 2060 или RTX 2060 Super.
Рис. 18. Видеокарта NVIDIA Tesla V100
3.9. Нужен ли PCI 4.0?
3.10. Необходимы только 8x/16x PCIe-слоты?
Использовать исключительно 8x и 16x PCIe-слоты необязательно. Допускается работа двух ГП на слотах 4х. При установке четырех ГП предпочтение отдавайте слотам 8x на каждый ГП, так как производительность слота 4x ниже на 5-10%.
Рис. 19. Слоты PCIe x1, x4, x16
3.11. Можно ли использовать разные карты вместе?
Да, можно! Но будет сложно эффективно распараллелить графические процессоры разных типов, т. к. быстрый ГП будет ждать, пока медленный ГП дойдет до точки синхронизации.
3.12. Что такое NVLink и полезно ли это?
NVLink – высокоскоростное соединение между ГП. В небольших кластерах (
Рис. 20. Производительность NVLink M40, P100, V100 и A100
3.13. Что делать, если не хватает денег на топовые ГП?
Купить подержанные ГП, либо воспользоваться облачными сервисами. Бюджетные варианты (в порядке убывания цены и производительности):
3.14. Итог
Напоследок несколько сравнительных гистограмм характеристик различных GPU.
Рис. 21. Производительность видеокарт относительно RTX 2080 Ti.
Рис. 22. Производительность на доллар (US) ГП относительно RTX 3080.
Рис. 23. Производительность на доллар (US) четырех ГП относительно четырех RTX 3080.
Рис. 24. Производительность на доллар (US) восьми ГП относительно восьми RTX 3080.
В этом руководстве мы рассмотрели устройство графического процессора и определили параметры, которые влияют на производительность в задачах глубокого обучения. Если запускаете расчет нейросеток время от времени, то апгрейд можно проводить через одно поколение графических процессоров.
Компьютер для машинного обучения
В сфере Data Science мощное железо с серверным уровнем производительности – необходимый инструмент. Да и в перспективе собственные мощности обходятся куда дешевле, особенно учитывая необходимость постоянного хранения датасетов.
Выбор комплектующих
Большая часть фреймворков адаптируется под карты NVIDIA с их замечательными ядрами CUDA, которые пока никто заменить не смог. Что касается процессора, то выбор тут очевиден – Intel с максимальным количеством ядер и возможностью разгона. Так можно получить хорошую производительность в однопоточных и многопоточных вычислениях. К материнской плате также есть особые требования – это, желательно, 4 канала памяти (чтобы раскрыть потенциал процессора) и хорошее охлаждение на главных узлах питания.
Излишняя мощность не будет вам обузой. Вы всегда сможете предоставлять услуги для облачных вычислений другим специалистам, которые работают с машинным обучением. Все свободное время и даже в ваш отпуск компьютер будет приносить деньги. Хорошая система водяного охлаждения сделает работу бесшумной и позволит не прерывать процесс обучения 24/7.
Видеокарта
Производительность карты при машинном обучении напрямую зависит от скорости и объема памяти, а также от количества ядер CUDA. Такие платформы, как PyTorch, MXNet, TensorFlow, а также основанные на их принципах гибриды используют библиотеки для GPU ускорения, например, cuDNN, DALI и NCCL. Это помогает ускорить обучение с использованием одного или нескольких GPU.
В таблице – характеристики всех топовых решений от NVIDIA.
Ядра CUDA | Ядра NVIDIA Tensor | Ядра NVIDIA RT | Количество памяти | Ширина шины памяти | Пропускная способность памяти | Производительность FP32 | |
---|---|---|---|---|---|---|---|
Quadro GV100 | 5120 | 640 | нет | 32GB HBM2 | 4096 бит | 870,4 ГБ/с | 14.8 TFLOPS |
Quadro RTX 8000 | 4608 | 576 | 72 | 48GB GDDR6 с ECC | 384 бит | 624 ГБ/с | 16.3 TFLOPS |
Quadro RTX 6000 | 4608 | 576 | 72 | 24GB GDDR6 | 384 бит | 624 ГБ/с | 16.3 TFLOPS |
Quadro RTX 5000 | 3072 | 384 | 48 | 16GB GDDR6 | 256 бит | 448 ГБ/с | 11.2 TFLOPS |
Quadro RTX 4000 | 2304 | 288 | 36 | 8GB GDDR6 | 256 бит | 416 ГБ/с | 7.1 TFLOPS |
NVIDIA TITAN RTX | 4608 | 576 | 72 | 24GB GDDR6 | 384 бит | 672 ГБ/с | 16.3 TFLOPS |
RTX 2080 Ti | 4352 | 544 | 68 | 11GB GDDR6 | 352 бит | 616 ГБ/с | 13.5 TFLOPS |
RTX 2080 SUPER | 3072 | 384 | 48 | 8GB GDDR6 | 256 бит | 496 ГБ/с | 11.2 TFLOPS |
Quadro GV100
Это самый мощный графический ускоритель на данный момент, она разработана именно для обслуживания и обучения нейронных сетей. Главным преимуществом является память, ее объем и скорость доступа. Из недостатков можно выделить цену и отсутствие RT ядер.
Quadro RTX 8000
Топовое решение для инженеров, огромное количество памяти и прекрасная производительность. Недостаток – цена, не совсем оправданная для Data Science, так как вы переплатите за целый мешок технологий, созданных специально для работы с трехмерной графикой и инженерными программами.
Quadro RTX 6000, 5000, 4000
Три инженерных видеокарты с относительно высоким уровнем производительности. Цена все так же высокая. По сравнению с игровыми решениями, конечно.
TITAN RTX
Плавно подходим к оптимальным решениям для машинного обучения не инженерной направленности. По производительности эта карта сравнима с Quadro RTX 6000, но стоит в несколько раз дешевле. Причем использование двух и более TITAN RTX даст вам больше производительности, чем одна Quadro RTX 6000. Недостаток – отсутствие полноценной поддержки профессиональных драйверов и ПО от NVIDIA для инженерии и работы в трехмерной среде.
RTX 2080 Ti и 2080 SUPER
Топовые игровые видеокарты, которые оборудованы теми же аппаратными решениями, что и их профессиональные «коллеги», но драйвера больше заточены под игры. Хотя их совместимость с фреймворками не ставится под сомнение. Вывод: две RTX 2080 Ti мощнее, чем одна TITAN RTX, хотя стоимость такого решения также будет выше примерно на 1000$.
Процессор
Для машинного обучения необходимо много оперативной памяти. Чтобы ускорить доступ к ней, необходим процессор, который поддерживает четыре канала, а не 2, как в обычных пользовательских решениях. На данный момент среди не серверных решений на рынке есть прекрасный вариант – Intel Core i9. Много ядер, многопоточность, поддержка 4 каналов памяти, хорошая частота и возможность разгона.
Выбор конкретной модели – вопрос бюджета, чем больше ядер и частоты – тем лучше. Также стоит отметить, что желательно иметь возможность разгона для кратковременного увеличения мощности.
Оперативная память
Лучше всего использовать высокочастотную память DDR4, она не такая дорогая и даст вам хороший прирост мощности. 4 канала на процессоре – значит, 8 слотов на материнской плате. Минимум, который стоит ставить на компьютер для машинного обучения, – это 32 Gb, но чем больше – тем лучше. Лучше занять все слоты, чтобы обеспечить каждому ядру процессора максимально быстрый доступ к памяти. Максимально возможный объем памяти для i9 – 256 Gb.
Быстрый доступ к датасетам нужно обеспечить, чтобы работа накопителя не замедляла остальные элементы компьютера. Новые SSD m.2 дают возможность доступа к данным на скорости до 3,5 Gb в секунду. Не обязательно хранить на них всю информацию, можно поставить один SSD и расширить объем памяти дополнительным HDD. Причем необязательно ставить HDD в систему, можно подключить его к локальной сети, снабдив статичным IP адресом, и вы сможете получить к нему доступ с любого устройства, подключенного к интернету.
Что делать, если вы хотите изучать ИИ, но не шарите в математике? Часть третья. Собираем и настраиваем систему
Авторизуйтесь
Что делать, если вы хотите изучать ИИ, но не шарите в математике? Часть третья. Собираем и настраиваем систему
Это третья статья из цикла, посвящённого изучению ИИ и всего, что с ним связано. В первой части мы обсуждали теорию, во второй — готовились к решению практических заданий. Сегодня же мы займёмся сборкой идеального компьютера для машинного обучения и настройкой системы.
Итак, займёмся подбором комплектующих. Я предложу три варианта: бюджетный, средний и навороченный.
Но сперва — экспресс-вариант
Если вы не хотите собирать новый компьютер, можно просто обновить старый! Купите видеокарту Titan X или GTX 1080 (а недавно Nvidia анонсировала и более мощную GTX 1080 Ti) и установите VMware Workstation или любую другую виртуальную машину с поддержкой видеоускорителей. В качестве альтернативы можно поставить основной системой Linux, а Windows установить на виртуальную машину — таким образом вы получите максимальную производительность для машинного обучения.
Потом установите необходимые фреймворки, о которых мы поговорим во втором разделе этой статьи, и вы получите готовую систему, причём весьма дешёвую.
Подбор комплектующих
Я буду помечать дорогие и бюджетные варианты следующим образом:
Видеокарта — всему голова
Центральный процессор — больше не самая важная часть компьютера. Для навороченных игровых систем нужны мощные процессоры, но не для машинного обучения — там роль Intel исполняет Nvidia.
Хотя карты AMD и зарекомендовали себя в майнинге криптовалюты, до ИИ они ещё не доросли. Скоро это изменится, но пока Nvidia на коне. Но не стоит сбрасывать Intel со счетов. Она приобрела компанию Nervana Systems и собирается начать выпускать специализированные чипы для машинного обучения уже в этом году.
Начнём с ДнП. Безоговорчный лидер — это Titan X. Ему просто нет равных.
В ней установлено 3584 ядер CUDA на частоте 1531 МГц и 12 ГБ видеопамяти GDDR5X с пропускной способностью 10 Гб/с.
Для машинного обучения важно количество ядер и объём памяти. По сути, алгоритмы машинного обучения — это всего лишь куча линейной алгебры. Представьте огромную таблицу Excel. Простой 4- или 8-ядерный процессор Intel просто не справится с таким объёмом данных.
Перемещение данных из памяти и в неё очень сильно ограничивает вычислительный процесс, поэтому чем больше памяти есть на карте, тем лучше. Поэтому Titan X и является лучшей.
Жаль, но на официальном сайте можно купить лишь 2 карты. Но для нас деньги — не проблема, поэтому ещё две мы возьмём где-нибудь ещё. Да, это 4-way SLI! Обойдётся он вам примерно в 360 тысяч (на момент написания статьи — прим. перев.), но это львиная доля затрат.
Любые бенчмарки предупредят вас, что SLI из более чем 2 карт не даст значительного прироста, но нам же не в игрушки играть (ладно, будем честны, не только в игрушки играть)! Для работы с ИИ нужно использовать максимально возможное количество видеокарт, поэтому четыре — это вовсе не предел. Заметьте, что вам не нужен мостик для SLI, если вы не планируете использовать систему для игр. Максимум, что будет связано с графикой — это построение графиков в matplotlib.
Теперь поговорим о ЗПБ. Вам подойдёт карта GeForce GTX 1080 Founders Edition. В ней всего лишь 2560 ядер CUDA, гораздо меньше, чем в Titan X, но она и стоит в два раза дешевле, 46 тысяч рублей. Памяти в ней тоже меньше, 8 ГБ вместо 12. Ещё один неплохой ДиС-вариант — это GeForce GTX 1070. Она может похвастаться 1920 ядрами CUDA и приемлемой ценой — 32 тысячи рублей. Таким образом, SLI из 4 карт обойдётся вам без малого в 130 тысяч рублей.
Конечно, можно обойтись двумя или тремя картами. По-хорошему, вам хватит и одной.
Итак, давайте рассмотрим оптимальные варианты:
Оптимальный вариант — три GTX 1080. В два раза дешевле, чем «титаны» и всего на 3072 ядра меньше. Для своей системы я выбрал именно его.
Наконец, ДиС-вариант: GTX 1060. 6 ГБ видеопамяти и 1280 ядер CUDA за 17 тысяч рублей — это лучший бюджетный вариант.
Хранилище данных
Вам понадобится SSD, особенно если вы будете работать со свёрточными нейронными сетями и обрабатывать много изображений. Samsung 850 EVO ёмкостью 1 ТБ — это ДнП-вариант. Кроме того, за последний год цены на SSD значительно снизились, поэтому такая покупка не сильно ударит по кошельку. На момент написания статьи эта модель стоит порядка 20 тысяч рублей.
ЗПБ-вариант — это SSD той же модели, но на 250 ГБ. Стоит он примерно 6 тысяч.
Вам также понадобится HDD для хранения наборов данных. Они могут быть очень большими, поэтому стоит взять диск ёмкостью не меньше 4 ТБ, производитель не так уж и важен. Стоить он будет порядка 10 тысяч.
В качестве ДиС-альтернативы можно взять SSD от SanDisk на 240 ГБ за 4 тысячи рублей и HDD на 1 ТБ, но я считаю, что лишней памяти не бывает.
Оперативная память
Я советую брать не менее 16 ГБ оперативной памяти типа DDR4. Многие говорят, что оперативной памяти должно быть в 2 раза больше, чем видеопамяти, но 16 ГБ вам должно хватить. Я бы посоветовал модель Corsair Vengeance DDR4–3000, набор из двух планок по 8 ГБ будет стоить примерно 10 тысяч рублей.
Материнская плата
Поскольку мы хотим поместить в наш корпус 4 видеокарты, наш выбор очень невелик. Лучшим вариантом будет материнская плата MSI Extreme Gaming X99A SLI Plus. Также подойдёт ASUS X99 Deluxe II.
Если же вы используете меньше 4 карт, вариантов становится гораздо больше. В материнских платах главное — стабильность. В этом я убедился, когда собирал системы для майнинга криптовалюты. Gigabyte разработала отличную линейку надёжных материнских плат. Модель X99 Ultra Gaming оптимальна и стоит порядка 20 тысяч.
Корпус
Cooler Master Cosmos II — это ультимативный корпус форм-фактора EATX. Его стильный внешний вид отлично дополнит вашу систему.
Тем, кому нужен корпус поменьше, подойдёт Cooler Master Maker 5T.
Я никогда не видел смысла в покупке дешёвого корпуса. Тем не менее, в продаже есть множество достойных бюджетных вариантов, и перечислять их здесь нет смысла.
Процессор
Вашей машине для машинного обучения не нужен мощный процессор. Большинство приложений многопоточны лишь на графическом процессоре, поэтому разоряться на процессор не стоит.
Поэтому вам стоит купить процессор с наибольшей тактовой частотой, т.е. i7-6700K с частотой 4 ГГц. Да, может показаться, что это перебор, но в последнее время цена на него только падает, так что почему бы и нет?
ЗПБ-альтернативы здесь нет. i5 с частотой 3,5 ГГц стоит немногим дешевле, так какая разница?
ДиС-вариант здесь — двухядерный i3-6100 c частотой 3.7 ГГц, стоит он порядка 7 тысяч.
Блок питания
Блок питания EVGA Modular 1600 Supernova G2 — это лучший вариант для сборки с 4 видеокартами. Он обойдётся вам где-то в 18 тысяч.
Titan X потребляет порядка 250 ватт — вот уже тысяча, и на всё остальное остаётся не так уж и много, а БП лучше брать с запасом.
Если вы используете меньше видеокарт, вам подойдёт модель на 1300 Вт. ДиС-альтернатива — модель на 750 Вт.
Настройка системы
Теперь, когда мы закончили с железом, займёмся настройкой софта.
У вас есть три варианта:
Docker
Если вы хотите пойти по этому пути, то вам стоит начать с официального проекта Nvidia-Docker. Однако вам всё равно придётся ставить кучу фреймворков и библиотек поверх этого образа.
Конечно, вы можете поставить и контейнер со всем необходимым для машинного обучения, например, такой. К сожалению, в нём есть некоторые пока не решённые проблемы, да и на Dockerhub он не поместится, поэтому времени на ручную настройку вам придётся потратить немало.
Виртуальная машина
Как я и сказал в начале статьи, вы можете просто обновить железо вашего игрового компьютера, поставить VMware Workstation Pro, поддерживающую работу с графическими процессорами, и начать работать. Это самый дешёвый вариант, да и весьма удобный в использовании.
Чистая установка
В результате я выбрал именно этот вариант. Да, немного олдскульно, но поскольку я давно работаю сисадмином, то решил сделать всё вручную — таким образом можно максимально контролировать систему.
Сперва обсудим несколько деталей, сваязанных с ПО. Вы поймёте, что большая часть вычислений производится при помощи Python. В дальнейшем это может поменяться, но пока что это основной язык. Популярны также R и Scala, их мы тоже рассмотрим.
Вот список всех основных пакетов, которые мы установим:
Языки
Драйверы и API
Приложения-помощники
Фреймворки / библиотеки
Высокоуровневые библиотеки
Python-библиотеки
Написано огромное количество библиотек для разного рода научной деятельности, мы поставим самые нужные:
Настройка Linux-системы
Я рекомендую поставить последнюю версию Ubuntu LTS (16.04 на момент написания статьи). Запишите её на флешку при помощи программы Rufus и установите в UEFI-режиме.
Первый запуск
Запустив систему, вы увидите чёрный экран. Некоторые из драйверов просто не обновлены. Чтобы это исправить, сделайте следующее.
Когда компьютер загрузится, откройте терминал:
Скачайте последние драйвера и перезагрузите систему:
Обновление системы
Откройте терминал и введите следующее:
Скачайте CUDA 8 с сайта Nvidia. Перейдите в каталог загрузок и установите CUDA:
Добавьте CUDA в список переменных окружения:
Проверьте версию CUDA:
Убедитесь, что всё установилось корректно. Сперва установите образцы CUDA:
Обратите внимание, что +1 означает количество графических процессоров, поэтому число можно увеличить, ускорив тем самым время установки и компиляции.
После этого запустите deviceQuery и убедитесь, что все графические тесты успешно проходятся:
cuDNN
cuDNN — это библиотека для работы с развёртывающими нейронными сетями с поддержкой графических ускорителей. К сожалению, её нельзя просто скачать с репозитория. Вам придётся зарегистрироваться в программе Nvidia и подождать пару дней, чтобы получить доступ. Скачивайте 4 и 5 версии. Я ставил пятую.
Прежде чем ставить все другие фреймворки, дождитесь предоставления вам доступа к этой библиотеке — другие зависят от неё и могут не работать.