About npu

This commit is contained in:
2026-03-08 13:00:26 +03:00
parent 6824d03f74
commit 4f4afe1a1b
3 changed files with 55 additions and 29 deletions

View File

@@ -4,80 +4,104 @@
Статью можно разделить на две части. Сначала расскажу об опыте использования 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
Стоит отметить, что на момент покупки ноутбука этих функций в 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-х месяцев.
Затем можно выполнить ИИ-поиск по снимкам. Хранятся они до 3-х месяцев.
Конечно в такой функции пользователей больше всего волнует конфиденциальность. Первое время с этим были проблемы, но сейчас Recall имеет вполне гибкие настройки и неплохую безопасность.
Функция, как и было заявлено, работает полностью локально. Встроенный ИИ обрабатывает снимки, которые затем в зашифрованном виде сохраняются на диск. Снимки делаются раз в 10-15 секунд, это видно по использованию NPU в диспетчере задач.
Кроме того, именно для этого нужен NPU, который позволяет обрабатывать снимки локально, так что они не покидают устройства.
Работает функция незаметно, влияния на производительность системы нет, т.к. задействуется в основном NPU. Но все же есть то, что понравится далеко не всем. Для работы функции требуется включить шифрование устройства. Что это такое, зачем нужно и какое имеет влияние на производительность, можно узнать в других статьях, ведь здесь это не основная тема.
Но в этой статье я не буду подробно затрагивать безопасность, это тема для отдельной статьи, по этому ограничимся общим описанием.
![](./img_4.png)
Сама функция работает вполне неплохо. Но больше всего волновало "а для чего использовать?". За пол года так ни разу не воспользовался поиском в Recall, просто не было нужды, хотя он работал, снимки делал и действительно позволял заглянуть на 3 месяца назад. За ненадобностью функция была благополучно отключена.
Просмотр и поиск снимков работает интересно, вполне неплохо. Можно человеческим запросом найти снимки, выделить на них текст и получить разные подробности.
Но зачем это нужно? Я считаю, что функция бесполезна. Она несомненно необычная и интересная, но совершенно бесполезная. За пол года работы 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) - она позволяет анализировать текст на экране, даже если он на картинке.
Другой, действительно полезной, оказалась функция [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. Но можно быстро выполнить поиск по тексту, найденному на экране.
Работает это так: нажав определенное сочетание клавиш, создается снимок экрана, который быстро (буквально за пол секунды) прогоняется через нейросеть. Работает все так же локально, на NPU.
### Что еще
### Paint с Copilot
Есть еще несколько функций, таких как Cocreator и Restyle Image, которые помогают рисовать и изменять изображения соответственно, но на данный момент в РФ они не доступны.
Про эти ИИ-функции не смогу много рассказать, т.к. в РФ он не работают. Но зайдя в Paint, можно увидеть отдельную вкладку с различными функциями Copilot.
Сам Copilot, который должен работать локально, так и не нашел. Предлагают только Microsoft 365 Copilot, но это уже совсем другое.
![](img_5.png)
Для работы функций, требуется установить Image Generation Extension из Microsoft Store, но, как уже сказал, в РФ это расширение недоступно.
### Вывод об ИИ-функциях
Я рассказал об этих функциях только для того, чтобы Вы могли понять их философию. Они не дают каких-то невероятных и прорывных возможностей. Но они есть, их можно использовать локально и благодаря NPU Ваша система не будет нагружаться.
Данные ИИ-функции не несут большой практической пользы, но задают направление развития. Они показывают, что так можно делать и очень хочется верить, что в будущем таких функций будет больше и они будут полезными.
# Neural Processing Unit
Как ранее уже упомянул, NPU - это сопроцессор, предназначенный для нейронных вычислений. Не буду углубляться в техническую архитектуру и различия меду CPU, GPU и NPU. Об этом можно найти достаточно материала как на хабре, так и на других ресурсах.
NPU может в десятки раз проигрывать GPU по производительности, так зачем он нужен?
NPU может в десятки раз проигрывать GPU по производительности, но выигрывает в мобильности и энергоэффективности.
Чтобы разобраться в этрм, немного разберем нейросети. В них можно выделить два основных этапа: обучение и выполнение.
Чтобы понять предназначение NPU, давайте немного разберемся в нейросетях. В них можно выделить два основных этапа: обучение и выполнение.
Обучение - процесс тяжелый и требует больших вычислительных ресурсов, по этому для них используются различные ускорители, в том числе видеокарты.
После обучения, нейросеть попадает к пользователю (сейчас мы говорим о локальных нейросетях) для работы и выполнения своих задач. На этом этапе все еще требуется значительная вычислительная мощность, но видеокарты уже не являются предпочтительным вариантом, т.к. они совершенно не мобильные и имеют высокое энергопотребление.
Например, я не хочу, чтобы в процессе работы, нейросети работающие в фоне, съедали все ресурсы устройства, тем самым мешая работать.
При чем тут мобильность? Дело в том, что нейросети не всегда используются только в ПК. Есть, например, такие устройства, как Яндекс Станции, на некоторых из них работают локальные нейросети и запихнуть туда видеокарту явно не получится. К тому же, страшно представить, какое будет энергопотребление.
И тут в дело вступает NPU в виде отдельного сопроцессора, который не затрагивает ресурсы CPU и GPU. Он потребляет меньше энергии, но и производительности значительно ниже, чем у GPU.
Но мы, все же, в подавляющем большинстве говорим о ПК. Тут мобильность не так важна, но важно другое - ресурсы. Я бы не хотел, чтобы нейросети, работающие в фоновом режиме, съедали ресурсы GPU и CPU.
И тут в дело вступает NPU в виде отдельного сопроцессора, который не затрагивает ресурсы CPU и GPU, достаточно мобильный и потребляет меньше электроэнергии. Но, конечно, все это бьет по производительности самого NPU.
# Тестируем NPU
А теперь посмотрим на производительность NPU на практике.
Самый простой и понятный способ тестирования, который я нашел, это запустить LLM. Конечно это совсем другая категория нейросетей, в сравнении с ИИ-функциями, о которых рассказывал ранее. Но другой понятный способ тестирования найти сложно, учитывая что ПО для работы с NPU на данный момент не так много.
Мне, как разработчику, хочется иметь собственную LLM, для решения небольших задач, но так, чтобы она не сжирала весь бюджет за час. Локальная LLM - отличный вариант. Кроме того, работа на NPU означает, что CPU и GPU не будут затронуты и моей работе ничего не помешает.
Далее запустим несколько LLM на NPU, но перед этим рассмотрим характеристики устройств и углубимся в детали.
Даже с запуском LLM на NPU все оказалось далеко не так просто, но прежде чем перейти к деталям, рассмотрим характеристики устройства.
## Характеристики устройства
В качестве рабочего устройства используется ноутбук со следующими характеристиками:
| Процессор | AMD Ryzen AI 9 HX 370 |
| Характеристика | Значение |
| --------------------------- | ------------------------------------------ |
| Процессор | 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 определен на аппаратном уровне, по этому расширению не подлежит. Это важная деталь, о которой позже поговорим.
@@ -86,13 +110,13 @@ NPU может в десятки раз проигрывать GPU по прои
Запуск локальной LLM на процессорах AMD Ryzen AI оказался непростой задачей. Тут важно уточнить, что процессоры AMD являются далеко не единственными представителями, имеющими NPU. У других производителей использование NPU может и скорей всего будет совершенно другим. AMD в этом плане имеет свои особенности и именно о них мы далее будем говорить.
И так, задача запуска LLM на NPU оказалась нетривиальной. Я перебрал не мало вариантов и таки смог запустить, установив RyzenAI Software (его скачивание и установка само по себе как отдельный квест) и запустив предварительно оптимизированную под NPU модель через ONNX Runtime.
И так, задача запуска LLM на NPU оказалась нетривиальной. llama.cpp и как следствие LM Studio не поддерживает NPU, хотя спрос есть и [пользователи просят добавить поддержку](https://github.com/lmstudio-ai/lms/issues/30). ROCm работает только с GPU. DirectML направляет вычисления в NPU только при магических обстоятельствах.
Почему ONNX Runtime, а не, например, LM Studio? Дело в том, что llama.cpp, как и LM Studio в целом, не поддерживают NPU. Хотя спрос есть и [пользователи просят добавить поддержку](https://github.com/lmstudio-ai/lms/issues/30), но на данный момент это невозможно.
Оставался только фирменный RyzenAI Software (его скачивание и установка само по себе как отдельный квест) и предварительно оптимизированная под NPU модель, с запуском через ONNX Runtime.
Есть альтернативный вариант - запуск через DirectML, но как бы ни пытался, задействовать NPU не удалось. В конечном итоге я просто следовал инструкции от AMD и таки смог запустить модель.
В конечном итоге я просто следовал инструкции от AMD и таки смог запустить модель. Вот [тут](https://github.com/amd/RyzenAI-SW/tree/main/LLM-examples) есть достаточно информации об этом.
Кроме того, модель должна быть предварительно оптимизирована для работы на NPU. Благо AMD предоставляют некоторое количество таких моделей. Со списком можно ознакомиться [тут](https://huggingface.co/collections/amd/ryzen-ai-17-npu-llm).
Модель должна быть предварительно оптимизирована для работы на 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). Разберем результаты для каждой модели отдельно.
@@ -114,7 +138,7 @@ NPU может в десятки раз проигрывать GPU по прои
### gpt-oss-20b
Эта модель уже потребляет почти 13гб памяти и что интересно, после начала генерации это значение никак не меняется. Что еще более интересно, график показывает использование NPU в пределах 60-70%. Но генерация особо не падает, в среднем 10-11 tps.
Эта модель уже потребляет почти 13гб памяти и что интересно, после начала генерации значение никак не меняется. Что еще более интересно, график показывает использование NPU в пределах 60-70%. Но генерация особо не падает, в среднем 10-11 tps.
Почему происходит такое поведение с большими моделями - мне не известно. Возможно найдутся знатоки в комментариях, буду благодарен за объяснение.
@@ -124,7 +148,7 @@ NPU может в десятки раз проигрывать GPU по прои
## Итоги тестирования
Конечно все протестированные модели можно использовать только для решения простых задач. На сложных они начинают галлюцинировать из-за нехватки контекста. Но что можно было ожидать от локальной LLM?
Конечно все протестированные модели можно использовать только для решения простых задач. Но что можно было ожидать от локальной LLM?
Во всяком случае такой модели можно не бояться скормить конфиденциальные данные и не беспокоиться о нагрузке на устройство, благодаря NPU.
@@ -132,6 +156,8 @@ NPU может в десятки раз проигрывать GPU по прои
# Заключение
NPU - это неплохой сопроцессор для работы фоновых нейронных процессов, которые требуют не быстрого результата, а экономной работы без перегрузки устройства.
NPU - это, как по мне, в первую очередь сопроцессор, предназначенный для работы фоновых нейронных процессов, которые требуют не быстрого результата, а экономной работы без перегрузки устройства.
И такие фоновые нейронные процессы это не только про LLM. В качестве хорошего примера у нас уже есть ИИ-функции в Windows 11 на устройствах категории Copilot+ PC. Хотя, как по мне, многие из этих функций не являются супер полезными, они все же задают правильное направление для использования NPU в повседневных задачах.
И такие фоновые нейронные процессы это не только про LLM. В качестве хорошего примера у нас уже есть ИИ-функции в Windows 11 на устройствах категории Copilot+ PC. Хотя, как по мне, многие из этих функций не являются полезными, но они все же задают верное направление для использования NPU в повседневных задачах.
Я показал что из себя представляет NPU на персональных устройствах в данный момент, а выводы для себя делайте сами. Спасибо за прочтение.