Я решил разбить обсуждение аппаратного обеспечения на две части: на базе ARM и на базе x86. Вы можете задаться вопросом, почему я выделил аппаратное обеспечение на основе набора инструкций ЦП. На мой взгляд, эти два набора инструкций тесно связаны с типами применяемых графических процессоров. Вообще говоря, типы графических процессоров, о которых я хочу поговорить в этом посте, являются неотъемлемым компонентом системы на кристалле (SoC) этих устройств на базе ARM. Вопрос о том, следует ли мне называть их устройствами на базе ARM, определенно под вопросом, но мне показалось, что это хорошее различие…

Для начала мы начнем с периферийного узла, который всегда есть почти у каждого: смартфонов. Современные смартфоны стали чрезвычайно мощными и поддерживают самые разные модели. На момент написания этой статьи каждый из крупнейших производителей телефонов в США (Apple, Google и Samsung) внедрил чрезвычайно мощные модели CV для самых разных задач: от сегментации объектов из фотографий до улучшения HDR вашей фотографии и до использования компьютерного зрения для сделать фотографии лучше передающими темные оттенки кожи. Многие люди не осознают, насколько они действительно близки к компьютерному зрению в повседневной жизни. С бесчисленными функциями, которые используются ежедневно.

Модели, которые обычно устанавливаются на смартфонах, не обязательно совпадают с моделями, которые используются на потребительском оборудовании. При приготовлении мобильных моделей следует следовать определенному рецепту. Это связано с тем, что аппаратная архитектура смартфонов основана на конструкции ARM System-on-a-Chip (SoC). Эти SoC имеют процессор на базе ARM и специальные API для графических процессоров. К счастью, поддержка мобильных устройств в настоящее время реализована в TensorFlow (с использованием TFLite), а PyTorch со своей версией PyTorch mobile находится в стадии бета-тестирования.

Основным ограничением при реализации моделей CV на чем-то вроде смартфона является SoC. По своей конструкции это компьютеры небольшого форм-фактора, которые обычно нуждаются в оптимизации для запуска моделей. Если мы попытаемся запустить полноразмерную модель, которую мы запускаем на Nvidia RTX 4080, мы обнаружим, что модель либо будет долго работать для каждого изображения, либо модель вообще не запустится. Смартфоны, как правило, имеют довольно ограниченную память и вычислительные возможности, но есть способы оптимизировать нашу модель для смартфонов. Двумя наиболее важными из них являются квантование и обрезка. Эти двое проделывают большую работу, чтобы сделать CV-модели более эффективными в использовании памяти и вычислений за счет эффективного уменьшения объема данных, которые устройству необходимо хранить и вычислять. Я планирую осветить эти темы в следующем посте, но, короче говоря, квантование — это когда вы уменьшаете точность ваших данных (например, float32 до int8), что, в свою очередь, уменьшает требуемую память и вычислительные ресурсы, поскольку в данных меньше битов. При обрезке вы эффективно удаляете узлы в вашей модели, размер которых меньше определенного порога. Обе эти стратегии снижают точность модели, но могут значительно уменьшить объем памяти и задержку. Вы обнаружите, что в большинстве моделей смартфонов применяется одна (или обе) из этих оптимизаций, поэтому пользователи не ждут более 20 секунд, чтобы получить результат.

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

Следующие устройства, о которых я хочу рассказать, — это одноплатные компьютеры. Когда я говорю об одноплатных компьютерах, я обычно имею в виду Raspberry Pi и Nvidia Jetson. Их называют одноплатными компьютерами, потому что вся система находится на одной плате (достаточно просто). Здесь я расскажу о линейке Jetson, потому что она специально разработана для рабочих нагрузок ML, но нет конкретной причины, по которой модели CV не могли бы работать на Raspberry Pi. Настройка может быть более ограниченной, но в целом любая конкретная оптимизация Jetson поможет в случае с Pi. Насколько я понимаю, Pi — это плата более общего назначения, не предназначенная специально для ML, но модели по-прежнему будут работать на процессоре.

Мне посчастливилось работать с Nvidia Jetson Xavier NX, и это очень удивительное оборудование. Эти одноплатные компьютеры, такие как линейка Jetson и линейка Raspberry Pi, впечатляют не своими показателями производительности как таковыми, а энергопотреблением. Например, Nvidia Jetson Xavier NX по умолчанию имеет уровень мощности 15 Вт и может запускать необрезанные модели сегментации экземпляров со смешанным плавающим режимом со скоростью около 10–15 кадров в секунду, в зависимости от магистрали. Для меня это безумие. Для справки: энергопотребление Nvidia RTX 4060 в режиме простоя составляет 12 Вт. Да, примерно с той же мощностью, что и 4060, который даже ничего не делает, вы можете запустить чертовски полноценную модель CV с чрезвычайно разумной задержкой. В некоторых случаях этого достаточно, чтобы считаться реальным временем!

Это также фактически наихудший сценарий для устройства с низким энергопотреблением, такого как Jetson. Модель, о которой я говорю, по результатам моего собственного тестирования, представляла собой Mask-RCNN, в которой в качестве основы использовалась EfficientDet Lite0. EfficientDet Lite0 — одна из самых маленьких и быстрых моделей, поэтому она не обязательно означает самые точные результаты. Мое тестирование также исключило несколько стратегий повышения производительности, таких как уменьшение размера входного изображения, обрезка и квантование. Я также использовал модель сегментации экземпляров, а не что-то более дешевое с точки зрения вычислений, например простое обнаружение объектов.

Так когда же не следует использовать Jetson? В большинстве случаев вам не следует использовать Jetson, если у вас есть место и мощность для полноразмерного компьютера. Оптимизация модели для работы на устройстве Jetson в настоящее время требует значительных усилий, и вы должны убедиться, что она вам действительно нужна. Устройства Jetson также не особенно дешевы, и вы почти наверняка можете получить гораздо более мощную машину за гораздо меньшие деньги. Ниже приведены некоторые важные вопросы, которые следует задать себе, рассматривая возможность приобретения Jetson.

  • У меня ограниченное пространство или я планирую разместить это на дроне или небольшом роботе?
  • Ограничена ли у меня мощность или я использую батарею, которую хочу проработать как можно дольше?
  • Нужно ли мне работать в режиме реального времени?
  • Какой тип архитектуры модели мне нужен, чтобы этот вариант использования работал?
  • Модель какого размера мне нужно использовать, чтобы этот проект был достаточно точным?
  • Каков мой бюджет?

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

Наконец, Apple Silicon относительно новичок в этой области, но уже может похвастаться впечатляющими характеристиками, когда дело касается времени автономной работы и просто мощности. Единая память Apple Silicon позволяет графическому процессору получать доступ к огромным объемам памяти без необходимости использования процессора, что позволяет ему запускать модели, которые значительно больше, чем вы обычно видите в потребительских устройствах. Это означает, что при наличии подходящего инструментария вы сможете как минимум загружать огромные модели или загружать большие пакеты данных в графический процессор. Что касается инструментов, PyTorch, TensorFlow, и даже Jax могут работать на Apple Silicon, а это означает, что вам нужно внести лишь незначительные изменения, чтобы использовать свой ноутбук (например, тот, который указан в верхней части этой статьи). ваш собственный сервер периферийного вывода!

Как видите, M1 Ultra очень близок к специализированным (хотя и довольно старым) графическим процессорам, таким как 1080Ti и некоторым версиям графических процессоров 30-й серии для ноутбуков. Это неплохо для первой попытки, особенно когда над программным обеспечением еще предстоит поработать. Чипы Apple M2 были анонсированы в июне 2023 года, поэтому для этого набора микросхем пока еще нет тестов, но я ожидаю значительного улучшения времени вывода, особенно с учетом преимуществ, которые унифицированная память дает для вывода и обучения.

Сейчас кажется, что Apple Silicon может стать сильным конкурентом на рынке экономичных и компактных периферийных узлов компьютерного зрения в будущем! Их улучшение было чрезвычайно впечатляющим, и трудно понять, на какие части ML это не повлияет! Я бы присмотрел за этим. В ближайшем будущем люди, возможно, просто настроят ноутбуки Apple в качестве своих пограничных узлов!

Архитектура ARM получила довольно широкое освещение несколько лет назад, когда Apple перешла на Apple Silicon, и на это есть веские причины. Это привело к созданию некоторых впечатляющих приложений, например, в случае с новыми компьютерами Apple, и позволяет использовать некоторые удобные варианты использования периферийных узлов, например, возможность превратить дрон в собственный летающий сервер вывода с помощью Nvidia Jetson. Не будем забывать, что практически у каждого в кармане есть собственный Edge-узел с возможностью запуска моделей компьютерного зрения с незначительной задержкой. Я лично воодушевлен этими улучшениями в возможностях таких устройств, как Jetsons, компьютеров на базе Apple Silicon и смартфонов. Эти устройства позволяют создавать интересные нишевые приложения, которые в противном случае были бы невозможны из-за сочетания небольшого форм-фактора, низкого энергопотребления и высокой производительности в задачах машинного обучения.

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

Первоначально опубликовано на https://ryanmsmith251.substack.com.