Nvidia tesla как использовать
Наверное, странно видеть в продаже кусок текстолита и кремния за миллион рублей, в то время как игровая видеокарта, которая внутри почти такая же, как Quadro, стоит в 5-10 раз дешевле. Сегодня я расскажу для чего нужны видеокарты Quadro и Tesla, в чем их отличие от игровых видеокарт, а также можно ли на Quadro поиграть в игры.
Профессиональная линейка
Начнем с того, что Quadro, ровно как и Tesla - это профессиональные видеокарты. А чем, собственно, профессиональная видеокарта отличается от НЕпрофессиональной?
Примерно так я смотрю на цены на эти видеокарты
Как минимум - ̶ц̶е̶н̶о̶й̶ возлагаемыми задачами. Объясню очень просто: в играх на один кадр приходится относительно немного полигонов, но нужно просчитывать разные эффекты затенения/освещения в режиме реального времени со скоростью в 60 кадров в секунду.
А вот в CAD-программах все совсем иначе. Сцена там, часто, одна, и даже эффекты там есть не всегда, вот только состоит она из огромного количества полигонов (в десятки тысяч раз больше, чем в игровых сценах), которые надо просчитать с большой точностью.
Например, просчитать такое ну. Непросто.
При том в некоторых программах формы объектов описываются математическими функциями (для большей точности), и вот тут-то игровая видеокарта не пойдет ни в какое сравнение с Quadro. При этом у проф. карт есть фишки, которых нет у игровых видеокарт, вроде памяти с ECC.
Для этого и была создана Nvidia Quadro
Эти видеокарты базируются на тех же чипах, что и игровые видеокарты. Например, Quadro RTX 8000 базируется на том же ГП TU102, что и RTX 2080Ti. Даже больше скажу, эти видеокарты много где идентичны, однако различия все же есть.
- Больший объем памяти у Quadro
- Дополнительная гарантия с личным специалистом, к которому можно обратиться в случае возникновения проблем (все эти видеокарты производятся только одни вендором - PNY)
- Сертификация от разработчиков ПО
На последнем хотелось бы остановиться поподробнее. Дело в том, что при использовании профессиональных видеокарт, могут открыться некоторые технологии, которые недоступны при использовании игровых видеокарт той же серии (хотя они их поддерживают).
И вот однажды в какой-то программе ребята запустили недоступную технологию на игровой видеокарте, просто добавив ее в список поддерживаемых в файлах программы. Что за программа не помню, но суть вы уловили.
В общем, Quadro - это видеокарты со специальной сертификацией, которые как-то там оптимизированы под расчеты, но по сути - кроме драйверов и памяти отличий от игровых видеокарт имеют немного. Другое дело - видеокарты Tesla.
А для чего нужны Tesla?
Если просто посмотреть на эти видеокарты, то можно увидеть несколько странностей: видеовыходов нет, система охлаждения - пассивная (несмотря на огромное тепловыделение чипа), а главное - цена. Видеокарты Tesla могут спокойно стоить по миллиону рублей, и для всех это норма.
А Tesla A100 вообще выглядит как кирпич
Но Tesla - не совсем видеокарта, а, скорее, графический ускоритель. То есть сама по себе она не умеет выводить картинку и предназначена для установки в помощь к какой-нибудь другой видеокарте (например, Quadro). Tesla можно обозвать и сопроцессором.
Помимо этого, Tesla имеет больше производительности на операциях двойной точности по сравнению, например, с видеокартой серии GeForce, которую тоже можно использовать как сопроцессор (естественно, сравниваем карты одного поколения). В разы больше памяти на борту у Tesla. Tesla может работать в режиме 24/7, что важно при выполнении длительных научных расчетов.
И там, раз уж на то пошло, целый ворох технологий, которые в рамках этой статьи я не распишу - она превратится в книгу. Так что уясним: Tesla - это вообще по сути не видеокарта, а графический ускоритель, который занимается расчетами и в профессиональных машинах, если и есть Tesla, то работает в тандеме с другой видеокартой.
Хотя есть сервера по каким-нибудь расчетам, так там можно увидеть и по 9-10 Tesla.
А можно ли поиграть на профессиональных видеокартах?
На Tesla это получится, скажем так, с некоторыми затруднениями, тогда как на Quadro - флаг в руки! Однако стоит учесть, что их производительность ниже, чем у игровых аналогов из-за сниженных частот.
Ну если есть желание купить, то бонусом идет и красивая коробка
Поиграть-то можно, но брать целенаправленно такую видеокарту для игр я бы не стал - слишком дорого получается.
Кстати, я уже начал делать большой эксперимент по заработку в интернете. Его ход, а также разное другое и прикольное - в моей инсте.
Пол года назад я искал себе видеокарту, на которой я смог бы заниматься 3d моделированием, и рендерингом на GPU. В связи с появлением на рынке большого числе рендеров на CUDA мне не терпелось приобрести видеокарту с поддержкой CUDA, а именно Nvidia.
Как некоторые уже знают, Nvidia выставляет на продажу видеокарты нескольких моделей Geforce, Quadro, Tesla, ION, Tegra. В этом коротком сравнении упустим ION и Tegra, т.к. предназначены для мобильных устройств и слабые по производительности.
Нам нужна мощь!
Nvidia power.
ЧТО ГОВОРИТ ПРОИЗВОДИТЕЛЬ
Geforce — видеокарты, ориентированные на потребительский рынок и на геймеров, в частности.
Если вам интересны игры — Geforce лучший вариант для этого.
Видеокарты лучше всего показывают себя в играх, имеют высокие частоты, не дороги, наиболее прожорливы при нагрузке.
В качестве общих вычислительных задач (Cuda, OpenCL) жефорсы упоминаются достаточно редко.
Имеет PhysX, именуемый крутейшим аппаратным решением по ускорению физики.
Досуг обладателя Geforce (Battlefield 3).
Tesla — вычислительные системы для научных и технических вычислений общего назначения.
Тут во всю рекламируется CUDA, как крутейший инструмент вычислений общего назначения. Всюду плакаты с аэродинамическими вычислениями, воксельным сканнированием человеческого тела, графические модели нагрузок, и нереально быстрый рендеринг на iRay.
На Tesla отсутствуют видеовыходы, так же как и нету аппаратной растеризации: не работает ни OpenGL, ни DirectX.
Работа обладателя Quadro + Tesla (Quadro — 3d графика, Tesla — молекулярная динамика).
***
НЕБОЛЬШОЕ ИССЛЕДОВАНИЕ
Когда начал разбираться в их различии, был удивлен тем фактом, что видеокарты GeForce, Quadro, Tesla используют одинаковые графические чипы.
Рассмотрим видеокарты с одинаковым, уже не самым новым, чипом GF100 имеет (512 CUDA ядер):
Одночиповые:
GeForce: GTX465, GTX470, GTX480
Quadro: 4000, 5000, 6000
Tesla: C2050, C2070, M2050, M2090
Рассмотрим по одному представителю с каждого семейства поподробнее.
GeForce GTX480
Некогда топовая игровая видеокарта.
Стоимость: на момент выпуска около 500$ (сейчас бу и за 300 видел), на данный момент не выпускается (на смену пришли GTX580 512 ядер, и GTX680 1536 ядер)
Количество ядер CUDA — 480.
Объем памяти 1.5 Gb.
Производительность float:
Одинарная точность: 1344,9 Гфлопс.
Двойная точность: 168,1 Гфлопс.
(Существует более урезанная версия GTX470, сейчас можно найти по цене меньше 250$, 448 ядер CUDA, 1.25 Gb)
Quadro 5000
Одна из лучших видеокарт для профессиональных приложений.
Стоимость: по данными Amazon около 1700$. Выпускается.
Количество ядер CUDA — 352.
Объем памяти 2.5 Gb.
Производительность float:
Одинарная точность: 718.08 Гфлопс.
Двойная точность: 359.04 Гфлопс.
(Стоит обратить внимание на Quadro 6000, 448 ядер, 515 Гфлопс двойной точности, 4000$)
Tesla C2075
Стоимость: по данными Amazon около 2200$. Тоже выпускается.
Количество ядер CUDA — 352.
Объем памяти 6 Gb.
Производительность float:
Одинарная точность: 1030 Гфлопс.
Двойная точность: 515 Гфлопс.
ЧЕГО НУЖНО?
(Людям, занимающимся 3d графикой)
1. Поменьше тормозов во время редактирования 3d модели.
2. Некоторых интересует возможность быстрого рендеринга на GPU.
Quadro 600: 1Gb, 96 ядер CUDA, 150у.е.
GTX560Ti: 1Gb, 384 ядра CUDA, 250у.е. (Цены взяты из Amazon)
Выходит, Nvidia тщательно следит, чтобы 3d производительность в профессиональных приложениях Geforce уступали Quadro при соизмеримых ценах.
Как могут быть реализованны тормоза во вьюпорте?
Дело в том, что количество полигонов в играх существенно меньше, чем у профессионалов в профессиональных приложениях. В играх редко доходит до одного млн полигонов, а в профессиональных — десятки миллионов.
Тут можно сделать так: урезать производительность при преобразовании координат вершин. Если вершин больше определенного количества — то поставить задержку перед отрисовкой последующих вершин.
Либо установить задержку при отрисовке треугольников. Если больше определенного количества — то поставить задержку перед отрисовкой каждого последующего треугольника.
Маленькое лирическое отступление, или Nitrous в 3ds Max.
Меня ввел в заблуждение Nitrous движок в 3ds Max, который стоит рядом с OpenGL и DirectX. Это как? В Autodesk есть что-то, что вызывает Нитрос, аппаратная поддержка которого, оказывается, есть на каждой уважающей себя видеокарте, но знает о ней только 3Д Макс?
Ну, можно составить небольшую логическую цепочку. Autodesk является богатой корпорацией, и в хороших партнерских отношениях с производителями ATI и Nvidia. Повышать нужно продажи своего детища же! А как бы заинтересовать потребителей? Производительностью же!
Итак, GeForce GTX580 (да, купил я именно её), 7.3 млн треугольников, 2560 Torus Knot-ов, без теней и без Adaptive degradation.
Nitrous — 42 fps; Direct3d — 13 fps; OpenGL — 2 fps.
OpenGL — тормозит. DirectX — намного лучше. А Nitrous — круче всех, оказывается! Что же нитрос тогда?
Два варианта:
1. Это OpenGL/DX в котором убраны дополнительные тормоза во вьюпорте, созданные умышленно в OpenGL/DX режимах.
2. Это OpenGL/DX, который умеет обращаться к аппаратным функциям игровых видеокарт, и проявлять в них квадровые способности!
И я склонен именно к 2 варианту, т.к. в Blender и в Rhino3D это же самое дико тормозит (2fps).
Выходит, пользователям 3ds Max и других продуктов Autodesk вовсе не так принципиально переходить на Квадру? К сожалению, у меня нету Квадры, чтобы проверить производительность Нитроса по сравнению с OpenGL.
GTX680
Но корпорация заметила, что для вычислений все чаще начали брать GTX580, производительность double в GTX680 уступает float не в 8 раз, а в 24, что не могло не отразиться на некоторых тестах.
Известно, что в Octane Render производительность возросла на 64%.
ATI Radeon vs FirePro
Аналогично Nvidia, корпорация AMD тоже разделила модели видеокарт. Radeon (аналог GeForce), FirePro (аналог Quadro), FireStream (аналог Tesla). Производительность вычислений с плавающей точкой двойной точности уступает одинарной в 4 раза, во всех моделях ATI. Интересно, что производительность топовых игровых видеокарт ATI (Radeon HD 7970, float — 3.79 Тфлопс, double — 947 Гфлопс) превосходит в двойной точности даже одночиповые Tesla. Надо заметить, что производительность в флопсах, не всегда является показателем производительности железа в конкретных случаях.
Причина, по которой ATI сильно уступает Nvidia на рынке GPGPU мне пока не ясна. Может, игрового сегмента вполне хватает.
Выбор?
Я выбрал GTX580 3Gb. Видеокарта дает возможность насладиться новыми играми и производительностью GPU рендеров. А тормоза во вьюпорте пакетов 3d моделирования для меня не сильно критичны.
Автор статьи с уважением относится к этому производителю, и сам является счастливым обладателем карточки Nvidia.
Подобные маркетинговые ходы являются неотъемлемой частью рыночной экономики, к ним прибегают все производители без исключения.
Но все же, не будем же вестись на маркетинговые уловки корпораций, а вдумчиво покупать то, что действительно полезно для нас!
Встречают по одежке
Техника безопасности предписывает использовать механический лифт для работы с сервером
NVIDIA DGX A100 — это стоечный сервер, высотой в 6U и массой более 130 килограмм. Сервер даже в коробке способен повергнуть в легкий трепет. Большой корпус и красивый золотистый цвет притягивают взгляды проходящих мимо коллег.
Сервер прибыл в сопровождении инженера, который оказывал нам как физическую, так и моральную поддержку. Пока наши сотрудники снимали упаковку и готовили инструменты для транспортировки сервера к месту установки, инженер рассказывал интересные факты об этом сервере. Так, техника безопасности предписывает использовать лифт для монтажа в стойку, а для разборки сервера нужно минимум два человека.
В глаза бросается шесть блоков питания по 3 КВт каждый с возможностью горячей замены. Интересно, что максимальное заявленное энергопотребление — 6.5 КВт. Разгадка проста: блоки питания работают по схеме 3+3, то есть резервирование 2N. Большинство обычных корпусов для GPU предоставляют 4 блока питания и схему 3+1.
На нижнем трее видно десять портов сетевых карт с пропускной способностью до 200 Гбит/с. По умолчанию двухпортовая карта сконфигурирована в режиме Ethernet, а остальные — в режиме Infiniband. Эти сетевые карты используются для объединения нескольких DGX в вычислительный кластер. У нас всего один DGX, поэтому порты не используются.
Один из суперкомпьютеров России, Кристофари, собран из 75 серверов DGX-2, в основе которого лежат графические ускорители предыдущего поколения.
Восемь вентиляторов способны сдуть тебя, %USERNAME%
Передняя панель сервера выглядит ожидаемо для сервера с GPU: много больших вентиляторов. Они способны развивать скорость до 18000 оборотов в минуту, что позволяет эффективно охлаждать богатый внутренний мир сервера. Софт сервера сам управляет скоростью вращения вентиляторов и не предоставляет пользователю возможности вмешаться в этот процесс.
Сперва мы хотели попытаться запустить DGX самостоятельно, но, к сожалению, столкнулись с неожиданной проблемой. Во время пуско-наладочных работ сервер вывел ошибку связи с BMC и раскрутил все вентиляторы до 18 000 оборотов в минуту. При помощи сопровождающего инженера ошибка была устранена, и сервер стал работать в штатном режиме. Даже в процессе стресс-тестирования на такие обороты он больше не выходил.
Фронтальная крышка на месте
Передняя панель закрывается специальной крышкой на магнитных креплениях. Издалека кажется, что на передней панели изображен белый шум, но на самом деле это металл с множеством отверстий, пропускающих воздух.
В ходе тестов было выявлено, что данная крышка не имеет значительного влияния на теплоотвод, вентиляторы сервера отлично справляются со своей работой.
После внешнего осмотра сервер был перенесен на прочный стол и разобран.
Филигранная техника
Специфические коннекторы GPU-трея
Как уже говорилось ранее, сервер состоит из двух треев: CPU и GPU. Каждый трей — это часть сервера, заключенная в свою железную коробку, которая установлена в шасси. Связь между треями, вентиляторами и корзинами на передней панели обеспечивает объединительная плата, установленная в корпусе. В некотором смысле DGX — это классическое blade-шасси, только вместо отдельных серверов (лезвий) устанавливаются части одного сервера.
GPU-трей. Много радиаторов
Вверху находится GPU-трей, занимающий 3U. Он тяжеловат даже для двух человек. На верхней крышке трея также есть предупреждающий знак о тяжести объекта и необходимости работать с ним вдвоем.
В этом трее установлены восемь видеокарт NVIDIA Tesla A100 в модификации 40 GB. Их особенностью является форм-фактор SXM4. Данная версия видеокарты отличается мезонинным исполнением и повышенным тепловыделением: 400 Вт против 300 у PCIe-версии.
Помимо восьми больших радиаторов видеокарт, на трее расположены шесть радиаторов поменьше. Эти радиаторы охлаждают микросхемы, которые реализуют интерконнект видеокарт. Технологии NVLINK и NVSWITCH соединяют восемь видеокарт многосвязной топологией (каждая видеокарта соединена с каждой) с пропускной способностью 600 Гбит/с.
CPU-трей. Здесь тоже много радиаторов
CPU-трей имеет два способа извлечения: полное и частичное.
Во втором случае трей выезжает из шасси чуть больше чем на длину части с PCIe-слотами и фиксируется, а крышка трея открывается вверх. Это позволяет провести работы с сетевыми картами или накопителем для ОС, не извлекая трей целиком.
Со стороны CPU-трей выглядит как обычный 2U сервер без блоков питания. Под большими радиаторами прячется пара процессоров AMD EPYC 7742, суммарно 128 физических ядер или 256 логических. Рядом стоят шестнадцать планок DDR4 с частотой 3200 МГц и объемом 64 ГБ каждая. Суммарный объем оперативной памяти 1 ТБ.
Интересно, что радиаторы процессоров расположены друг за другом, то есть второй процессор охлаждается теплом первого. Тем не менее, с системой охлаждения DGX это выглядит незначительно. Непривычно большие радиаторы заметны и на этом трее. Взаимодействие с GPU-треем создает большую нагрузку на PCIe-мосты, которые тоже требуют охлаждения.
На этом знакомство с внутренним миром DGX закончено. Давайте посмотрим на него в работе.
Душа титана
Для отображения всех ядер в htop разрешения 203x53 мало
В коробке с DGX лежит флешка, а на флешке — подготовленный образ операционной системы для начала работы. Основой образа является операционная система Ubuntu 20.04.3 LTS с предустановленными драйверами и специальными утилитами.
Сервер, который мы запускаем, прошел длинный путь, в ходе которого был разобран и собран. После транспортировки и манипуляций стоит проверить целостность систем сервера. По регламенту установки операции, сопряженные с первым запуском DGX, должен проводить сопровождающий инженер, но нам было очень любопытно, поэтому все операции проводились совместно.
- наличие всех заявленных PCIe-устройств: NVMe, сетевых карт и видеокарт;
- использование PCIe 4.0 и максимально доступного количества линий для каждого устройства;
- топологию видеокарт и доступность всех соседей для каждой видеокарты через NVLINK;
- количество установленных планок памяти и их P/N;
- количество логических ядер процессора.
Следующий этап регламента — запуск стресс-теста. Это не только проверит систему в работе, но заодно предоставит нам информацию о максимальном практическом энергопотреблении и температуре на различных компонентах сервера. В этой задаче также помогает утилита nvsm.
Стресс-тест сделан достаточно удобно. Утилита нагружает процессор, видеокарты, оперативную память и постоянное хранилище и начинает отслеживать системные события, температуры, обороты вентиляторов и энергопотребление. Через 20 минут, в конце теста, выводится табличка статистики.
Здесь видно, что температура процессоров и видеокарт не превышала 69 градусов, при этом вентиляторы работали чуть меньше, чем в полсилы. Энергопотребление составило 4.7 КВт, что почти на два киловатта меньше заявленного в спецификации. Впрочем, данный стресс-тест не учитывает десяти внешних сетевых карт, да и наша версия DGX не старшая.
Теперь, когда сервер проверен и готов к работе, хочется провести тесты, чтобы узнать, на что способна эта машина для вычислений. Хотя данный сервер больше предназначен для задач ИИ, желания провести обычные тесты никто не отменял.
Мы начали с GeekBench 5 Compute. К сожалению, данный бенчмарк не задействует интерконнект между видеокартами и тестирует исключительно одно устройство за раз. Тем не менее, с его помощью можно сравнить, насколько SXM4-версия Tesla A100 лучше, чем PCIe-версия.
Категория | PCIe Tesla A100 40G | SXM4 Tesla A100 40G |
---|---|---|
OpenCL | 170137 | 188380 (+11%) |
CUDA | 213899 | 234890 (+10%) |
Второй тест, который мы провели, — ai-benchmark, тест производительности, который замеряет скорость обучения и применения различных нейронных сетей на задачах распознавания и классификации. Хотя данный тест использует Tensorflow GPU и даже в логах отмечает наличие интерконнекта между видеокартами, но запускается только на одной видеокарте. Таким образом этот тест показателен только для сравнения разных форм-факторов Tesla A100.
Категория | PCIe Tesla A100 40G | SXM4 Tesla A100 40G |
---|---|---|
Inference Score | 25177 | 30158 (+20%) |
Training Score | 23775 | 27837 (+17%) |
AI Score | 48952 | 57995 (+19%) |
В качестве тестирования задач ИИ был выбран MLPerf от MLCommons. На сайте NVIDIA упоминается этот тест, а в турнирных таблицах MLPerf встречаются результаты старшей версии DGX A100 за авторством производителя.
Несмотря на наличие инструкции и четкий регламент, большинство тестов не запускалось из-за ошибок в зависимостях Docker-контейнеров. Однако вместе с DGX A100 поставляется контракт на техническую поддержку, который включает в себя в том числе возможность пообщаться с экспертами в области ИИ, а также удаленную помощь с настройкой ПО.
На данный момент у нас нет возможности сравнить DGX A100 с сервером с восемью Tesla A100 без интерконнекта, поэтому тестирование MLPerf пока отложено до момента появления тестового стенда с необходимой конфигурацией.
Заключение
Сервер предоставлен компанией Forsite. Forsite — российский производитель суперкомпьютеров и провайдер решений NVIDIA уровня Elite.
Около месяца назад Google сервис Colaboratory, предоставляющий доступ к Jupyter ноутбукам, включил возможность бесплатно использовать GPU Tesla K80 с 13 Гб видеопамяти на борту. Если до сих пор единственным препятствием для погружения в мир нейросетей могло быть отсутствие доступа к GPU, теперь Вы можете смело сказать, “Держись Deep Learning, я иду!”.
Я попробовал использовать Colaboratory для работы над kaggle задачами. Мне больше всего не хватало возможности удобно сохранять натренированные tensorflow модели и использовать tensorboard. В данном посте, я хочу поделиться опытом и рассказать, как эти возможности добавить в colab. А напоследок покажу, как можно получить доступ к контейнеру по ssh и пользоваться привычными удобными инструментами bash, screen, rsync.
Для начала, почему это интересно
Наличие GPU ускорителя является критическим фактором для скорости обучения deep learning моделей. Без GPU обучение нейросети займет многие часы/дни и не позволит полноценно экспериментировать со структурой сети. Объем видеопамяти так же важен. Больше памяти — можно установить больший размер батча и использовать более сложные модели. На сегодняшний день 13G это хороший объем, если захотите получить примерно столько же у себя на столе, придется покупать GPU уровня GTX 1080 Ti.
Что такое Colaboratory
Это форк популярной среды Jupyter notebook. Ваши ноутбуки доступны через google drive в .ipynb формате и вы можете их запускать у себя локально. Поддерживается Python 2.7 и 3.6. Код исполняется на сервере в docker контейнере. Можно закрыть браузер, все процессы на сервере продолжат работать, позже можно подключиться к серверу снова. Docker контейнер выдается вам во временное пользование на 12 часов. Вы имеете root привилегии, и можете устанавливать и запускать любые программы внутри контейнера. Colaboratory (далее colab) также поддерживает совместную работу над ноутбуком, по типу google docs. Это отличная платформа для начала изучения deep learning, machine learning. Многие бесплатные курсы, например Открытый курс машинного обучения используют Jupyter notebook формат для своих учебных материалов.
Запускаем обучение
Для создания нового ноутбука перейдите по ссылке. После успешного логина и создания ноутбука в меню выберете Runtime -> Change Runtime Type, в открывшемся диалоге в опции Hardware acceleration установите GPU, далее save.
После этого можно удостовериться, что tensorflow использует GPU. Просто скопируйте этот код в первую ячейку ноутбука и выполните, нажав shift+Enter:
Теперь попробуем запустить простую модель tensorflow из примеров, для этого клонируем github репозиторий и запустим скрипт.
После выполнения это команды мы увидим как сеть обучиться и сделает первые предсказания. Существует достаточно много материалов описывающих возможности Jupyter, поэтому я не буду подробно на этом останавливаться.
Монтируем google drive
Всё работает отлично, но через 12 часов виртуальную машину у вас заберут и все данные внутри контейнера будут потеряны. Хорошо бы позаботиться о постоянном хранилище. В colab есть примеры как использовать импортировать данные из cloud storage, google sheets. Это предполагает явный вызов операции копирования, а мне бы хотелось иметь возможность примонтировать внешний диск к файловой системе внутри контейнера, тут на помощь приходит google drive и FUSE драйвер для него. Подключить google drive можно выполнив код, по рецепту из статьи
После этого вам будет доступна директория куда вы можете записывать данные, без опаски их потерять после остановки контейнера. Вы можете определить параметр model_dir в конфигурации модели, tensorflow будет автоматически восстанавливать состояние модели из последнего checkpoint. Таким образом, вы можете продолжить обучение модели или запустить inference в любой момент.
Tensorboard
Я люблю использовать tensorboard в процессе экспериментов со структурой и параметрами нейросети. Если вы хотите узнать больше об этом инструменте рекомендую посмотреть презентацию. Поэтому, я искал возможность, как можно запустить tensorboard в colab. Ответ нашелся на SO. Через переменную LOG_DIR вам необходимо задать путь к model_dir из конфигурации tensorflow модели, либо к корневой директории внутри которой содержиться множество сохраненных моделей.
После выполнения в последней строчке будет выведен URL, открыв который в браузере, мы увидим привычный нам tensorboard.
Доступ по ssh
Если у вас есть опыт использования Jupyter. То вы вероятно знаете, что выйдя за рамки игрушечных моделей, некоторые преимущества формата jupyter ноутбука становятся его недостатками. Ноутбук превращается в сложно читаемую кашу, результаты вычислений становится трудно воспроизвести. Jupyter ноутбуки остаются отличным инструментом для обучения, визуализации и небольших экспериментов. Однако, в средних по величине проектах, я предпочитаю структурировать python код классическим способом, используя разбиение на модули и классы. Работать на серьезным проектом удобнее в PyCharm / Vim и т.д… Постоянно синхронизировать код через репозиторий, запускать .py файлы не очень удобно через jupyter, использовать для этого привычные инструменты намного комфортнее.
Основываясь на примере запуска tensorboard, я написал код, который открывает ssh туннель в контейнер.
Для создания TCP туннеля вам потребуется создать аккаунт на сайте ngrok.com и скопировать authtoken оттуда. В бесплатной версии ngrok два тунеля не поддерживаются, поэтому если http тунель на tensorboard всё еще работает, вам надо его отключить, можно это сделать например перезапустив контейнер, нажав Ctrl+M затем ".".
После запуска тунеля вы увидите в ноутбуке, примерно следующее
Теперь с рабочего компьютера вы сможете залогиниться в colab контейнер используя любой ssh клиент и в данном примере хост 0.tcp.ngrok.io, порт 15223. Пример для linux
Бонус для каглеров, для импортирования данных из kaggle и отсылки submit прямо из colaboratory вы можете использовать официальный API клиент, устанавливается командой pip install kaggle.
Техническая сторона вопроса
Обычно основная часть нагрузки ложится на центральный процессор. Но есть задачи, с которыми GPU справится во много раз быстрее, и было бы глупо этим не воспользоваться. Логично, что чаще всего это касается программ для работы с графикой, видео и 3D-моделированием.
Во время GPU-ускорения задействуется исключительно память видеокарты. Для простой работы с FHD достаточно 2 ГБ. Однако, когда один кадр компонуется из нескольких (картинка в картинке) или используются эффекты, одновременно обрабатывающие несколько кадров (шумодавы и т. д.), расход возрастает. Для UHD/4K-видео необходимо уже минимум 4 ГБ видеопамяти.
Конечный прирост производительности зависит от правильности настройки и общих параметров системы. В случае, например, рендеринга иногда разница с CPU составляет разы, а это сэкономленное время, которое, как известно, — деньги. Гарантировать точный результат ускорения не возьмется ни один производитель, ссылаясь на индивидуальность каждой системы.
Любая видеокарта в той или иной степени способна проводить сложные вычисления и обрабатывать графику. Больше других акцентирует внимание на неигровых возможностях и технологиях своих GeForce компания nVidia.
Тензорные ядра — присутствуют в адаптерах серии RTX, повышают производительность и энергоэффективность. Поддержка ИИ ускоряет расчеты и работу с графикой.
CUDA — проприетарная технология nVidia, доступная для устройств GTX и RTX. Позволяет использовать графический процессор для вычислений общего назначения, улучшает работу с фото, видео и 3D.
NVENC — отдельный аппаратный блок, способный кодировать и декодировать видеопоток. Благодаря этому разгружаются центральный и графический процессоры для запуска игр и других ресурсоемких задач. В первую очередь это интересно стримерам, но многие программы видеомонтажа уже приспособили NVENC под себя.
NVIDIA STUDIO DRIVER — выходит для видеокарт серии 10хх и моложе. Оптимизирует работу адаптера под такие приложения, как Autodesk Maya, 3ds Max, Arnold 5, DaVinci Resolve и т. д.
Карты AMD тоже хорошо справляются с вычислениями и обработкой графики, но любит говорить об этом исключительно компания Apple. AMD использует открытые технологии OpenGL и Vulcan — альтернативу CUDA.
Программы, работающие с GPU-ускорением
О возможности ускорения программы с помощью видеокарты можно узнать на официальном сайте. Все ведущие производители софта дают четкие инструкции, какая видеокарта подойдет и как включить GPU-ускорение. А первое, что приходит на ум, когда речь идет о работе с графикой и видео, — решения студии Adobe.
Adobe Premiere Pro использует вычислительные ресурсы видеокарт, начиная с версии CS5. Текущие версии для Windows поддерживают все современные GPU (включая встроенную графику Intel). CS6 и выше имеют функцию стабилизации видео Warp Stabilizer, которая устраняет дрожание камеры. Плагин использует GPU-ускорение только при финальном рендеринге изображения. Также в CS6 появился рендер Ray-traced 3D, который обсчитывает на видеокарте 3D-слои, камеру и источники света в композиции. Adobe Premiere CC научился работать одновременно с несколькими видеокартами, причем допускается использование разных серий и даже производителей (MultipleGPU). Выигрыш зависит от общей конфигурации ПК. Интересные возможности дает использование GPU сторонними плагинами. Можно ускорять Premiere при помощи CUDA одной видеокарты, при этом его плагин будет ускоряться OpenGL другой видеокарты. Такие плагины, как Magic Bullet Looks, Elements3D и т. п. могут использовать ресурсы GPU независимо от настроек Adobe. Подробные требования приложения к видеокарте можно найти на официальном сайте.
Кроме продукции компании Adobe нельзя не вспомнить такие программы, как 3ds Max, DaVinci Resolve и Vegas Pro.
Данные о поддержке наиболее адаптированных приложений производители видеокарт публикуют на своих официальных сайтах:
eGPU — внешний графический процессор
Этот раздел касается в первую очередь техники компании Apple. Купертиновцы любят делать упор на творческие возможности своих устройств, однако пользователи макбуков и аймаков ограничены исходной комплектацией. На помощь приходит eGPU — внешняя видеокарта, с помощью которой, по заявлению производителя, можно увеличить скорость обработки графики на Mac в несколько раз.
По сути, это обычная видеокарта в специальном боксе с блоком питания и дополнительным охлаждением. Она подключается к макам посредством Thunderbolt 3. Уже много лет Apple использует видеокарты AMD, и весь софт Apple затачивается под новый API Metal. Графические решения nVidia ощутимого прироста производительности на Apple не дают, так как из-за патологической жадности компании не смогли договориться, и весь софт на маке заточен исключительно под AMD. В отместку nVidia недавно полностью отменила поддержку CUDA на MacOS.
Несколько лет назад компания nVidia выпустила первый TITAN — запредельную по производительности и цене игровую видеокарту. Но вместо того, чтобы стать нишевым продуктом, она была буквально сметена с прилавков. Оказалось, что карта прекрасно справляется с расчетами, и многие компании с удовольствием покупали ее вместо дорогих про-аналогов. Разумеется, nVidia быстро смекнула, в чем дело, и в начале 2018 года прикрыла лавочку запретила использовать графические процессоры GeForce и Titan в составе дата-центров. По словам nVidia, нельзя гарантировать их безотказную работу в жарких условиях (и это не фигуральный оборот) в режиме 24/7. В качестве альтернативы предлагается использовать, например, Tesla V100, который гораздо мощнее GeForce и стоит в десять раз больше создан специально для работы в условиях ЦоД.
nVidia имеет три линейки профессиональных видеокарт: Quadro, NVS и Tesla.
-
Quadro — служит для рендеринга видео, производства VR/AR, 3D-моделирования. Быстрые и дорогие. Чтобы оправдать стоимость, производитель оснащает их самыми современными и совершенными разработками, которые появятся только в следующих сериях GeForce. Для очень богатых дизайнеров и инженеров.
Tesla — узкоспециализированная и сверхдорогая линейка для математических и физических расчетов. Для работы требуется CPU. Портов нет, поиграть нельзя, расходимся пацаны .
Компания AMD в качестве профессионального решения предлагает серию Radeon Pro. Также у них есть вычислительные аналоги Tesla с космическим ценником под названием Instinct.
Читайте также: