Чем занят нейропроцессор в телефоне
easy

Чем занят нейропроцессор в телефоне

Делает красивые фоточки, например

Недавно мы рассказывали, что такое нейросети и как они учатся. Сегодня посмотрим, как нейронки работают в вашем телефоне.

Если пропустили первую статью — вот основное оттуда:

  • Нейросеть — это большая куча формул, связанных между собой.
  • Обучение нейросетей — это корректировка чисел внутри этих формул.
  • Использование нейросети сводится к тому, что мы подаём нужным формулам на вход какие-то числа, а на выходе получаем какие-то другие числа. И мы, люди, это как-то интерпретируем.
  • Нейросети — это просто огромный массив математики.

Все формулы нейросети можно разложить на «слои», их может быть сколько угодно. Между слоями будут связи, каждый со своим «весом». «Вес» показывает, как данные меняются при передаче из одного нейрона в другой.

Сколько нейронов (и весов) в нейросети

Теоретически можно сделать очень простую нейросеть, в которой будет только один слой нейронов и одно итоговое значение:

Чем занят нейропроцессор в телефоне

Но в реальности толку от такой нейронки мало: проще написать линейный алгоритм и решить всё перебором, чем городить огород с нейросетями.

В современных нейросетях используются десятки миллионов нейронов, разбитые на множество слоёв.

Чем занят нейропроцессор в телефоне

Обучение нейронки — это работа с матрицами

Чаще всего нейроны в нейросети не связаны друг с другом поодиночке — вместо этого один нейрон может влиять на несколько других в соседнем слое. Точно так же происходит и с ним — на один нейрон влияют сразу несколько предыдущих. 

Чтобы найти значение веса данного нейрона, нам нужно вычесть, сложить или перемножить несколько однородных коэффициентов. В математике проще всего это делать с помощью матриц — специальных конструкций из чисел, которые считаются по простым правилам.

Мы уже рассказывали про матрицы и работу с ними и сделали про них 6 статей. Если интересно, как всё это работает с точки зрения математики, — вот, держите:

Нейросети и процессоры

Одну матрицу процессору посчитать несложно, и даже тысячу матриц одновременно — несложно. Но что, если нам нужно считать миллионы матриц в секунду? 

Например, у вас картинка размером 1000 на 1000 пикселей — это миллион пикселей. Вам нужно обработать её в нейросети.

Цветная картинка — это три цветовых слоя. То есть относительно небольшая картинка 1000 × 1000 — это три миллиона чисел.

3 миллиона чисел — это только первый слой нейросети. Дальше можно предположить, что будет ещё 3 слоя. Предположим, что в сумме наша нейронка будет считать 10 миллионов матриц.

Если мы хотим обрабатывать видео, то нам нужно обрабатывать всё это богатство хотя бы 25 раз в секунду. Поэтому в итоге нам нужно считать 250 миллионов матриц в секунду.

Расчёт одной матрицы может требовать сотен и тысяч операций процессора. То есть это уже 250 млрд операций в секунду. Это значит, что мощный процессор, у которого 24 ядра, 48 потоков и частота 4 гигагерца будет работать на пределе своих возможностей. А ему ещё нужно заниматься работой операционной системы и обслуживать другие программы. В одиночку процессору вытягивать такое очень сложно, да и перегреется он в таком режиме слишком быстро.

Современные процессоры состоят из ядер, которые умеют считать что-то параллельно. Но ни у кого нет ста ядер. В обычном процессоре (CPU) от 2 до 16 ядер, и даже если они все будут работать параллельно с максимальной эффективностью, этой скорости всё равно не хватит на работу нейросети в реальном времени. Или хватит, но это будет очень простая нейронка, по сложности сравнимая с обычными алгоритмами.

Помимо обычных процессоров есть видеокарты со специальными графическими процессорами (GPU). Там уже всё гораздо веселее: от тысячи до десятков тысяч ядер. Они маленькие, простые, но могут работать параллельно и быстро — как раз то, что нужно для нейросети. Если нет специального железа, используют их, но есть один нюанс — GPU подходят для неспешного обучения или для несложных нейронок. Если будет что-то сложное, то они начнут сильно греться, потреблять много электричества и могут всё равно не справиться с задачей.

Нейропроцессоры и ускорители

Чтобы разгрузить графический процессор и сделать вычисления более быстрыми, придумали нейронный процессор — он же нейропроцессор или NPU. Он заточен только под одну задачу — складывать и перемножать веса нейронки. Но он делает это супербыстро. Для сравнения:

  • скорость очень мощного CPU (AMD Ryzen Threadripper 3990X) — 3 триллиона операций в секунду;
  • GPU — 20 триллионов операций в секунду;
  • NPU — 480 триллионов операций в секунду.

Чем занят нейропроцессор в телефоне
Нейропроцессор Google TPU v3, который выдаёт 420 триллионов операций в секунду

Нейропроцессоры необязательно должны быть большими: есть и маленькие чипы, которые можно вставить в смартфон. Чаще всего это тензорные процессоры — те, которые рассчитаны на работу с библиотекой машинного обучения TensorFlow CCSLRF, но необязательно. Ещё они могут быть сопроцессорами — дополнительными модулями, которые встроены в основной чип для облегчения вычислений.

Сейчас почти у каждого крупного производителя чипов для телефонов есть свои нейропроцессоры:

  • Apple: Apple Bionic с сопроцессором Neural Engine;
  • Huawei: Kirin 970 со встроенным NPU (Neural Network Processing Unit);
  • Oppo: MariSilicon X;
  • Samsung: Exynos 9 Series 9820.

Что делают нейросети в телефонах

Задача нейросетей в телефоне — сделать нашу жизнь проще и удобнее. Для этого нейронки:

  • слушают ваш голос в ожидании команды «Алиса»;
  • распознают голос и переводят его в текст и наоборот;
  • определяют лица и предметы на фотографиях;
  • занимаются вычислительной фотографией, чтобы сделать красивое размытие на фотках, поменять фон, исправить дефекты лица, перерисовать освещение, исправить заваленные тени или пересвет;
  • помогают нарисовать дополненную реальность;
  • переводят с одного языка на другой.

Что дальше

В следующий раз мы посмотрим на нейропроцессоры с точки зрения разработчика — какие бывают, чем различаются, что нужно учесть при работе. Будет сложно, поэтому всё сделаем поэтапно.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Виталий Вебер

Любите данные? Посмотрите вот это
Возможно, у вас получится построить карьеру в мире дата-сайенса. Это новое направление, в котором очень нужны люди. Изучите эту сферу и начните карьеру в ИТ: старт — бесплатно, а после обучения — помощь с трудоустройством.
Посмотреть
Любите данные? Посмотрите вот это Любите данные? Посмотрите вот это Любите данные? Посмотрите вот это Любите данные? Посмотрите вот это
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
easy