137 lines
16 KiB
Markdown
137 lines
16 KiB
Markdown
# Введение
|
||
|
||
Год назад я приобрел ноутбук категории Copilot+ PC с процессором [AMD Ryzen AI 9 HX 370](https://www.amd.com/en/products/processors/laptop/ryzen/ai-300-series/amd-ryzen-ai-9-hx-370.html). Тогда такие устройства были в новинку, да и сейчас не сильно распространены. Прошло достаточно времени и теперь хочу рассказать о том, что из себя представляют устройства такого типа.
|
||
|
||
Статью можно разделить на две части. Сначала расскажу об опыте использования Copilot+ PC и его функций в рамках Windows 11, а потом углубимся в NPU, разберемся что оно из себя представляет и даже проведем тестирование с запуском LLM.
|
||
|
||
# Copilot+ PC
|
||
|
||
В мае 24-го года Microsoft представили новую категорию устройств [Copilot+ PC](https://www.microsoft.com/en-us/windows/copilot-plus-pcs?r=1). Главная особенность таких устройств - процессор с NPU на 40+ TOPS для работы локальных нейросетей, которые в том числе будут встроены в Windows 11 и доступны только на этих устройствах.
|
||
|
||
NPU (Neural Processing Unit) - это отдельный сопроцессор, предназначенный для нейронных вычислений. Не редко мощность NPU измеряется в TOPS - количество триллионов операций в секунду.
|
||
|
||
## ИИ-функции Windows 11
|
||
|
||
Стоит отметить, что на момент покупки ноутбука этих функций в Windows 11 не было и появлялись они со временем. Хотя даже сейчас далеко не все функции доступны.
|
||
|
||
Далее я расскажу лишь о некоторых таких ИИ-функциях, которые сам пощупал или по крайней мере пытался пощупать.
|
||
|
||
### Recall
|
||
|
||
Одной из наиболее интересных, для меня, стала функция [Recall](https://support.microsoft.com/en-us/windows/retrace-your-steps-with-recall-aa03f8a0-a78b-4b3e-b0a1-2eb8ac48701c) - она периодически делает снимки экрана и сохраняет их, создавая историю использования устройства.
|
||
|
||
Затем можно выполнить ИИ-поиск по этим снимкам, котороые хранятся вплодь до 3-х месяцев.
|
||
|
||
Конечно в такой функции пользователей больше всего волнует конфиденциальность. Первое время с этим были проблемы, но сейчас Recall имеет вполне гибкие настройки и неплохую безопасность.
|
||
|
||
Кроме того, именно для этого нужен NPU, который позволяет обрабатывать снимки локально, так что они не покидают устройства.
|
||
|
||
Но в этой статье я не буду подробно затрагивать безопасность, это тема для отдельной статьи, по этому ограничимся общим описанием.
|
||
|
||
Сама функция работает вполне неплохо. Но больше всего волновало "а для чего использовать?". За пол года так ни разу не воспользовался поиском в Recall, просто не было нужды, хотя он работал, снимки делал и действительно позволял заглянуть на 3 месяца назад. За ненадобностью функция была благополучно отключена.
|
||
|
||
### Click to do
|
||
|
||
Другой, действительно полезной, оказалась функция [Click to do](https://support.microsoft.com/en-us/windows/click-to-do-do-more-with-what-s-on-your-screen-6848b7d5-7fb0-4c43-b08a-443d6d3f5955) - она позволяет анализировать текст на экране, даже если он на картинке.
|
||
|
||
Текст определяет не идеально, есть ошибки, но в целом хорошо, периодически выручает.
|
||
|
||
Не хватает возможности выделить фрагмент на экране и найти по нему информацию в интернете, подобно Circle to Search на смартфонах Android. Но можно быстро выполнить поиск по тексту, найденному на экране.
|
||
|
||
### Что еще
|
||
|
||
Есть еще несколько функций, таких как Cocreator и Restyle Image, которые помогают рисовать и изменять изображения соответственно, но на данный момент в РФ они не доступны.
|
||
|
||
Сам Copilot, который должен работать локально, так и не нашел. Предлагают только Microsoft 365 Copilot, но это уже совсем другое.
|
||
|
||
# Neural Processing Unit
|
||
|
||
Как ранее уже упомянул, NPU - это сопроцессор, предназначенный для нейронных вычислений. Не буду углубляться в техническую архитектуру и различия меду CPU, GPU и NPU. Об этом можно найти достаточно материала как на хабре, так и на других ресурсах.
|
||
|
||
NPU может в десятки раз проигрывать GPU по производительности, так зачем он нужен?
|
||
|
||
Чтобы разобраться в этрм, немного разберем нейросети. В них можно выделить два основных этапа: обучение и выполнение.
|
||
|
||
Обучение - процесс тяжелый и требует больших вычислительных ресурсов, по этому для них используются различные ускорители, в том числе видеокарты.
|
||
|
||
После обучения, нейросеть попадает к пользователю (сейчас мы говорим о локальных нейросетях) для работы и выполнения своих задач. На этом этапе все еще требуется значительная вычислительная мощность, но видеокарты уже не являются предпочтительным вариантом, т.к. они совершенно не мобильные и имеют высокое энергопотребление.
|
||
|
||
Например, я не хочу, чтобы в процессе работы, нейросети работающие в фоне, съедали все ресурсы устройства, тем самым мешая работать.
|
||
|
||
И тут в дело вступает NPU в виде отдельного сопроцессора, который не затрагивает ресурсы CPU и GPU. Он потребляет меньше энергии, но и производительности значительно ниже, чем у GPU.
|
||
|
||
# Тестируем NPU
|
||
|
||
А теперь посмотрим на производительность NPU на практике.
|
||
|
||
Мне, как разработчику, хочется иметь собственную LLM, для решения небольших задач, но так, чтобы она не сжирала весь бюджет за час. Локальная LLM - отличный вариант. Кроме того, работа на NPU означает, что CPU и GPU не будут затронуты и моей работе ничего не помешает.
|
||
|
||
Далее запустим несколько LLM на NPU, но перед этим рассмотрим характеристики устройств и углубимся в детали.
|
||
|
||
## Характеристики устройства
|
||
|
||
В качестве рабочего устройства используется ноутбук со следующими характеристиками:
|
||
|
||
| Процессор | AMD Ryzen AI 9 HX 370 |
|
||
| --------------------------- | ------------------------------------------ |
|
||
| NPU TOPS | 50 |
|
||
| Оперативная память | 32гб LPDDR5x, распаяна на плате в 4 гнезда |
|
||
| Скорость оперативной памяти | 7500 |
|
||
| Оперативная память для NPU | 16гб (заимствует оперативную память) |
|
||
Обратите внимание, что поскольку NPU не имеет большого объема собственной памяти, как VRAM в GPU, он использует оперативную память, как это делает процессор.
|
||
|
||
Но объем оперативной память для NPU определен на аппаратном уровне, по этому расширению не подлежит. Это важная деталь, о которой позже поговорим.
|
||
|
||
## Как тестируем
|
||
|
||
Запуск локальной LLM на процессорах AMD Ryzen AI оказался непростой задачей. Тут важно уточнить, что процессоры AMD являются далеко не единственными представителями, имеющими NPU. У других производителей использование NPU может и скорей всего будет совершенно другим. AMD в этом плане имеет свои особенности и именно о них мы далее будем говорить.
|
||
|
||
И так, задача запуска LLM на NPU оказалась нетривиальной. Я перебрал не мало вариантов и таки смог запустить, установив RyzenAI Software (его скачивание и установка само по себе как отдельный квест) и запустив предварительно оптимизированную под NPU модель через ONNX Runtime.
|
||
|
||
Почему ONNX Runtime, а не, например, LM Studio? Дело в том, что llama.cpp, как и LM Studio в целом, не поддерживают NPU. Хотя спрос есть и [пользователи просят добавить поддержку](https://github.com/lmstudio-ai/lms/issues/30), но на данный момент это невозможно.
|
||
|
||
Есть альтернативный вариант - запуск через DirectML, но как бы ни пытался, задействовать NPU не удалось. В конечном итоге я просто следовал инструкции от AMD и таки смог запустить модель.
|
||
|
||
Кроме того, модель должна быть предварительно оптимизирована для работы на NPU. Благо AMD предоставляют некоторое количество таких моделей. Со списком можно ознакомиться [тут](https://huggingface.co/collections/amd/ryzen-ai-17-npu-llm).
|
||
|
||
Для тестирования выбрал 3 модели: [Phi-3.5-mini-instruct](https://huggingface.co/amd/Phi-3.5-mini-instruct-onnx-ryzenai-npu), [Qwen2.5-Coder07B-Instruct](https://huggingface.co/amd/Qwen2.5-Coder-7B-Instruct-onnx-ryzenai-npu) и [gpt-oss-20b](https://huggingface.co/amd/gpt-oss-20b-onnx-ryzenai-npu). Разберем результаты для каждой модели отдельно.
|
||
|
||
### Phi-3.5-mini-instruct
|
||
|
||
При запуске, модель потребляет 2.7гб памяти. После начала генерации, потребление памяти повышается до 4-4.5гб, скорей всего выделяется память для вычислительных буферов.
|
||
|
||
В среднем NPU генерирует 12 tps (токенов в секунду). Это не много, например видеокарта NVIDIA GeForce RTX 3060 может выдавать 100+ tps для этой же модели.
|
||
|
||
Во время генерации используется 90-100% NPU.
|
||
|
||

|
||
|
||
### Qwen2.5-Coder07B-Instruct
|
||
|
||
Эта модель уже потребляет 5.4гб памяти и почти 6гб после начала генерации. Генерирует в среднем 10-11 tps. И нагружает NPU так же на 90-100%.
|
||
|
||

|
||
|
||
### gpt-oss-20b
|
||
|
||
Эта модель уже потребляет почти 13гб памяти и что интересно, после начала генерации это значение никак не меняется. Что еще более интересно, график показывает использование NPU в пределах 60-70%. Но генерация особо не падает, в среднем 10-11 tps.
|
||
|
||
Почему происходит такое поведение с большими моделями - мне не известно. Возможно найдутся знатоки в комментариях, буду благодарен за объяснение.
|
||
|
||

|
||
|
||
Запустить модели большего размера не представляется возможным. Как писал ранее, память NPU ограничена 16гб и изменить это нельзя. Кроме того, это самая большая оптимизированная для NPU модель, которую мне удалось найти.
|
||
|
||
## Итоги тестирования
|
||
|
||
Конечно все протестированные модели можно использовать только для решения простых задач. На сложных они начинают галлюцинировать из-за нехватки контекста. Но что можно было ожидать от локальной LLM?
|
||
|
||
Во всяком случае такой модели можно не бояться скормить конфиденциальные данные и не беспокоиться о нагрузке на устройство, благодаря NPU.
|
||
|
||
Скорость генерации тоже оставляет желать лучшего, но опять же, для простых задач этого вполне хватит и вновь скажу, что поскольку основные ресурсы устройства (CPU и GPU) не задействуются, есть возможность запустить такую LLM для работы в фоновом режиме.
|
||
|
||
# Заключение
|
||
|
||
NPU - это неплохой сопроцессор для работы фоновых нейронных процессов, которые требуют не быстрого результата, а экономной работы без перегрузки устройства.
|
||
|
||
И такие фоновые нейронные процессы это не только про LLM. В качестве хорошего примера у нас уже есть ИИ-функции в Windows 11 на устройствах категории Copilot+ PC. Хотя, как по мне, многие из этих функций не являются супер полезными, они все же задают правильное направление для использования NPU в повседневных задачах. |