С тех пор, как я начал заниматься глубоким обучением, я обнаружил, что мне все чаще требуется доступ к серверу с графическим процессором. Ни какой GPU. Графический процессор, способный понимать CUDA. Как пользователь Macbook PRO только с графическим процессором AMD, это автоматически дисквалифицирует меня. Поэтому, обнаружив, что часто захожу в Google Colab только для того, чтобы получить доступ к графическому процессору NVIDIA, я решил, что пришло время создать свой ПЕРВЫЙ ПК с глубоким обучением.

Почему для глубокого обучения требуется графический процессор NVIDIA?

Это немного длинная история, и я постараюсь ее сократить. Основная причина, по которой вам нужен графический процессор NVIDIA, - это CUDA. CUDA - это запатентованная среда программирования, разработанная NVIDIA, которая обеспечивает массовое распараллеливание вычислительных задач с использованием ядер графического процессора NVIDIA. Подождите, если CUDA - это все о вычислениях с распараллеливанием, зачем ему графический процессор? Почему бы вместо этого просто не использовать процессор?

AMD Ryzen 5900X, который я купил, имеет 12 ядер ЦП, а с гиперпоточностью он может одновременно запускать 24 потока. Может показаться, что это много. Но учтите, что такой графический процессор, как Nvidia RTX 3070, имеет 5888 ядер CUDA. Наличие 5888 ядер CUDA означает, что графический процессор может обрабатывать 5888 параллельных векторизованных исполнительных модулей.

Почему OpenCL не используется для глубокого обучения вместо CUDA?

Возможно, вы слышали об OpenCL, стандарте с открытым исходным кодом для кроссплатформенного параллельного программирования, который имеет относительно широкую поддержку графических процессоров (NVIDIA, AMD, Intel и т. Д.). Я даже не упоминаю Apple, которая раньше поддерживала OpenCL, но с тех пор отказалась от нее в пользу Metal API.

OpenCL, на первый взгляд, был бы идеальной заменой CUDA в качестве стандарта с открытым исходным кодом, чтобы обеспечить глубокое обучение с помощью Tensorflow на графических процессорах AMD, а не только NVIDIA. Но Tensorflow и Pythorch еще не реализовали OpenCL и, вероятно, никогда не будут. Почему спросите вы? Я могу только предполагать, основываясь на моем ограниченном исследовании. Первый - это наследие. Например, Tensorflow полон зависимостей от CUDA и cuDNN. И производительность CUDA лучше, чем с OpenCL.

Я рекомендую вам прочитать одну из старейших тем, открытых в репозитории TensorFlow GitHub (Проблема 22). Тот факт, что эта проблема была открыта в 2015 году и еще не закрыта, надеюсь, убедит вас, что NVIDIA / CUDA - единственный выход на данный момент.

Ядра ЦП отличаются от ядер графического процессора

Совершенно справедливо вы можете спросить, а почему бы просто не иметь графический процессор? Кому нужен CPU с такой огромной мощностью, доступной в GPU !?

На самом деле ядра CUDA - это не то же самое, что ядра процессора. Ядро ЦП способно получать инструкции, выполнять вычисления, заменять значения в памяти, освобождать память и записывать на диск. С другой стороны, ядро ​​CUDA способно обрабатывать вычисления только в одной строке вектора. Гораздо более ограниченный, чем то, на что способно ядро ​​ЦП. Но от этого Deep Learning не теряет своей важности.

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

NVIDIA доминирует в области глубокого обучения, потому что и Tensorflow, и Pythorch реализованы поверх cuDNN. cuDNN, который также был разработан NVIDIA и построен на основе CUDA, представляет собой библиотеку примитивов с ускорением на GPU для глубоких нейронных сетей.

Nvidia доминирует над Deep Learning из-за гегемонии CUDA, проприетарной среды программирования. Потому что Nvidia первой предложила решение, необходимое специалистам по обработке данных для обработки больших объемов данных.

Почему я не верю, что чип Apple M1 - лучшее решение

При запуске M1 Apple сделала большую поддержку TensorFlow. Меня это также заинтриговало, так как в настоящее время Tensorflow изначально построен на основе CUDA / cuDNN.
Оказывается, Apple только что разделила официальный TensorFlow. репозиторий для прямой интеграции с нейронными ядрами M1. Эта вилка доступна здесь.

Обычно я быстро проверяю качество репозитория GitHub, принимая во внимание два фактора: количество коммитов? и количество открытых проблем? На сегодняшний день существует 104 открытых проблемы, и всего лишь три фиксации, и ни одной с 10 декабря 2020 года. Если бы я видел это с любым другим проектом с открытым исходным кодом, для меня этот проект мертв .

Еще слишком много открытых вопросов, прежде чем мы сможем серьезно отнестись к Apple. Они известны тем, что хотят заманить пользователей в ловушку в своем обнесенном стеной саду. Чтобы внезапно проявить интерес к Tensorflow, проект с открытым исходным кодом, инициированный Google, слишком хорош, чтобы быть правдой.

Кроме того, будут ли они идти в ногу с последними версиями Tensorflow? Время покажет, до тех пор я не буду касаться M1 для глубокого обучения.

Достаточно ли RTX-3070 с 8 ГБ DDR4 для машинного обучения?

В идеальном мире я покупаю RTX-3090, чудовище видеокарты для машинного обучения. Он имеет 24 ГБ GDDR6X, 10496 ядер CUDA и тактовую частоту BOOST 1890 МГц.

Учитывая тот факт, что я новичок в машинном обучении, практически невозможно найти на складе какую-либо видеокарту серии RTX 3000, а одна карта серии RTX 3090 стоит почти столько же, сколько целый компьютер. Мой выбор был сделан легко. Я купил единственную карту, которую смог найти. Серия RTX 3070. И я очень рад, что у меня есть такая, учитывая, что большинство людей во всем мире вообще не могут купить какую-либо карту RTX.

Машинное обучение в облаке

Скорее всего, чем больше я углублюсь в машинное обучение, тем больше я обнаружу, что ограничение в 8 ГБ памяти является слишком большим ограничением. Но у меня есть план на это. Облако! Если мне нужно обучить большую модель машинного обучения только один раз в синюю луну, и я знаю, что для этого потребуется немного больше ресурсов, тогда имеет смысл рассмотреть возможность обучения на AWS или GCP.

С Amazon Sagemaker я могу арендовать сервер с графическим процессором Nvidia T4 с 24 ГБ памяти всего за 0,70 доллара в час. Или целых 4 доллара в час для сервера с 4 графическими процессорами и 48 виртуальными ЦП. Если вы хотите увидеть, как работает обучение машинному обучению в Amazon Sagemaker, я недавно разместил на своем канале Youtube видео, в котором я завершаю обучение модели TensorFlow с использованием этих двух экземпляров Sagemaker. Проверить это:

Лучший процессор для машинного обучения

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

В качестве процессора я выбрал AMD Ryzen 5900X, процессор с базовой тактовой частотой 3,7 ГГц и максимальной тактовой частотой до 4,8 ГГц, 12 ядер и 24 потока! Достаточно мощи для начинающего ПК с глубоким обучением!

Память (RAM)

Поскольку я использую этот компьютер для множества задач, а не только для глубокого обучения, я использовал 32 ГБ оперативной памяти. Практическое правило - убедиться, что объем оперативной памяти не меньше объема памяти, доступной графическому процессору. Например, если у моего графического процессора было 24 ГБ памяти, объем ОЗУ должен соответствовать как минимум этому значению. Поскольку память достаточно дешевая, я выбрал 32 ГБ памяти с частотой 3600 МГц.

Моя первая сборка ПК

Есть что-то особенное в том, чтобы собрать все вместе и заставить что-то работать в конце.

Сборка персонализированного ПК - огромное хобби. Вам нужно всего лишь найти на Youtube сборки для ПК, чтобы понять его популярность, а также то, насколько серьезно к ней относятся. Эстетика так же важна, как и технические характеристики. Сборки ПК часто имеют RGB-освещение и прозрачные стеклянные корпуса, чтобы сделать ПК почти центральным элементом в доме. Вместо того, чтобы прятаться, вы должны показать свой компьютер во всей красе с его световым шоу RGB.

Я постарался узнать как можно больше о том, как собрать ПК и все его тонкости. То, что вы прочтете дальше, является результатом обширного исследования на Youtube, собранных на основе самых популярных каналов Youtube по созданию компьютеров.

Мой список покупок

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

Процессор AMD Ryzen 5900X

США: https://amzn.to/3c1Iubi

Великобритания: https://amzn.to/2KDY0ih

Видеокарта Gigabyte GeForce RTX 3070 EAGLE OC 8 ГБ

Модель, которую я нашел недоступной в магазине США, но ниже представлена ​​аналогичная модель с чуть более высокими характеристиками:

США: https://amzn.to/2Y4tu4d

Великобритания: https://amzn.to/394pAia

Твердотельный накопитель Crucial 1 ТБ

Великобритания: https://amzn.to/2KP797W

США: https://amzn.to/39X8xhf

Материнская плата ASUS ROG Strix X570-E Gaming ATX, AMD Socket AM4

США: https://amzn.to/3oa9tnB

Великобритания: https://amzn.to/3iAHtrU

Corsair iCUE H150i PRO XT RGB жидкостный кулер ЦП (360 мм)

США: https://amzn.to/2LYCFRp

Великобритания: https://amzn.to/2Y1DCuG

Корпус ПК - Phanteks Eclipse P600S

США: https://amzn.to/3c3sEgn

Великобритания: https://amzn.to/2LNARL7

Память - Corsair Vengeance RGB Pro 32GB (2x16GB) DDR4 3600- Black

Ссылка на Amazon в США: https://amzn.to/3c1PuVC

Ссылка на британский Amazon: https://amzn.to/2Y5mJzm

Блок питания - CORSAIR CX750F RGB - 750 Вт, полностью модульный

США: https://amzn.to/399oaTz

Великобритания: https://amzn.to/2Md2won

Основные моменты сборки моего ПК

Установка процессора Ryzen на материнскую плату

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

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

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

Установка процессора AMD требует особой осторожности, чтобы не повредить контакты под процессором. Старайтесь не касаться днища процессора, ковырять его по бокам. Найдите стрелку, которая должна быть внизу слева от ЦП, и совместите ее со стрелкой на материнской плате. Слово предупреждения, это так. маленькая стрелка!

Прежде чем вы сможете установить ЦП, вам нужно освободить небольшой рычаг в слоте ЦП. Как только вы это сделаете, вы можете установить ЦП в правильном направлении и использовать рычаг, чтобы надежно прикрепить ЦП к материнской плате.

Если у вас есть воздушный охладитель процессора, а не жидкостный охладитель, как в моей сборке, вы также должны установить его поверх своего процессора. Но не забудьте о термопасте (это можно сделать чуть позже, перед установкой жидкостного кулера процессора)!

Если у вас есть диск M.2, это также лучшее время для его установки, иначе будет неудобно!

Установка памяти (RAM)

Установка памяти менее неудобна, но все же рекомендуется установить ее раньше. Всего на большинстве материнских плат имеется 4 слота для памяти. Поскольку у меня только два модуля DIMM памяти, мне нужно установить модули DIMM памяти в слоты одного цвета, то есть на расстоянии одного слота друг от друга. Использует ли ваш первый модуль DIMM первый или второй слот, зависит от материнской платы, и если вы не уверены, вам следует проверить руководство.

Установка материнской платы в корпус ПК

Когда основные компоненты прикреплены к материнской плате, самое время установить их в корпус ПК. Это может быть немного неудобно, поэтому делайте это осторожно. Кроме того, перед началом убедитесь, что вы не забыли установить IO shield.

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

Мне было немного неудобно совмещать материнскую плату с отверстиями для винтов, но в конце концов мне удалось вставить ее.

Получение материнской платы, не поддерживающей Ryzen 5000, без обновления BIOS

Одной из самых больших неудач в моей сборке была покупка материнской платы, которая не распознала бы мой процессор Ryzen 5900X. Первоначально я купил материнскую плату ASUS TUF Gaming X570-PLUS (WiFi), и она не распознала мой процессор Ryzen 5900X. Но ошибка не была очевидной для диагностики. При выполнении теста при включении (подробности см. В моем видео) экран загрузки не отображался. Вместо этого я увидел желтый светодиод, который указывал на проблему с памятью (RAM). Оказалось, что желтый светодиод был вызван тем, что BIOS не распознает процессор Ryzen 5000.

Поскольку на этой материнской плате не было флэшбэка USB BIOS, мне пришлось вернуть его и купить более качественную материнскую плату с поддержкой флэшбэка USB Bios.

Перед укладкой кабелей проведите тест при включении!

Это важный совет. Нет никакой гарантии, что какие-либо из купленных вами компонентов будут работать «из коробки». Так что протестируйте свою сборку при первой возможности. Моя сборка - доказательство того, что не всегда все идет по плану.

Чтобы увидеть мою полную сборку ПК, я настоятельно рекомендую вам посмотреть мое последнее видео на YouTube:

РЕСУРСЫ:







Первоначально опубликовано на https://spltech.co.uk.