167 lines
20 KiB
Markdown
167 lines
20 KiB
Markdown
# NPU, Copilot+ PC и нейросети. Использую NPU в повседневной жизни.
|
||
|
||
Год назад я приобрел ноутбук категории 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 - количество триллионов операций в секунду.
|
||
|
||
Первыми представленными устройствами из этой категории, были ноутбуки на основе мобильного процессора Snapdragon X Elite. Позже подтянулись устройства на AMD с линейкой Ryzen AI и Intel с Meteor Lake. Да, все эти процессоры мобильные и предназначены для ноутбуков.
|
||
|
||
Но процессоры с NPU будут не только для ноутбуков. Уже сейчас можно найти такие процессоры для установки в обычный ПК, хотя до массового распространения, кажется, еще далеко.
|
||
|
||
## ИИ-функции Windows 11
|
||
|
||
Вместе с презентацией Copilot+ PC, Microsoft рассказали об ИИ-функциях в Windows 11. И это были самые странные обещания. Да, именно обещания, потому что рассказать - не значит сделать. Часть из представленных функций до сих пор либо нет, либо они в бете и не доступны в РФ.
|
||
|
||
Все представленные ИИ-функции должны работать локально на устройстве, как раз благодаря тому самому NPU.
|
||
|
||
Далее я расскажу лишь о некоторых таких функциях, которые сам опробовал или по крайней мере пытался.
|
||
|
||
### Recall
|
||
|
||
Одной из наиболее интересных, для меня, стала функция [Recall](https://support.microsoft.com/en-us/windows/retrace-your-steps-with-recall-aa03f8a0-a78b-4b3e-b0a1-2eb8ac48701c) - она периодически делает снимки экрана и сохраняет их, создавая историю использования устройства.
|
||
|
||
Затем можно выполнить ИИ-поиск по снимкам. Хранятся они до 3-х месяцев.
|
||
|
||
Функция, как и было заявлено, работает полностью локально. Встроенный ИИ обрабатывает снимки, которые затем в зашифрованном виде сохраняются на диск. Снимки делаются раз в 10-15 секунд, это видно по использованию NPU в диспетчере задач.
|
||
|
||
Работает функция незаметно, влияния на производительность системы нет, т.к. задействуется в основном NPU. Но все же есть то, что понравится далеко не всем. Для работы функции требуется включить шифрование устройства.
|
||
|
||
> Шифрование устройства (BitLocker) - защищает данные на дисках, путем их шифрования. Но по данным тестов, в некоторых случаях, из-за шифрования, скорость работы диска снижалась до 45%.
|
||
|
||

|
||
|
||
Просмотр и поиск снимков работает интересно и вполне неплохо. Можно человеческим запросом найти снимки, выделить на них текст и получить разные подробности.
|
||
|
||
Но зачем это нужно? Я считаю, что функция бесполезна. Она несомненно необычная и интересная, но совершенно бесполезная. За пол года работы Recall, ни разу не воспользовался им по реальной нужде. По этому функцию благополучно отключил.
|
||
|
||
### 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) - она позволяет анализировать и копировать текст на экране.
|
||
|
||

|
||
|
||
Текст определяет не идеально, есть ошибки, но в целом хорошо, периодически выручает.
|
||
|
||
Работает это так: нажав определенное сочетание клавиш, создается снимок экрана, который быстро (буквально за пол секунды) прогоняется через нейросеть. Работает все так же локально, на NPU.
|
||
|
||
### Paint с Copilot
|
||
|
||
Про эти ИИ-функции не смогу много рассказать, т.к. в РФ они не работают. Но зайдя в Paint, можно увидеть отдельную вкладку с различными функциями Copilot.
|
||
|
||

|
||
|
||
Для работы функций, требуется установить Image Generation Extension из Microsoft Store, но, как уже сказал, в РФ это расширение недоступно.
|
||
|
||
По описанию эти функции выглядят интересно, хотя далеко не новинка, кажется такое мы уже давно видим в смартфонах.
|
||
|
||
### Вывод об ИИ-функциях
|
||
|
||
Я рассказал об этих функциях только для того, чтобы Вы могли понять их философию. Они не дают каких-то невероятных и прорывных возможностей. Но они есть, их можно использовать локально и благодаря NPU Ваша система не будет нагружаться.
|
||
|
||
Данные ИИ-функции не несут большой практической пользы, но задают направление развития. Они показывают, что так можно делать и очень хочется верить, что в будущем таких функций будет больше и они будут полезными.
|
||
|
||
# Neural Processing Unit
|
||
|
||
Как ранее уже упомянул, NPU - это сопроцессор, предназначенный для нейронных вычислений. Не буду углубляться в техническую архитектуру и различия меду CPU, GPU и NPU. Об этом можно найти достаточно материала как на хабре, так и на других ресурсах.
|
||
|
||
NPU может в десятки раз проигрывать GPU по производительности, но выигрывает в мобильности и энергоэффективности.
|
||
|
||
Чтобы понять предназначение NPU, давайте немного разберемся в нейросетях. В них можно выделить два основных этапа: обучение и выполнение.
|
||
|
||
Обучение - процесс тяжелый и требует больших вычислительных ресурсов, по этому для них используются различные ускорители, в том числе видеокарты.
|
||
|
||
После обучения, нейросеть попадает к пользователю (сейчас мы говорим о локальных нейросетях) для работы и выполнения своих задач. На этом этапе все еще требуется значительная вычислительная мощность, но видеокарты уже не являются предпочтительным вариантом, т.к. они совершенно не мобильные и имеют высокое энергопотребление.
|
||
|
||
При чем тут мобильность? Дело в том, что нейросети не всегда используются только в ПК. Есть, например, устройства умного дома, на некоторых из них работают локальные нейросети и запихнуть туда видеокарту явно не получится. К тому же, страшно представить, какое будет энергопотребление.
|
||
|
||
Но мы, все же, в подавляющем большинстве говорим о ПК. Тут мобильность не так важна, но важно другое - ресурсы. Я бы не хотел, чтобы нейросети, работающие в фоновом режиме, съедали ресурсы GPU и CPU.
|
||
|
||
И тут в дело вступает NPU в виде отдельного сопроцессора, который не затрагивает ресурсы CPU и GPU, достаточно мобильный и потребляет меньше энергии. Но, конечно, все это бьет по производительности самого NPU.
|
||
|
||
# Тестируем NPU
|
||
|
||
Самый простой и понятный способ тестирования, который я нашел, это запустить LLM. Конечно это совсем другая категория нейросетей, в сравнении с ИИ-функциями, о которых рассказывал ранее. Но другой понятный способ тестирования найти сложно, учитывая что ПО для работы с NPU на данный момент не так много.
|
||
|
||
Даже с запуском LLM на NPU все оказалось далеко не так просто, но прежде чем перейти к деталям, рассмотрим характеристики устройства.
|
||
|
||
## Характеристики устройства
|
||
|
||
В качестве рабочего устройства используется ноутбук со следующими характеристиками:
|
||
|
||
| Характеристика | Значение |
|
||
| --------------------------- | ------------------------------------------ |
|
||
| Процессор | AMD Ryzen AI 9 HX 370 |
|
||
| NPU TOPS | 50 |
|
||
| Оперативная память | 32гб LPDDR5x, распаяна на плате в 4 гнезда |
|
||
| Скорость оперативной памяти | 7500 |
|
||
| Память NPU | 16гб (заимствует оперативную память) |
|
||
Более подробные характеристики о ноутбуке можно посмотреть [тут](https://www.dns-shop.ru/product/2d49546e2d22d582/16-noutbuk-asus-vivobook-s-m5606wa-mx019w-cernyj/).
|
||
|
||
Обратите внимание, что поскольку NPU не имеет большого объема собственной памяти, как VRAM в GPU, он использует оперативную память, как это делает процессор.
|
||
|
||
Но объем оперативной память для NPU определен на аппаратном уровне, по этому расширению не подлежит. Это важная деталь, о которой позже поговорим.
|
||
|
||
## Как тестируем
|
||
|
||
Запуск локальной LLM на процессорах AMD Ryzen AI оказался непростой задачей. Тут важно уточнить, что процессоры AMD являются далеко не единственными представителями, имеющими NPU. У других производителей использование NPU может и скорей всего будет совершенно другим. AMD в этом плане имеет свои особенности и именно о них мы далее будем говорить.
|
||
|
||
И так, задача запуска LLM на NPU оказалась нетривиальной. llama.cpp и как следствие LM Studio не поддерживает NPU, хотя спрос есть и [пользователи просят добавить поддержку](https://github.com/lmstudio-ai/lms/issues/30). ROCm работает только с GPU. DirectML направляет вычисления в NPU только при магических обстоятельствах.
|
||
|
||
Оставался только фирменный RyzenAI Software (его скачивание и установка само по себе как отдельный квест) и предварительно оптимизированная под NPU модель, с запуском через ONNX Runtime.
|
||
|
||
В конечном итоге я просто следовал инструкции от AMD и таки смог запустить модель. Вот [тут](https://github.com/amd/RyzenAI-SW/tree/main/LLM-examples) есть достаточно информации об этом.
|
||
|
||
Модель должна быть предварительно оптимизирована для работы на 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-Coder-7B-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-Coder-7B-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 в повседневных задачах.
|
||
|
||
Я показал что из себя представляет NPU на персональных устройствах в данный момент, а выводы для себя делайте сами. Спасибо за прочтение. |