Лев Корольков
Руководитель IT-департамента EFSOL Oblako
Время чтения: 14 мин

GPU

Графический процессор

GPU, или Graphics Processing Unit, — это графический процессор, предназначенный для выполнения большого количества однотипных вычислений параллельно. Изначально GPU создавались для обработки компьютерной графики, однако сегодня они широко используются в машинном обучении, нейронных сетях, генеративном ИИ, научных расчетах и других задачах.

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

Поэтому GPU стал одним из ключевых компонентов инфраструктуры искусственного интеллекта. Обучение крупных моделей без графических ускорителей во многих случаях занимало бы значительно больше времени.

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

Как расшифровывается GPU

GPU расшифровывается как Graphics Processing Unit — графический процессор или графическое вычислительное устройство.

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

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

Так появилось широкое использование графических процессоров вне компьютерной графики.

Чем GPU отличается от CPU

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

GPU ориентирован на массовые параллельные вычисления.

КритерийCPUGPU
Основная задачаУниверсальные вычисленияПараллельные вычисления
Количество вычислительных блоковОтносительно небольшоеОчень большое
Сложная последовательная логикаПодходит хорошоОбычно менее эффективен
Матричные операцииВыполняетЧасто выполняет значительно эффективнее
НейросетиПодходит для небольших моделейОсновной ускоритель для крупных моделей

CPU и GPU не заменяют друг друга полностью. В большинстве современных компьютеров и серверов они работают совместно.

Почему GPU подходит для нейросетей

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

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

GPU способен распределить большое количество похожих математических операций между множеством вычислительных блоков.

В результате обучение и инференс нейронной сети часто выполняются значительно быстрее, чем на одном CPU.

Параллельные вычисления

Главная идея GPU заключается в параллельной обработке данных.

Представим, что необходимо выполнить одинаковую математическую операцию над миллионом элементов массива. CPU может обрабатывать данные несколькими мощными потоками, а GPU распределяет работу между большим количеством относительно простых вычислительных блоков.

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

Однако если задача состоит из длинной последовательности зависимых действий, преимущество GPU может уменьшаться.

GPU и матричные операции

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

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

Поскольку многие операции внутри матрицы могут выполняться независимо, GPU эффективно распараллеливает их.

Именно поэтому развитие графических ускорителей существенно ускорило развитие Deep Learning.

Что такое видеопамять

GPU обычно имеет собственную высокоскоростную память, которую часто называют VRAM.

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

Для машинного обучения объем видеопамяти является одной из важнейших характеристик.

Если модель или batch не помещаются в доступную память, обучение или инференс могут завершиться ошибкой либо потребовать специальных методов распределения и оптимизации.

Почему VRAM важна для ИИ

Большая модель может содержать миллиарды параметров. Каждый параметр занимает определенный объем памяти.

Кроме весов, во время обучения необходимо хранить градиенты, состояния оптимизатора и промежуточные активации.

Поэтому обучение обычно требует значительно больше памяти, чем простой инференс той же модели.

Что хранитсяОбучениеИнференс
Веса моделиДаДа
АктивацииДаДа
ГрадиентыДаОбычно нет
Состояние оптимизатораДаНет

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

GPU и обучение нейросетей

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

Каждый такой цикл включает большое количество тензорных операций.

GPU позволяет выполнять их параллельно и тем самым сократить время экспериментов.

Для Data Scientist это означает возможность быстрее проверять разные архитектуры и гиперпараметры.

GPU и инференс

После обучения нейросеть используется для обработки новых данных. Этот процесс называется инференсом.

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

Например, сервер с LLM должен выполнять множество матричных операций для каждого генерируемого токена.

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

GPU и большие языковые модели

Большие языковые модели особенно требовательны к вычислительным ресурсам.

При инференсе необходимо хранить миллиарды параметров модели и выполнять большое количество матричных операций.

Кроме того, для генерации используется KV-кэш, размер которого растет вместе с количеством запросов и длиной контекста.

Поэтому выбор GPU и объема памяти напрямую влияет на размер модели, которую можно запустить, и количество одновременно обслуживаемых пользователей.

GPU и контекстное окно

Длина контекста влияет на вычислительную нагрузку языковой модели.

Чем больше входных токенов, тем больше данных необходимо обработать и сохранить в промежуточных структурах.

При больших контекстах растут требования к видеопамяти и времени обработки.

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

GPU и batch

Batch — группа объектов, которые модель обрабатывает одновременно.

GPU обычно работает эффективнее, когда получает несколько объектов одним пакетом, поскольку может лучше использовать параллельные вычислительные блоки.

Увеличение batch позволяет повысить загрузку ускорителя, но одновременно увеличивает потребление видеопамяти.

Оптимальный размер batch зависит от модели, оборудования и задачи.

GPU и latency

Latency означает задержку выполнения запроса.

Для интерактивных ИИ-сервисов важно, чтобы пользователь быстро получил первый результат.

Более производительный GPU может уменьшить latency, но итоговая задержка также зависит от длины контекста, размера модели, загрузки сервера и программной оптимизации.

Нельзя оценивать скорость системы только по названию ускорителя.

GPU и throughput

Throughput показывает, сколько вычислительной работы система выполняет за единицу времени.

Для LLM это может быть количество обрабатываемых запросов или генерируемых токенов в секунду.

Высокая пропускная способность особенно важна для массовых ИИ-сервисов.

Система может быстро обслуживать одного пользователя, но плохо масштабироваться при сотнях одновременных запросов.

GPU в TensorFlow

TensorFlow поддерживает выполнение тензорных операций на GPU.

При наличии совместимого оборудования и настроенного программного окружения фреймворк может переносить тяжелые математические вычисления на ускоритель.

Это особенно полезно при обучении нейронных сетей и обработке больших тензоров.

Некоторые операции при этом продолжают выполняться на CPU.

GPU в PyTorch

PyTorch также активно использует GPU для ускорения нейронных сетей.

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

Одна из типичных ошибок разработчика — разместить модель на GPU, а входные данные оставить в памяти CPU.

Для выполнения операции связанные тензоры обычно должны находиться на совместимых устройствах.

GPU и Scikit-learn

Для большинства классических алгоритмов Scikit-learn GPU не является обязательным компонентом.

Логистическая регрессия, деревья решений и многие другие методы обычно эффективно работают на CPU.

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

Ускорители особенно полезны для глубоких нейронных сетей и крупных тензорных вычислений.

GPU и Hugging Face

Модели, загружаемые через экосистему Hugging Face, часто запускаются на GPU при помощи PyTorch или другого ML-фреймворка.

Большие языковые и мультимодальные модели могут требовать значительного объема видеопамяти.

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

Возможность скачать модель не означает, что она поместится на доступный GPU.

GPU и Jupyter Notebook

Jupyter Notebook часто используется для экспериментов с GPU.

Data Scientist запускает обучение модели из ячейки и сразу получает метрики и результаты.

В облачной среде ноутбук может быть подключен к удаленному серверу с графическим ускорителем.

При этом Notebook является только интерфейсом, а вычисления фактически выполняются установленным GPU и ML-фреймворком.

GPU и MLOps

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

MLOps-система может автоматически выделять ускорители для обучения, освобождать их после завершения задачи и масштабировать инференс.

Это важно, поскольку GPU часто является одним из наиболее дорогих ресурсов ML-инфраструктуры.

Хорошая автоматизация помогает уменьшать время простоя дорогостоящего оборудования.

Несколько GPU

Если одной видеокарты недостаточно, вычисления можно распределить между несколькими GPU.

Существует несколько подходов к распределению нагрузки.

ПодходСуть
Data ParallelismКопии модели обрабатывают разные части данных
Model ParallelismЧасти одной модели размещаются на разных устройствах
Pipeline ParallelismРазные этапы модели выполняются на разных GPU

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

Data Parallelism

При параллелизме данных на нескольких GPU размещаются копии одной модели.

Каждое устройство получает свою часть batch и рассчитывает градиенты.

После этого результаты синхронизируются, и параметры модели обновляются согласованно.

Так можно ускорить обучение на больших датасетах.

Model Parallelism

Если модель целиком не помещается в память одного GPU, ее можно разделить между несколькими устройствами.

Например, часть слоев размещается на первом ускорителе, а следующие — на втором.

Данные последовательно проходят через несколько устройств.

Такой подход позволяет запускать более крупные модели, но требует обмена данными между GPU.

GPU и связь между ускорителями

При использовании нескольких GPU производительность зависит не только от каждого устройства, но и от скорости обмена данными между ними.

Во время распределенного обучения параметры и градиенты могут постоянно передаваться между ускорителями.

Медленный канал связи способен стать узким местом всей системы.

Поэтому серверы для крупных ML-задач проектируются с учетом архитектуры межсоединений, а не только суммарного количества видеопамяти.

Что такое CUDA

CUDA — программная платформа и модель параллельных вычислений, позволяющая использовать совместимые GPU NVIDIA для задач общего назначения.

ML-фреймворки могут выполнять многие математические операции через CUDA вместо CPU.

Для разработчика высокого уровня работа часто скрыта за PyTorch или TensorFlow.

Однако совместимость драйверов, библиотек и программного окружения остается важной частью настройки GPU-сервера.

GPU и драйверы

Операционная система и приложения взаимодействуют с GPU через программные драйверы.

Для машинного обучения дополнительно используются библиотеки вычислений и соответствующий стек выбранного фреймворка.

Несовместимые версии могут привести к тому, что PyTorch или TensorFlow не увидит ускоритель.

Поэтому в производственных системах версии окружения фиксируются и тестируются.

Tensor Cores

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

Они особенно эффективны при выполнении матричных вычислений с определенными форматами чисел.

ML-фреймворки способны использовать такие блоки автоматически при подходящих настройках.

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

Числовая точность

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

Разные форматы чисел требуют разного количества памяти и вычислительных ресурсов.

Уменьшение точности может ускорить обучение и инференс и позволить разместить более крупную модель.

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

Mixed Precision

Mixed Precision означает использование нескольких форматов числовой точности в одной вычислительной задаче.

Например, часть операций выполняется в более компактном формате, а критичные вычисления — с большей точностью.

Это позволяет уменьшить использование памяти и эффективнее задействовать специализированные блоки GPU.

Такой подход часто применяется при обучении больших нейронных сетей.

GPU и квантование

Квантование уменьшает точность представления параметров модели.

Для LLM это позволяет сократить объем памяти и иногда ускорить инференс.

Например, модель, которая не помещается в память GPU в исходном формате, может поместиться после квантования.

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

Почему более мощный GPU не всегда означает более быструю систему

Производительность приложения зависит от всей архитектуры.

Узким местом могут быть CPU, загрузка данных с диска, сеть, недостаточный batch или неоптимизированный код.

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

Поэтому перед обновлением оборудования необходимо проводить профилирование.

Утилизация GPU

GPU Utilization показывает, насколько активно используются вычислительные ресурсы ускорителя.

Низкая утилизация может означать, что модель слишком маленькая, данные поступают медленно или batch недостаточен.

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

В ML-инфраструктуре полезно отслеживать несколько метрик одновременно.

Мониторинг GPU

При производственной эксплуатации контролируют не только загрузку вычислительных блоков.

  • использование видеопамяти;
  • загрузку GPU;
  • температуру;
  • энергопотребление;
  • скорость передачи данных;
  • ошибки оборудования;
  • latency инференса;
  • throughput приложения.

Такой мониторинг помогает обнаруживать узкие места и предотвращать сбои.

GPU в облаке

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

Облачная модель удобна для периодического обучения: ускоритель используется только несколько часов или дней, после чего ресурс отключается.

Для постоянной высокой нагрузки необходимо сравнивать стоимость аренды и собственной инфраструктуры.

Также важны доступность нужного типа ускорителя и стоимость хранения и передачи данных.

Собственный GPU-сервер

Покупка собственного оборудования дает компании больше контроля над инфраструктурой.

Это может быть выгодно при постоянной и хорошо прогнозируемой нагрузке.

Однако появляются расходы на серверы, электричество, охлаждение, обслуживание и резервирование.

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

GPU и энергопотребление

Производительные графические ускорители потребляют значительное количество электроэнергии.

В крупном дата-центре это влияет не только на прямые расходы, но и на требования к электропитанию и охлаждению.

Поэтому эффективность модели измеряется не только скоростью.

Иногда меньшая оптимизированная модель обеспечивает нужное качество при значительно более низкой стоимости эксплуатации.

Как выбрать GPU для машинного обучения

Шаг 1. Определить модель

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

Шаг 2. Оценить память

Следует рассчитать объем памяти для весов, активаций, batch и других компонентов.

Шаг 3. Определить режим работы

Обучение и инференс имеют разные требования.

Шаг 4. Оценить нагрузку

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

Шаг 5. Проверить программную совместимость

Фреймворк и библиотеки должны поддерживать выбранное оборудование.

Шаг 6. Рассчитать стоимость

Необходимо учитывать не только цену GPU, но и электричество, сервер, сеть и обслуживание.

GPU для обучения и инференса

Требования к оборудованию отличаются в зависимости от сценария.

ПараметрОбучениеИнференс
ПамятьОбычно требуется большеЧасто требуется меньше
Вычислительная нагрузкаОчень высокаяЗависит от количества запросов
ГрадиентыНужныОбычно не нужны
ОптимизаторНуженНе нужен
Главный критерийСкорость обученияLatency, throughput и стоимость

Когда GPU не нужен

Не каждую задачу машинного обучения нужно запускать на графическом ускорителе.

Небольшая линейная модель, дерево решений или обычная бизнес-логика могут прекрасно работать на CPU.

Если сервис делает несколько прогнозов в минуту, приобретение дорогого ускорителя может не окупиться.

GPU следует использовать там, где параллельные вычисления действительно дают практический эффект.

Типичные ошибки при выборе GPU

  1. Смотреть только на название модели GPU.
  2. Не учитывать объем видеопамяти.
  3. Путать требования обучения и инференса.
  4. Не учитывать размер KV-кэша для LLM.
  5. Покупать GPU для задачи, которую эффективно решает CPU.
  6. Не проверять совместимость программного стека.
  7. Игнорировать энергопотребление и охлаждение.
  8. Не учитывать скорость связи между несколькими GPU.
  9. Сравнивать только теоретическую производительность.
  10. Не измерять реальную утилизацию после запуска.

Основные риски

РискПроблемаКак снизить
Недостаток VRAMМодель не помещается в памятьКвантование, меньший batch или несколько GPU
Низкая загрузкаДорогое оборудование простаиваетПрофилирование и оптимизация pipeline
Высокая стоимостьИнфраструктура становится невыгоднойСравнивать облако и собственные серверы
ПерегревСнижается стабильность и производительностьКорректное охлаждение
Несовместимость ПОФреймворк не использует ускорительФиксировать версии драйверов и библиотек
Узкое место сетиНесколько GPU медленно обмениваются даннымиПодбирать подходящую серверную архитектуру

Практический пример

Компания хочет запустить корпоративного ИИ-помощника на собственной инфраструктуре.

Выбранная языковая модель занимает значительный объем памяти. При запуске на CPU ответы формируются слишком медленно для интерактивного использования.

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

Разработчики уменьшают точность весов с помощью квантования, ограничивают избыточно длинный контекст и настраивают batching.

После этого один сервер способен обслуживать больше пользователей без добавления второго ускорителя.

Таким образом, итоговая производительность определяется не только самим GPU, но и оптимизацией модели и всего процесса инференса.

GPU и стоимость ИИ

Графические ускорители являются значительной частью затрат при создании собственных ИИ-сервисов.

На этапе обучения стоимость определяется количеством GPU и временем их использования.

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

Поэтому оптимизация модели может иметь такой же экономический эффект, как покупка более производительного оборудования.

GPU и генеративный ИИ

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

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

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

Качество результата определяется архитектурой и параметрами модели, данными и алгоритмом инференса.

GPU и нейросеть

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

Одну и ту же сеть в некоторых случаях можно запустить как на CPU, так и на GPU.

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

Поэтому нельзя использовать понятия GPU и нейросеть как синонимы.

Связанные термины

ТерминСвязь с GPU
CPUЦентральный процессор, выполняющий универсальные вычисления
VRAMПамять, используемая графическим процессором
CUDAПлатформа параллельных вычислений на совместимых GPU
TensorFlowМожет использовать GPU для ML-вычислений
PyTorchПоддерживает обучение и инференс на GPU
НейросетьСодержит вычисления, которые часто ускоряются GPU
ИнференсМожет выполняться на GPU для повышения скорости
КвантованиеПозволяет уменьшить требования модели к памяти
MLOpsПомогает управлять GPU-инфраструктурой
Большая языковая модельЧасто требует GPU для эффективного запуска

Краткий итог

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

В ML-проектах важны не только вычислительная производительность GPU, но и объем видеопамяти, поддерживаемые числовые форматы, программная совместимость и скорость обмена данными между устройствами.

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

Частые вопросы

6 вопросов
Что такое GPU простыми словами?

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

Чем GPU отличается от CPU?

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

Зачем GPU нужен для искусственного интеллекта?

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

Что такое VRAM и почему она важна?

VRAM — память графического процессора. В ней размещаются параметры модели, входные данные и промежуточные вычисления. Если доступной видеопамяти недостаточно, модель может не запуститься или потребуется квантование, уменьшение batch либо распределение между несколькими GPU.

Всегда ли для машинного обучения нужен GPU?

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

Можно ли запустить большую языковую модель без GPU?

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

Была ли статья полезна?
Документ обновляется командой EFSOL. Свяжитесь с нами, если нашли неточность.
Нужна консультация?

Поможем спроектировать, развернуть и сопроводить облачную или гибридную инфраструктуру под задачи вашего бизнеса.

Ответим в течение часа в рабочее время
Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.