diff --git a/about-npu/img_4.png b/about-npu/img_4.png new file mode 100644 index 0000000..0af00dc Binary files /dev/null and b/about-npu/img_4.png differ diff --git a/about-npu/img_5.png b/about-npu/img_5.png new file mode 100644 index 0000000..1f12cad Binary files /dev/null and b/about-npu/img_5.png differ diff --git a/about-npu/index.md b/about-npu/index.md index 8b9e828..9189e1d 100644 --- a/about-npu/index.md +++ b/about-npu/index.md @@ -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 в повседневных задачах. \ No newline at end of file +И такие фоновые нейронные процессы это не только про LLM. В качестве хорошего примера у нас уже есть ИИ-функции в Windows 11 на устройствах категории Copilot+ PC. Хотя, как по мне, многие из этих функций не являются полезными, но они все же задают верное направление для использования NPU в повседневных задачах. + +Я показал что из себя представляет NPU на персональных устройствах в данный момент, а выводы для себя делайте сами. Спасибо за прочтение. \ No newline at end of file