Через аркадные автоматы к облаку: как GPU принес счастье

1ee73258ee8062b1ad4073d222d6ac1f.jpg

История видеокарт началась задолго до появления персональных компьютеров. Так, в 1970-х чипы для работы с графикой устанавливали в аркадные автоматы. Со временем были сформированы стандарты работы с GPU, а спектр задач, которые оказались способны решать эти устройства, расширился до декодирования видео и математических вычислений. 

Сегодня GPU каждый может использовать на простых ПК для 3D-моделирования, графического дизайна, анимации, архитектуры и конструирования — и всё без закупки графических станций.

Рассказываем, когда и как применялись графические процессоры, а также — чем отличались их предшественники от того, что мы имеем сегодня.

1970–1980: аркадные автоматы

Atari 2600. Источник

В первых персональных компьютерах и игровых приставках за работу с графикой отвечал CPU. Графические задачи делили его ограниченные ресурсы с остальными процессами. Проектировщикам потребительских устройств приходилось искать баланс между производительностью и ценой, опираясь на технологические возможности того времени. 

Так, игровая приставка Atari 2600 могла выводить картинку с разрешением 160×192 пикселя, используя всего 128 байт оперативной памяти. Эту задачу решал специальный чип — Television Interface Adaptor (TIA). Он поддерживал 128 цветов и мог выводить до четырёх оттенков в одной строке. Но из-за объемов памяти программистам буквально приходилось генерировать графику на лету — обновляя данные в буфере между проходами луча по экрану. Очевидно, что для больших аркадных автоматов, которые получили распространение в 1970-х, таких мощностей было недостаточно.

Источник

Вышедшая в 1979 году система Namco Galaxian разделила историю работы с графикой на «до и после». Платформа имела выделенный графический чип, который позволял ей работать с цветами в RGB-пространстве. Но главным было не это: в отличие от многих предыдущих разработок, Galaxian использовала битовую карту для вывода спрайтов на экран. В результате объект можно было поместить в любое место на дисплее — программистам не приходилось «гоняться за лучом».

Адаптер монохромного дисплея IBM PC на базе Motorola MC684. Источник

Адаптер монохромного дисплея IBM PC на базе Motorola MC684. Источник

К концу 1970-х производители микропроцессоров также начали всерьёз работать над видеочипами для персональных компьютеров. В 1978 году Motorola выпустила MC6845 — ещё не графический процессор, но генератор видеоадресов. Он формировал в своей памяти значения символов и групп пикселей, которые затем должна была считывать и выводить на экран отдельная микросхема. Motorola MC6845 стал основной первых устройств, которые можно было назвать видеокартой — сначала IBM Monochrome Display Adapter, а затем и Color Graphics Adapter (MDA/CGA). Устройства использовали в компьютерах IBM PC и Apple II.

Именно в этот период стал формироваться рынок графических процессоров в том виде, в каком он нам известен сегодня. В 1989 году лидеры индустрии создали ассоциацию Video Electronics Standards Association (VESA), чтобы разрабатывать единые стандарты работы с видеоадаптерами. Основателем объединения стала японская NEC Home Electronics, к ней присоединились Apple, AMD, Microsoft, Foxconn и другие крупные корпорации. Первой задачей ассоциации стала реализация стандарта sVGA для видеоадаптеров с разрешением от 800×600 и количеством цветов до 16 млн. VESA продолжает работу и сегодня, а среди её разработок со временем появились, например, интерфейс DisplayPort и множество стандартов, связанных с управлением внешними дисплеями.

1990-е: декодирование видео

Большинство видеоадаптеров с 1995 года стали поддерживать цветовое пространство YUV, базовые алгоритмы MPEG и другие функции, необходимые для воспроизведения видео. С этого момента графические карты стали использовать в том числе для декодирования контента с аппаратным ускорением. Такой подход позволил разгрузить процессор, перенеся нагрузку по обработке видео на GPU.

С 1995 года началась и история встроенных видеоадаптеров, когда тайваньская Silicon Integrated Systems представила SiS6204, первый чипсет для процессоров Intel. Набор микросхем объединил в себе функции северного моста и графического контроллера. Такой подход позволил декодировать видео и выполнять другие задачи в рамках одной системы на чипе —, но с большим распределением ресурсов.

GeForce 256 рядом с GeForce 4090. Источник

В 1999 году NVIDIA выпустила видеокарту GeForce 256. Компания называла свой продукт «первым в мире графическим процессором» и использовала для его описания аббревиатуру GPU. Термин быстро закрепился в индустрии, хоть многие и считали его не больше, чем маркетинговой уловкой, ведь он встречался в научных работах ещё с 1970-х годов. Тем не менее именно в это время подобные устройства обрели своё основное наименование — и больше не разделялись на карты для 2D и 3D, как это было, например, с 3Dfx Voodoo.

2000-е: вычисления в науке

В это время GPU впервые начали массово использовать для ускорения математических расчётов. За этим стояла простая мысль: архитектура видеоадаптеров лучше подходила для выполнения параллельных задач, чем архитектура CPU. 

Подход получил название GPGPU — неспециализированные вычисления на графических процессорах. Но почти сразу разработчики столкнулись с проблемой: для расчётов на GPU требовалось использовать такие языки программирования, как OpenGL и Cg. Классические вычисления приходилось «упаковывать» в формат графического приложения, соответственно, переписывая и адаптируя для этого исходный код.

Чтобы решить эту проблему, NVIDIA добавила в свои GPU поддержку языков высокого уровня (таких как Fortran, C и C++) в рамках архитектуры CUDA. Она позволила программистам использовать уже привычные инструменты для доступа к инструкциям адаптера и управления его памятью. Важную роль в развитии GPGPU сыграли и разработки с открытым кодом. Например, в 2009 году в публичном доступе появился OpenCL — фреймворк, заточенный под работу с параллельными вычислениями.

На практике разные реализации GPGPU начали применять для вычислений в рамках научных исследований. Показательным примером может быть проект Folding@Home, запущенный в 2000 году. Пользователям по всему миру предлагали подключить свои компьютеры к решению задачи по определению пространственных структур белка. В перспективе исследование должно было помочь медикам лечить рак, вирусные заболевания, а также болезни Альцгеймера и Паркинсона. Изначально для Folding@Home применялись мощности CPU, однако позже разработчики добавили поддержку GPU. Видеокарты предложили производительность вычислений на уровне от 4 до 80 GFLOPS (в зависимости от устройства).

GPU начали применять и в астрономических исследованиях — этому вопросу посвящены десятки научных работ. Так, группа ученых из Стэнфорда в 2007 году представила оптимизированный алгоритм для моделирования поведения и расчёта силы системы из N тел. Это — важная часть анализа звёздной и молекулярной динамики, которая требует большой вычислительной мощности. Обычный GPU при куда меньшей стоимости мог ускорить расчёты до 25 раз даже по сравнению со специализированными CPU.

Передача вычислительных задач видеокарте также позволила ученым лучше предсказывать климатические и погодные изменения, и работать с сейсмической визуализацией для обнаружения нефтяных залежей. Расчёты на GPU с применением метода обратной временной миграции помогли ускорить процесс в 14 раз.

Аналогичный эффект переход на работу с видеокартами оказал на решение задач вычислительной гидродинамики. Это научное направление имеет практическое применение в различных отраслях машиностроения, аэрокосмической, химической и биомедицинской промышленности. С использованием оптимизированных под GPU алгоритмов скорость выполнения расчётов увеличилась в 50–100 раз по сравнению с вычислениями на CPU.

2010-е: машинное обучение

Ещё в начале 2000-х эффективность графических карт стали обсуждать в контексте работы с нейросетями. Тогда последние уже использовали, например, для распознавания текста с изображений и улучшения поисковых систем. Но настоящий бум малинного обучения пришёлся на следующее десятилетие.

В 2009 году специалисты из Стэнфорда опубликовали исследование «Large-scale deep unsupervised learning using graphics processors». В нём они отметили, что обучение глубокой сети доверия со 100 млн параметров на GPU может занять всего один день вместо нескольких недель. Такой подход начали применять на практике. В 2012 году группа учёных из Университета Торонто обучила на GPU нейросеть, способную эффективно распознавать и переводить устную речь. Свои исследования в этом направлении уже вели Microsoft, Google и IBM.

Ученые использовали графические процессоры для создания моделей морфогенеза. Источник

Ученые использовали графические процессоры для создания моделей морфогенеза. Источник

В 2018 году учёные из Европейской молекулярно-биологической лаборатории в Барселоне рассказали, как решили полностью переписать своё ПО для моделирования роста тканей и органов. Долгое время они выполняли все задачи на кластерах CPU. Работа с GPU позволила им создать более эффективную архитектуру. Если раньше на анализ микроскопических изображений у исследователей уходило около 30 дней расчётов на 250 CPU, то теперь для этого оказалось достаточно всего 30 часов на одной графической карте. Кластеры из видеокарт также начали применять в медицинских задачах, связанных с машинным обучением: например, для анализа различных данных об онкобольных и выявления паттернов среди опухолей.

Впрочем, одними лабораторными исследованиями работа с нейросетями на GPU не ограничивалась. Сначала их использовали для обеспечения работы информационно-развлекательных и навигационных систем в автомобилях. Так, в автомобили Audi в 2010 году добавили чип NVIDIA Tegra. Мощности интегрированного видеоядра хватало для того, чтобы обеспечивать не только работу ОС. Компьютер умел вести запись событий, происходящих вокруг автомобиля.

Позже видеокарты положили в основу компьютера беспилотного автомобиля. В ходе тестов свёрточной нейросети пытались «объяснить» связь между «сырыми» пикселями на изображении с передней камеры машины и командами управления. Для этого разработчики дали компьютеру возможность в течение 72 часов наблюдать за тем, как люди водят автомобиль в разных условиях, после чего «передали руль» автоматизированной системе. В итоге машина, по сути, научилась принимать решения при вождении, сохраняя возможность к дальнейшему самообучению.

2020-е: LLM и GPU в облаке

С выходом ChatGPT в публичный доступ в 2022 году одной из основных тем для обсуждений стали большие языковые модели. Машинное обучение вышло в мейнстрим, и бизнес начал искать способы развивать собственные LLM и другие генеративные нейросети. На помощь снова пришли серверы с мощными GPU. По данным аналитиков компании Datadog, бизнес в 2023 году увеличил средние расходы на работу с кластерами GPU сразу на 40%, а некоторые предприятия предпочли перенести подобные задачи, связанные с машинным обучением и нейросетями, в облако.

Вырос спрос на GPU как услугу (GPUaaS) — облачное предложение удаленных GPU. GPUaaS устраняет необходимость в приобретении и обслуживании дорогостоящего оборудования, помогая предприятиям минимизировать первоначальные затраты на физические GPU. По данным Kbv Research, объем мирового рынка GPUaaS вырастет с 4,31 млрд долларов в 2024 году до 49,84 млрд долларов США к 2032 году, демонстрируя среднегодовой темп роста в 35,8%.

С расширением функциональности систем ИИ и ускорением внедрения таких технологий, этот сегмент облачного рынка будет только развиваться. Чтобы соответствовать растущим запросам клиентов, облачные провайдеры увеличивают мощности дата-центров, расширяют и регулярно обновляют кластеры GPU. За счет VDI GPU специалисты, работающие с требовательными графическими приложениями, быстро получают доступ к оптимизированным под их нужны рабочим местам с различными операционными системами, приложениями и производительностью.

Спрос на GPU формирует и видеоигровой сегмент. Разработчики арендуют мощности в облаке для ускорения вычислений, а игроки обращаются к облачному геймингу, чтобы сэкономить на покупке компьютера. Для обеих категорий лидеры рынка разрабатывают специализированные GPU с поддержкой технологии «шеринга»: как, например, Multi-Instance GPU (MIG). Она позволяет разделить одну физическую видеокарту на несколько виртуальных, где каждая имеет изолированную память и кеш.

© Habrahabr.ru