В ряде задач производительность упирается не в скорость вычислений, а в обмен данными с памятью. Решить эту проблему можно, если выполнять часть операций прямо там, где хранятся данные. Например, в своей LPDDR5X-PIM Samsung разместила вычислительные блоки внутри банков DRAM, чтобы часть данных не приходилось каждый раз отправлять процессору или ускорителю. Разберем, как это работает, какие операции можно перенести в память и что технология дала в тесте Llama 3.1 8B.
Почему передача данных между памятью и процессором становится проблемой
Обычно данные хранятся в памяти, а процессор или ускоритель постоянно забирает их для обработки и возвращает результаты обратно. Если вычислительные блоки работают быстрее, чем память успевает передавать им данные, начинается задержка вычислений.

Особенно хорошо это видно на примере нейросетей. Для работы модели ускорителю приходится постоянно получать из памяти ее веса и другие необходимые данные. Чем больше их объем, тем больше времени и энергии уходит на перемещение информации между памятью и ускорителем. Простое увеличение вычислительной мощности в такой ситуации уже не обязательно дает сопоставимый прирост скорости.
Один из способов ускорить этот обмен — выполнять часть операций там же, где хранятся данные. На этом и основана технология PIM, или Processing-in-Memory: память не только хранит информацию, но и берет на себя некоторые вычисления.
Как удалось перенести часть вычислений внутрь LPDDR5X
В LPDDR5X-PIM Samsung разместила по одному вычислительному блоку в каждом из 16 банков памяти. Они работают параллельно с данными внутри этих банков и поддерживают вычисления в форматах FP8, INT8 и INT4. В частности, память умеет выполнять умножение матрицы на вектор — операцию, которая часто используется в нейросетях. Емкость представленного Samsung чипа составляет 16 ГБ.

В результате меняется сам путь данных. В обычной LPDDR5X нужную информацию сначала приходится передать через внешний интерфейс памяти ускорителю, выполнить вычисление и при необходимости вернуть результат обратно. В LPDDR5X-PIM часть операций происходит прямо внутри памяти. Наружу передается уже результат, поэтому объем данных, проходящий между памятью и ускорителем, можно сократить.
Это дает PIM еще одно преимущество — доступ к данным внутри памяти оказывается намного шире внешнего канала. В конфигурации Samsung пропускная способность обычного интерфейса LPDDR5X составляет 76,8 ГБ/с, тогда как суммарная внутренняя пропускная способность PIM достигает примерно 614 ГБ/с. Разница примерно в восемь раз.
Дополнительные 614 ГБ/с доступны только PIM-блокам и только для тех операций, которые выполняются внутри памяти. Поэтому итоговый прирост зависит от того, какую часть вычислений удается перенести в PIM.
Что показали испытания на Llama 3.1 8B
Чтобы проверить, насколько PIM помогает в реальной задаче, Samsung сравнила обычную LPDDR5X и LPDDR5X-PIM при работе с языковой моделью Llama 3.1 8B. В обоих случаях использовался один и тот же ИИ-ускоритель Samsung, а контекст модели составлял 320 токенов.
Результат оказался заметным. С обычной LPDDR5X система генерировала 27 токенов в секунду, а с LPDDR5X-PIM — 81,3 токена в секунду. Скорость выросла примерно втрое. Общее время теста при этом сократилось с 12,3 до 5,4 секунды.

561-контактный корпус LPDDR5X-PIM соответствует стандарту JEDEC. То есть модуль памяти совместим с обычной LPDDR5X, и его можно использовать в существующих системах без необходимости замены платформы.
LPDDR5X-PIM будет полезен в задачах, где одни и те же данные приходится постоянно читать из памяти и обрабатывать сравнительно простыми операциями. К таким сценариям относятся, например, инференс нейросетей с большим объемом весов, фильтрация больших баз данных, обработка изображений и видео, некоторые задачи криптографии.
Пока, это безусловно, больше демонстрация возможностей технологии, серийных модулей или готовых устройств еще нет.
А вы бы попробовали PIM в реальной инфраструктуре или "ну его эти ваши хитрые штуки, которых нет в реальности )) "?