Получи случайную криптовалюту за регистрацию!

Почему Nvidia? #ai_hardware Мы недавно писали о том, почему г | Новое электричество

Почему Nvidia?
#ai_hardware

Мы недавно писали о том, почему глубинное обучение нужно проводить на GPU. Следующий логический вопрос у человека, который хочет попробовать – а какая должна быть GPU? Хорошие новости в том, что базовый ответ на этот вопрос очень простой – это должна быть Nvidia.

Мы не будем анализировать видеокарты в целом – сравнений Nvidia и AMD очень много, есть приверженцы того и другого вариантов. Обучать на Nvidia надо не потому, что она лучше сама по себе – с точки зрения «железа», - а потому, что это стало стандартом индустрии. Сама Nvidia создала и постоянное развивает прекрасный пакет Cuda, который управляет использованием GPU для обучения. И основные библиотеки – Tensorflow, PyTorch – прекрасно умеют с ней интегрироваться. Поэтому разобраться с запуском обучения относительно просто.

Для видеокарт AMD тоже какие-то варианты существуют, в принципе запустить на них обучение безусловно возможно. Но скорей всего это потребует намного больших усилий и намного более глубокого понимания происходящих процессов. Поэтому, если вы не планируете становиться серьезным инженером по управлению GPU, наша рекомендация – Nvidia.

Следующий вопрос – какая именно Nvidia? Первое, что нужно отметить – покупать специализированные GPU, созданные специально для машинного обучения (серия Titan Rtx), совершенно необязательно. Многие обычные «геймерские» видеокарты отлично подойдут и обеспечат вполне приличную скорость, пригодную для решения многих практических задач.

Если у вас есть довольно новая видеокарта Nvidia, самое разумное, это попробовать запустить обучение на ней. В целом возможно 3 исхода:
- библиотеки для обучения откажутся с ней работать (она слишком старая или маломощная);
- обучение запустится, но для ваших задач окажется слишком медленным;
- все заработает, и вы получите достаточную скорость обучения.

Первые два варианта будут означать, что новая видеокарта все-таки нужна. Но в любом случае вы получите опыт и массу полезной информации. В частности, если обучение слишком медленное, то можно будет выбрать GPU (или набор GPU!), которые дадут достаточный выигрыш в скорости. Подойдет ли ускорение в 3 раза или нужно минимум в 10, а лучше в 20? Это очень разные истории, которые потребуют разных вложений. Кроме того и третий, позитивный, вариант очень даже реален.

Проанализировать скорость всех моделей невозможно, их слишком много. Но приведем краткие выводы по тем, с которыми мы сталкивались. Мы тестировали RTX 2070 Super для дообучения язывого трансформера. В целом ее оказалось вполне достаточно. Грубо говоря, боевой запуск отнимает одну ночь. Тестовые запуски можно делать существенно короче. Это не очень быстро, но терпимо, если есть определенное время на получение результата.

Переход на RTX 3080 дал выигрыш в скорости примерно в 2 раза. Это конечно, намного удобней, позволяет быстрей получать результаты и что-то менять в настройках. Тем не менее, если глубинное обучение нужно проводить изредка, то 2070 вполне достаточно.

Кроме собственно быстродействия, в первую очередь определяемого количеством ядер, может иметь значение память устройства. Качество обучения может зависеть от размера порций («батчей»), которыми подаются данные. В некоторых случаях маленькая память может вынудить перейти на слишком маленькие батчи и это будет непросто исправить даже возрастанием времени обучения. Но наличие или отсутствие таких проблем очень зависит от конкретной задачи. Очень может быть, что вам и «мини-батчи» прекрасно подойдут.

На этом заканчиваем краткий экскурс по моделям GPU. В одном из следующих постов напишем про некоторые другие, «софтовые» аспекты домашнего глубинного обучения.