VRAM
video RAM — рабочая память графического процессора
VRAM хранит данные, с которыми графический процессор работает прямо сейчас: веса модели, активации, кадры и временные буферы. Чем больше данных помещается рядом с GPU, тем реже их приходится переносить из системной памяти.
Коротко
Коротко. VRAM — память, доступная графическому процессору с высокой пропускной способностью. Во время работы AI-модели в ней находятся веса, промежуточные результаты и служебные буферы. Если места не хватает, программа меняет способ размещения данных, переносит часть в RAM или завершает операцию с ошибкой нехватки памяти.
Что это такое
У GPU есть вычислительные блоки, но сами по себе они ничего не хранят надолго. Числа для очередной операции должны находиться в памяти, откуда процессор сможет быстро их прочитать и куда запишет результат.
У дискретной видеокарты такой рабочей областью служит VRAM — Video Random Access Memory. Она расположена на самой карте и связана с GPU собственной шиной памяти.
У встроенной графики устройство может быть другим: графический процессор использует часть общей системной памяти. В системах с единой памятью CPU и GPU обращаются к общему пулу, хотя правила распределения и скорость доступа всё равно зависят от архитектуры.
Для локальных AI-задач объём VRAM задаёт не качество модели, а размер рабочего набора, который удобно держать возле GPU без частых переносов.
Что занимает VRAM
Файл модели на диске — лишь часть истории. Во время запуска появляются дополнительные данные.
Веса модели
Это параметры, выученные во время обучения. Их размер зависит от количества параметров и числового формата. Более компактное представление уменьшает память под веса, но не обязательно сокращает весь расход в той же пропорции.
Активации
Каждый слой получает вход, вычисляет новый тензор и передаёт его дальше. Часть промежуточных результатов остаётся в памяти до тех пор, пока не перестанет быть нужна. Их объём меняется вместе с размером изображения, пакета, последовательности и архитектурой сети.
Входы и выходы
Изображения, латенты, токены, маски, управляющие карты и готовые результаты тоже занимают место. В сложном пайплайне одновременно могут работать несколько моделей и несколько наборов условий.
Рабочие буферы
Библиотеки создают временную память для матричных операций, attention, свёрток и преобразований форматов. Драйвер, вычислительный контекст и кэш распределителя добавляют свой расход.
Данные для обучения
Во время обучения кроме весов нужны градиенты, состояния оптимизатора, сохранённые активации и другие служебные тензоры. Поэтому обучение обычно требует заметно больше памяти, чем простой запуск той же сети, но универсального множителя здесь нет.
Почему VRAM ускоряет работу
GPU выполняет много операций параллельно и постоянно читает большие массивы чисел. Быстрая локальная память позволяет снабжать вычислительные блоки данными без длинного пути через системную память.
Когда часть весов или промежуточных тензоров находится в RAM, их приходится передавать между устройствами. У такого обмена есть собственная пропускная способность и задержка. Если перенос происходит один раз, влияние может быть небольшим. Если одни и те же слои ездят туда и обратно на каждом шаге, ожидание становится заметной частью времени.
Поэтому offload — не «медленный режим видеокарты», а способ выполнить задачу с рабочим набором, который не помещается целиком в локальную память. Скорость зависит от объёма и частоты передач, связи между устройствами и реализации пайплайна.
Что происходит при нехватке памяти
Единого сценария нет. Программа может:
- освободить кэш и уже ненужные тензоры;
- использовать меньшие блоки данных или обрабатывать их по частям;
- хранить часть весов в RAM и подгружать их перед вычислением;
- распределить модули между несколькими устройствами;
- перенести данные на диск как крайнюю ступень хранения;
- остановиться с ошибкой OOM — out of memory.
Некоторые стратегии почти не меняют результат, но увеличивают время. Другие меняют числовую точность, размер входа или устройство вычислений, поэтому способны повлиять и на выход.
От чего зависит пиковый расход
Две задачи с одной моделью могут требовать разный объём VRAM. На пик влияют:
- разрешение изображения или длина последовательности;
- количество примеров, обрабатываемых вместе;
- точность весов и вычислений;
- число одновременно загруженных моделей и адаптеров;
- сохранение активаций для обратного прохода;
- выбранный алгоритм операции и размер его рабочей области;
- кэш, фрагментация и порядок запуска этапов;
- копии тензоров при преобразовании форматов или устройств.
Поэтому вопрос «сколько памяти нужно этой модели» обычно имеет ответ только вместе с режимом работы, размером входа и конкретным пайплайном.
VRAM, RAM и накопитель
Эти уровни памяти выполняют разные роли.
VRAM находится ближе всего к дискретному GPU и обслуживает его рабочие данные.
RAM — основная память компьютера. В ней работает процессор и могут временно храниться части модели, ожидающие передачи на ускоритель.
Накопитель хранит файлы между запусками. Некоторые системы умеют читать с него веса по мере необходимости, но даже быстрый SSD не становится заменой локальной памяти GPU.
В архитектурах с общей памятью граница между VRAM и RAM менее буквальна. Однако доступный объём, резервирование системой и пропускная способность по-прежнему ограничивают размер задачи.
Объём и скорость — разные свойства
Ёмкость отвечает на вопрос, сколько данных может находиться в памяти одновременно. Пропускная способность — как быстро GPU получает и записывает эти данные. Задержка описывает время отдельного обращения.
Большой объём не гарантирует быстрых вычислений, а высокая пропускная способность не помогает вместить рабочий набор, который физически больше доступной памяти. Для реальной задачи важны и GPU, и память, и связь с другими устройствами.
Несколько видеокарт
Память двух карт не превращается автоматически в один общий лоток. Каждый GPU обычно видит собственную локальную память.
Пайплайн может разделить слои, тензоры или пакеты между устройствами. Тогда задача использует суммарные ресурсы, но появляются передачи и синхронизация. Если программа не поддерживает такое распределение, две карты с одинаковым объёмом останутся двумя отдельными устройствами, а не одной картой с удвоенной VRAM.
С чем часто путают
- С системной RAM. Она может помогать при offload, но для дискретного GPU находится на другом уровне памяти.
- С общей графической памятью в диспетчере системы. Эта цифра нередко включает часть RAM, которую драйвер способен предоставить GPU. Она не равна физической памяти на видеокарте.
- С памятью файла на диске. Размер checkpoint не показывает активации, рабочие буферы и пиковые копии.
- С вычислительной мощностью. VRAM хранит данные, а скорость арифметики определяется другими блоками GPU.
- С кэшем. Библиотека может удерживать освобождённые блоки для повторного использования. Такая память выглядит занятой, хотя доступна собственному распределителю.
- С объединённой памятью нескольких карт. Без явного распределения задачи их объёмы не складываются.
Частые ошибки
- Оценивать задачу только по размеру весов. Пик часто создают активации или временный буфер.
- Считать всю занятую память утечкой. Часть может быть зарезервированным кэшем, который ускоряет следующие операции.
- Ожидать одинакового расхода от разных реализаций. Алгоритмы и порядок выполнения меняют пиковые аллокации.
- Полагать, что offload всегда замедляет одинаково. Цена зависит от того, сколько данных и как часто передаётся.
- Сравнивать только номинальный объём. Некоторую память занимают дисплей, драйвер и вычислительный контекст.
- Путать среднее использование с пиком. Ошибка OOM возникает в момент самой требовательной операции, даже если до неё график выглядел спокойно.
Частые вопросы
Сколько VRAM нужно для AI?
Универсального числа нет. Оно зависит от модели, формата весов, режима инференса или обучения, размера входа, пакета и оптимизаций. Надёжнее смотреть на пиковый расход конкретного сценария, а не на название модели без контекста.
Почему доступно меньше памяти, чем написано в характеристиках?
Часть занимает графическая система, драйвер и вычислительный контекст. Кроме того, программы резервируют блоки заранее, чтобы не обращаться к драйверу при каждой операции.
Почему возникает OOM, хотя монитор показывает свободное место?
Новая операция может запросить один большой непрерывный блок, а свободная память разбита на меньшие участки. Возможны также скрытые аллокации библиотеки, задержка обновления монитора и резкий кратковременный пик.
Можно ли добавить VRAM отдельно?
На большинстве потребительских дискретных карт объём задаётся при производстве и не расширяется как обычная RAM. Практические варианты связаны с другой картой, распределением задачи или снижением её пикового расхода.
Квантизация решает проблему полностью?
Она может сильно уменьшить память под веса, но не убирает активации, входы и рабочие буферы. Итог зависит от того, какая часть расхода была главной.
Складывается ли память двух GPU?
Только если программа умеет распределять модель или данные между ними. Даже тогда память остаётся физически раздельной, а обмен между картами становится частью производительности.
Главное
VRAM — рабочая память графического процессора. В ней одновременно живут не только веса модели, но и активации, входы, выходы и временные буферы. Больший объём позволяет держать возле GPU более крупный рабочий набор и реже переносить данные, но скорость всей задачи определяет не одна цифра, а связка вычислений, памяти и пайплайна.