Разработка инфраструктуры для измерения точности работы нейронных сетей на ИИ-ускорителях
Аппаратная и программная реализация нейронных сетей. Создание улучшенного подхода валидации точности алгоритмов глубокого обучения для применения на ИИ-ускорителях. Разработка гибкого и расширяемого инструмента для инференса искусственных нейронных сетей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 28.10.2019 |
Размер файла | 3,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
????????? ?? http://www.Allbest.Ru/
????????? ?? http://www.Allbest.Ru/
????????? ?? http://www.Allbest.Ru/
Правительство Российской Федерации
Федеральное государственное автономное образовательное учреждение высшего образования
Национальный исследовательский университет «Высшая школа экономики»
Нижегородский филиал
Факультет информатики, математики и компьютерных наук
Базовая кафедра группы компаний MERA
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
На тему:
Разработка инфраструктуры для измерения точности работы нейронных сетей на ИИ-ускорителях
Выполнила Айдова Е.П.
Студент группы №15ПИ
Научный руководитель
Доцент С.П. Скулкин
Нижний Новгород, 2019 г.
Оглавление
- Введение
- 1. Теоретическая часть
- 1.1 Аппаратная и программная реализация нейронных сетей
- 1.2 Вычислительная точность и форматы представления чисел
- 1.3 Специфика работы ИИ-ускорителей
- 1.4 Проблемы работы с ИИ-ускорителями и техники оптимизации
- 1.5 Обзор инструментов для работы с ИИ-ускорителями
- 1.6 Обзор подходов измерения точности работы нейронных сетей применительно к ИИ-ускорителям
- 2. Практическая часть
- 2.1 Требования к продукту
- 2.2 Функциональное описание
- 2.3 Используемые инструменты
- 2.4 Архитектура продукта
- 2.5 Руководство пользователя
- 3. Конфигурация
- 3.1 Лаунчер
- 3.2 Адаптер
- 3.3 Датасет
- 4. Запуск примера
- 5. Тестирование новой модели
- 6. Расширение функциональности
- Заключение
- Список литературы
- Приложение 1. UML-диаграмма основных компонентов проекта
- Приложение 2. Поддерживаемые конфигурации и параметры для конвертации
- Приложение 3. Поддерживаемый набор препроцессоров
- Приложение 4. Набор поддерживаемых постпроцессоров
- Приложение 5. Пример конфигурационного файла
- Приложение 6. Пример добавление конвертера для датасета
- Приложение 7. Листинг программы
Введение
Компьютеры, роботы, искусственный интеллект… Ни для кого не секрет, что в основе многих передовых технологий лежит необходимость воспроизведения или имитации человеческого мышления, чувств и поведения. Разнообразные акустические датчики и видеосенсоры получили возможность создания только после того, как люди разобрались в принципах работы собственных органов слуха и зрения.
Стремительное развитие технологии глубокого обучения приводит к тому, что она постепенно становится частью нашей обыденной жизни. Она привносит возможности искусственного интеллекта во все большее количество потребительских и промышленных продуктов и оказывает влияние на повседневную деятельность современного человека, а также стандартные индустриальные процессы. Высокая производительность, относительно легкая масштабируемость и способность показывать результаты, превосходящие по качеству аналогичные традиционные алгоритмы, определяет успех глубокого обучения во многих областях, среди которых медицинская диагностика, обработка естественного языка, распознавание речи и, конечно, компьютерное зрение.
На поверхностном уровне глубокое обучение, как и любая автоматизированная система, основанная на статистических методах машинного обучения, имеет две стадии: первая стадия включает в себя обучение модели глубокой нейронной сети, специально разработанной для конкретной предметной области, вторая - развертывание в рабочей среде, где уже оптимизированный алгоритм принимает непрерывный поток входных данных и должен обрабатывать его в режиме реального времени, а результат работы модели либо непосредственно используется в качестве конечного решения, либо подается в нисходящие системы для дальнейшей обработки и анализа. Оба этих процесса обладают высокой вычислительной сложностью, но при том преследуют совершенно различные цели.
В случае тренировки сети речь идет об обеспечении высокой пропускной способности - возможности обработки большого объема обучающих данных в один момент времени т.к. этот процесс включает в себя подачу на вход выборок из сотен обучающих примеров и выполнение прямого или обратного распространения на них в качестве одной единицы данных одновременно, для того чтобы амортизировать затраты на загрузку весов нейронной сети.
Для конечного приложения и встраиваемых систем же более важным показателем является производительность, способность выдавать результат с минимальными задержками, обеспечивая процесс обработки данных в режиме близком к реальному времени, при этом также не забывая о обеспечении оптимальном распределении ресурсов на вычисление.
Таким образом, помимо типичного внимания академических кругов к более быстрому обучению, индустрия часто больше озабочена эффективностью вывода, в результате чего ускорение работы пост-тренировочной стадии выходит на первый план и является ключевым для многих аппаратных и программных решений.
Кроме производительности и ресурсоемкости, важной характеристикой при выборе алгоритма глубокого обучения является его эффективность, показатель качества его работы при решении конкретной задачи.
Иными словами, учитывая высокую вычислительную сложность алгоритмов глубокого обучения, в частности сверточных нейронных сетей, разработчикам систем на основе их применения приходится находить баланс между точностью, производительностью и энергопотреблением.
Для обеспечения аппаратного ускорения работы алгоритмов глубокого обучения широко применяются различные типы специализированных микропроцессоров и сопроцессоров, называемых ИИ-ускорителями. Благодаря функциональным модулям, блокам памяти в чипе и специальным схемам для приложений, аппаратные ускорители способны эффективно выполнять задачи машинного обучения. Кроме того, многие аппаратные решения данного класса имеют специализированные наборы инструментов, дающие возможность успешно портировать алгоритмы из тренировочных фреймворков на конечные устройства и эффективно применить оптимизации специфичные для конкретной платформы, превратив ресурсоемкие модели в компактные форм-факторы.
Однако нельзя не принимать во внимание тот факт, что ценой увеличения производительности решения может стать потери в точности его работы. В связи с особенностями реализации и организации вычислительного процесса, ограничениями ресурсов и набора поддерживаемых примитивов для представления алгоритма на конечном устройстве, результаты работы аппаратных акселераторов могут иметь долю погрешности по отношению к аналогичным результатам исходного алгоритма в тренировочной среде.
Актуальность тематики
Для обеспечения взаимодействия между человеком и вычислительной системой в режиме реального времени, приложения на основе глубокого обучения должны обладать высокой производительностью. В тоже время, основным преимуществом применения глубоких нейронных сетей является точность их работы, что достигается за счет высокой вычислительной сложности.
Обработка искусственного интеллекта (ИИ) движется к периферии. Сегодня большая часть вычислений для ИИ выполняется в облаке или на сервере, не беспокоясь о доступной вычислительной мощности или энергопотреблении. Глубокое обучение (DL), основанное на нейронных сетях, на данный момент является основной движущей силой большинства реализаций ИИ. В 2012 году AlexNet, сверточная нейронная сеть (CNN), которая начала революцию в области Deep Learning, имела 60 миллионов параметров и была обучена на наборе данных из 1,2 миллиона изображений с использованием двух графических процессоров (GPU) в течение недели. В 2018 году AlphaGo Zero, улучшенная версия машины Go, которая в 2016 году обыграла Lee Seedol, обладала в 300 000 раз большей вычислительной мощностью, чем AlexNet. Всего за 6 лет мы наблюдаем увеличение вычислительных мощностей на пять порядков, и это увеличение вызвано ростом сложности данных и моделей.
Однако большая часть аппаратных решений в области искусственного интеллекта более ориентирована на увеличение вычислительной мощности и распределение нагрузки во время тренировки модели, чем на ускорение во время пост-тренировочной стадии, где более важным является возможность получения результатов работы модели в режиме близком к реальному времени.
Вывод результатов (инференс) - это относительно более низкая вычислительно-интенсивная задача, чем обучение, где более значима латентность для предоставления результатов в режиме реального времени. Большинство выводов по-прежнему выполняется в облаке или на сервере, но по мере роста применения искусственного интеллекта парадигма централизованного обучения и инференса встает под сомнение.
Обработка AI edge сегодня сосредоточена на перемещении части вывода рабочего процесса AI на устройство, концентрируя данные на нем. С ростом количества доменов применения технологии глубокого обучения, меняются требования к системам на ее основе. Системы автономного вождения, например, имеют требования к задержке менее миллисекунды, в то время как приложения для распознавания голоса/речи на умных колонках, должны учитывать проблемы защиты пользовательских данных, что делает проблематичным развертывание приложений данных категорий на удаленном сервере или в облаке. Выполнение обработки вычислений на периферийном устройстве позволяет обойти проблемы конфиденциальности, избегая при этом проблем связанных с пропускной способностью, задержкой и затратами на облачные вычисления.
Кроме того, развитие техник сжатия нейронных сетей также способствует распространению использования ИИ-ускорителей. Исследования показывают, что для сохранения уровня точности пост-тренировочная стадия не требует обязательного использования представления данных в формате чисел с плавающей точкой. Для определенных классов задач это представление может быть успешно заменено на числа с фиксированной точкой или даже целочисленным представлением, для того чтобы уменьшить стоимость вычислений.
В настоящее время существует широкое разнообразие категорий ИИ-ускорителей, каждая из которых обладает своей спецификой и находит применение в различных областях. Ряд особенностей таких как, ограничения доступных ресурсов, организация процесса вычислений, особенности представления и хранения чисел, гибкая архитектура (характерно для решений на основе FPGA) повышает внимание к вопросу о точности работы данных устройств.
В тоже время производители устройств для ускорения инференса заинтересованы в удержании погрешности в рамках допустимого порога и стремятся к ее минимизации, что говорит о необходимости постоянного совершенствования и валидации работы данных систем на предмет возможности воспроизведения ими качественных результатов фреймворков для тренировки.
Проблематика
Для уверенности в правильности работы ИИ-ускорителей необходимо уметь воспроизвести точные результаты работы, показанные при тестировании модели на тренировочном этапе. Организация данной процедуры влечет за собой следующие проблемы:
1. Отсутствие стандартизации тренировки и валидации моделей глубокого обучения. Популярные инструменты для обучения нейронных сетей имеют собственные «зоопарки моделей», наборы поддерживаемых топологий для решения типовых проблем, которые постоянно пополняются новыми архитектурами нейронных сетей. В рамках решения одной и той же задачи, например классификации изображений, валидация имеет много общего, но в тоже время каждая модель может обладать собственными особенностями и тонкостями валидационного подхода, например использование различных техники препроцессинга данных, поэтому инструмент валидации должен быть гибким и легким в настройке параметров.
2. Решения для оценки точности нейронных сетей не приспособлены для работы с ИИ-ускорителями. Как правило, большинство средств валидации имеют отношение к тренировочным фреймворкам или датасетам для решения специфичных задач, что говорит о том, что получение результатов с помощью нейронного процессора, требует поиска дополнительных решений для интеграции в существующую тестовую среду.
3. Необходимость автоматизации процесса валидации. Процесс оценки точности алгоритмов глубокого обучения на большом наборе данных является русурсоемким и может занимать длительное время, особенно при наличии большого зоопарка моделей и конфигураций аппаратного обеспечения для инференса. Continuous Integration -- это практика разработки программного обеспечения, которая заключается в слиянии рабочих копий в общую основную ветвь разработки и выполнении частых автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем. Основным преимуществом является сокращение стоимости исправления дефекта, за счёт раннего его выявления. Автоматизация рутинных процедур сборки и запуска тестов содействуют в ускорении выявления дефектов, поэтому наличие автоматизированной инфраструктуры валидации точности работы алгоритмов глубокого обучения будет приносить пользу проекту.
Как правило, большинство средств валидации не приспособлены для решения описанных выше проблем и в целом для проверки результатов, получаемых с помощью аппаратных платформ для инференса. Это свидетельствует о необходимости создания специализированного решения.
Целями данной выпускной работы являются:
- создание улучшенного подхода валидации точности алгоритмов глубокого обучения для применения на ИИ-ускорителях
- разработка гибкого и расширяемого инструмента валидации нейронных сетей, использующего данный подход.
Для достижения данных целей поставлены следующие задачи:
- изучить существующую литературу по применению аппаратных ускорителей для инференса нейронных сетей, методах оптимизации и валидации алгоритмов глубокого обучения
- сделать аналитический обзор подходов валидации точностиприменительно к ИИ-ускорителям
- определить подход, который будет эффективен для применения его на практике
- выбрать инструменты для разработки приложения
- разработать требования к создаваемому приложению
- спроектировать архитектуру приложения
- реализовать необходимые функции
- составить руководство пользователя
Структура работы
Выпускная квалификационная работа состоит из нескольких глав, введения, заключения и списка использованной литературы (и приложения).
Теоретическая часть проекта посвящена обзору основных категорий ИИ-ускорителей, инструментов для работы с ними, а также подходов измерения точности работы систем глубокого обучения. Данная часть работы содержит информацию о достоинствах и недостатках различных подходов тестирования точности работы алгоритмов глубокого обучения, в частности для задач компьютерного зрения, описывает наиболее распространенные методы подготовки данных и метрики качества.
В практической части описывается процесс разработки инструмента для валидации точности работы нейронных сетей.
1. Теоретическая часть
В данной главе приведен обзор основных категорий ИИ-ускорителей, инструментов для работы с ними, а также подходов измерения точности работы систем глубокого обучения.
Исследования в области искусственных нейронных сетей тесно связаны с развитием аппаратных решений для обучения и вывода. С самого начала развития глубокого обучения инженеры-электроники уже задумывались над специализированным оборудованием, способным ускорить обучение и/или вывод. В настоящее время существует своевременная необходимость в сопоставлении новейших алгоритмов обучения с физическим оборудованием для достижения значительных улучшений в скорости, производительности и энергоэффективности. Однако вычислительная сложность SoTA по-прежнему бросает вызов современным вычислительным платформам, особенно когда их применение жестко ограничено требованиями низкого энергопотребления, высокой пропускной способности, минимальной задержки, компактности размеров чипа и т.д.
1.2 Аппаратная и программная реализация нейронных сетей
Представление искусственных нейронных сетей подразделяется на 2 категории:
программная реализация, исполняемая на обычных компьютерах. Специальное программное обеспечение применяется для обучения и симуляции широкого класса моделей на компьютерах общего назначения. Оно обеспечивает гибкость и может быть использовано для создания и отладки новых алгоритмов.
аппаратная реализация способна значительно сократить время выполнения. Основной целью построения специализированного оборудования для ИИ является обеспечение платформы для эффективных адаптивных систем, способных обновлять свои параметры с течением времени. Специальные аппаратные реализации предназначены для конкретной модели.
1.2 Вычислительная точность и форматы представления чисел
Важными вопросами, которым стоит уделить внимание, при хардварной имплементации нейронных сетей являются баланс между необходимостью обеспечения разумной точности вычислений (количество бит выделяемое для хранения чисел) и стоимостью логических операций, а также выбор подходящего формата хранения чисел, обладающего достаточно большим динамическим диапазоном для создания приложений общего назначения.
Более глубокие сети обладают более высокой точностью результата, но они значительно увеличивают количество параметров и размеры модели. Это, в свою очередь, оказывает влияние на требования к хранению данных и пропускную способность вычислительной памяти. Формирующейся тенденцией является принятие компактных типов данных с низкой точностью, намного меньше стандартно принятых 32-бит [4]. Используются 16-разрядные и 8-разрядные типы данных, поддерживаемые программными фреймворками (например, TensorFlow).
Использование 16 бит в качестве арифметической точности вычисления вместо 32 бит приводит к более быстрым вычислениям, поскольку процессоры, как правило, имеют большую пропускную способность при более низком разрешении [9]. Уменьшение точности также увеличивает объем доступной полосы пропускания, поскольку для каждого вычисления извлекается меньший объем данных. Однако точность вычислений (precision) не может быть уменьшена слишком сильно, потому что тогда сеть не будет обучаться и никогда не достигнет необходимого качества результата (accuracy) или станет нестабильной.
Таким образом, на этапе обучения нужна более высокая точность, чем на этапе вывода, и для снижения разрядности можно использовать некоторые формы динамического представления чисел с фиксированной точкой. Использование фиксированной точки вместо плавающей и понижение разрядности уменьшают площадь, занимаемую оборудованием, энергопотребление и время выполнения операции умножения, а именно на эти операции приходится основное время при обучении и использовании современной глубокой сети с обратным распространением.
По мнению исследователей, можно обучать СNN с целочисленными весами [8]. Преимущество использования целочисленных весов заключается в том, что целочисленные множители могут быть реализованы более эффективно на оборудовании, чем числа с плавающей точкой. Существуют некоторые специальные алгоритмы обучения, которые используют степени по основанию 2 в качестве весов. Преимущество алгоритмов обучения таких весов заключается в том, что требуемые умножения могут быть сведены к серии операций сдвига.
Арифметические операции с плавающей точкой предлагают максимальный динамический диапазон, делая его соответствующим для любого применения. Однако операции с плавающей точкой требуют больше циклов для вычисления, чем целочисленные операции. Поэтому большинство разработчиков нейрокомпьютеров рассматривают представления с фиксированной точкой, в которых используются только целые числа, а положение десятичной точки обрабатывается некоторыми простыми дополнительными схемами или программным обеспечением.
Другой метод представления, называемый арифметикой битового потока (bitstream arithmetics), описан в [3]. Арифметика битового потока - это метод, который использует случайно сгенерированные биты для представления действительного числа.
1.3 Специфика работы ИИ-ускорителей
Нейронный процессор (англ. Neural Processing Unit, NPU или ИИ-ускоритель англ. AI accelerator) -- это специализированный класс микропроцессоров и сопроцессоров (часто являющихся специализированной интегральной схемой), используемый для аппаратного ускорения работы алгоритмов искусственных нейронных сетей, компьютерного зрения, распознавания по голосу, машинного обучения и других методов искусственного интеллекта. Нейронные процессоры относятся к вычислительной технике и используются для аппаратного ускорения эмуляции работы нейронных сетей и цифровой обработки сигналов в режиме реального времени. В зависимости от базовой аппаратной платформы, ускорители работы искусственных нейронных сетей, подразделяются на:
Рисунок 1. Классификация платформ для ускорения нейронных сетей
CPU - обладают универсальным набором возможностей для обработки данных. Они чрезвычайно гибки с точки зрения программируемости и обработки рабочих нагрузок. CPU делают быстрые вычисления и имеют динамические схемы. Кроме того, CPU могут быть использованы в гетерогенном режиме вместе с другими акселераторами для организации вычислений и распределения нагрузки. К представителями ускорителей данного класса можно отнести Intel Xeon Phi для использования в датацентрах и Qualcomm Snapdragon в мобильных устройствах.
GPU - Современные графические процессоры содержат много простых процессоров (ядер) и поддерживают параллельные вычисления, что делает их очень эффективными в выполнении некоторых алгоритмов. Матричные умножения, ядро DL, среди них. Однако, GPU также запрашивает относительно большое потребление энергии для вычисления и перемещения данных. В добавлении, высокоскоростной интерфейс соединения необходим для того чтобы поддержать быстрый обмен данными. Таким образом, по сравнению с другими методами, GPU предлагает мощность вычислений за счет высокой стоимости проектирования (цена за единицу) и энергопотребления. Самые современные системы DL представляют собой смесь CPU и GPU, где GPU выполняет тяжелую работу, а CPU отвечает за загрузку данных в/из памяти видеокарты и организацию вычислений. Обучение гораздо более интенсивный процесс расчета, чем вывод, и поэтому графические процессоры особенно важны для режима тренировки.
Представители: NVIDIA Tesla, AMD Radeon RX Vega, Intel HD graphics.
FPGA - Field Programmable Gate Arrays (FPGA) - это тип оборудования, которое может быть запрограммировано и реконфигурировано с использованием языка описания аппаратной архитектуры (HDL, hardware description language). Отмечается, что производительность на ватт у FPGA выше, чем у графических процессоров. Это связано с тем, что они имеют гораздо меньшее энергопотребление (часто 10 Вт), что является важным для приложений IoT и беспилотных автомобилей.
FPGA оказывают влияние на производительность системы. Контролируя путь передачи данных, они ускоряют вычисления и подключение, необходимые для сбора и обработки огромного количества информации. Кроме того, они могут напрямую получать данные и обрабатывать их без задействования хост-системы. Это освобождает процессор для управления другими системными событиями и обеспечивает более высокую производительность системы в реальном времени.
Ускоритель машинного обучения на основе FPGA обычно включает аппаратные блоки, такие как DRAM, CPU, контроллер сетевого интерфейса (NIC) и непосредственно FPGAs. DRAMs действуют как большой буфер для хранения временных данных, в то время как CPU отвечает за управление вычислениями, включая отправку инструкций FPGA.
FPGA поддерживают создание пользовательского оборудования для индивидуальных решений оптимальным образом, обеспечивая гибкость, недоступную в фиксированных устройствах. Например, переход от 32-разрядных вычислений к 8-разрядным и даже бинарным может быть выполнен незамедлительно без дополнительных производственных шагов.
Недавние исследования говорят, что FPGAs превзошли графические процессоры во многих областях и, как ожидается, превзойдут GPU в ускорении глубокого обучения [10]. Возникающие разреженные и низкоточные алгоритмы DNN предлагают повышение алгоритмической эффективности на порядки по сравнению с традиционными DNN, но они вводят пользовательские типы данных и нерегулярный параллелизм, которые трудно обрабатывать графическим процессорам. Напротив, ПЛИС предназначены для экстремальной настраиваемости при запуске нерегулярного параллелизма и пользовательских типов данных. Такие тенденции делают FPGAs перспективной платформой для запуска приложений DL, ML и AI.
Представители: Xilinx Zynq®-7000, Intel Arria®10 GX
ASIC - (application-specific integrated circuit, интегральная схема специального назначения) - интегральная схема, специализированная для решения конкретной задачи. В отличие от обычных интегральных схем для общего назначения, специализированные интегральные схемы применяются в конкретном устройстве и выполняют строго ограниченные функции, характерные только для данного устройства; вследствие этого выполнение функций происходит быстрее и, в конечном счёте, дешевле. Решения на базе ASIC обладают наименьшей гибкостью, но в тоже время являются наиболее эффективными в терминах performance/dollar и performance/watt.
Примерами архитектур данного класса могут служить TPU и VPU
TPU - Тензорные процессоры -- устройства, как правило, являющиеся сопроцессорами, управляемыми центральным процессором, оперирующие тензорами -- объектами, которые описывают преобразования элементов одного линейного пространства в другое и могут быть представлены как многомерные массивы чисел, обработка которых осуществляется с помощью таких программных библиотек, как, например TensorFlow. Они, как правило, оснащаются собственной встроенной оперативной памятью и оперируют низкоразрядными (8-битными) числами. TPU узкоспециализированы для выполнения таких операций, как матричное умножение и свёртка, используемая для эмуляции свёрточных нейронных сетей в задачах машинного обучения.
VPU - Процессоры машинного зрения -- во многом похожи на тензорные процессоры, но они узкоспециализированы для ускорения работы алгоритмов машинного зрения, в которых используются методы свёрточных нейронных сетей (CNN) и масштабно-инвариантная функция преобразования (SIFT). В них делается большой акцент на распараллеливание потока данных между множеством исполнительных ядер, включая использование модели блокнотной памяти - как в многоядерных цифровых сигнальных процессорах, и они так же, как тензорные процессоры, используются для вычислений c низкой точностью, принятой при обработке изображений.
Intel Movidius VPU можно найти в миллионах интеллектуальных камер безопасности, беспилотных летательных аппаратах, промышленном оборудовании для машинного зрения и многом другом.
1.4 Проблемы работы с ИИ-ускорителями и техники оптимизации
Ключевыми показателями для встроенного машинного обучения являются точность, энергопотребление, пропускная способность/задержка и стоимость. Как уже было сказано ранее, высокая точность алгоритмов сопровождается высокой вычислительной сложностью. Нейронный процессор должен поддерживать множество моделей, обладающих различными характеристиками: количество каналов, слоев, фильтров и их размеров. Потребность в программируемости и обеспечении более высокой размерности приводит к увеличению количества перемещений данных и вычислений. Более высокая размерность повышает объем генерируемых данных. В свою очередь, это может создать проблему для энергоэффективности, поскольку перемещение данных стоит больше, чем вычисление. Пропускная способность определяется объемом вычислений, который также увеличивается с повышением размерности данных. Стоимость оборудования определяется объемом памяти, требуемым при сохранении низкой пропускной способности.
Таким образом, поиск компромисса между всеми этими показателями является важнейшей задачей при работе с ИИ-ускорителями.
Исследователи модифицируют алгоритмы глубокого обучения, чтобы сделать их более аппаратно-дружественными при сохранении требуемого уровня точности результата работы алгоритма. Основное внимание уделяется снижению потребности в вычислениях, перемещении и хранении данных. Методы оптимизации заключаются в следующем:
Снижение вычислительной точности
В программных реализациях для процессоров общего назначения (CPU и GPU) обычно используются 32- или 64-разрядные числа с плавающей точкой, давно известно, что можно обойтись и меньшей точностью, по крайней мере на этапе вывода.
Pruning. Количество операций умножения и аккумулирования может быть уменьшено путем удаления весов с минимальным воздействием на выход через процесс, называемый pruning.
Compression. Во многих коммерческих приложениях гораздо важнее, чтобы время и потребление памяти были низкими на этапе вывода модели машинного обучения, тогда как затраты на этапе обучения не столь критичны. Если приложение не требует персонализации, то модель можно обучить один раз, а затем развернуть для миллиардов пользователей. Во многих случаях у конечного пользователя ресурсов меньше, чем у разработчика. Ключевая стратегия сокращения стоимости вывода - сжатие модели. Основная идея - заменить исходную дорогостоящую модель другой, потребляющей меньше памяти и работающей быстрее.
1.5 Обзор инструментов для работы с ИИ-ускорителями
TensorRT - платформа для высокопроизводительного инференса алгоритмов глубокого обучения. Она включает оптимизатор вывода глубокого обучения и среду исполнения, которая обеспечивает низкую задержку и высокую пропускную способность для приложений на основе глубокого обучения. TensorRT позволяет оптимизировать модели нейронных сетей, обученные во всех основных фреймворках, откалибровать для более низкой разрядности без значительных потерь в качестве и, наконец, развернуть в гипермасштабных центрах обработки данных, на встроенных или автономных платформах. TensorRT обеспечивает оптимизацию INT8 и FP16 для производственных развертываний приложений глубокого обучения, таких как потоковое видео, распознавание речи, рекомендации и обработка естественного языка. Снижение вычислительной точности значительно уменьшает латентность применения, которая требуется для обслуживания в режиме реального времени.
Qualcomm Neural Processing SDK for AI
Рисунок 2. TensorRT Workflow
Qualcomm® Neural Processing SDK for Artificial Intelligence (AI) разработан, чтобы помочь разработчикам, заинтересованным в создании решений, использующих искусственный интеллект (AI), запустить одну или несколько нейросетевых моделей, обученных Caffe/Caffe2 или TensorFlow на мобильных платформах Snapdragon, используя CPU, GPU или DSP.
Ключевые особенности:
- Имеет среду для исполнения сверточных нейронных сетей в операционных системах Linux и Android
- Поддержка ускорения для Qualcomm® Hexagon™ DSP, Qualcomm® Adreno™ GPU и Qualcomm® Kryo™, CPUs.
- API для управления загрузкой, выполнением и распределением нагрузки во время запуска
Рисунок 3. Схема работы Qualcomm Neural Processing SDK
Intel OpenVINO Toolkit (Open Visual Inference & Neural Network Optimization)
Набор инструментов, обеспечивающих быстрое развертывание решений на базе компьютерного зрения. Инструментарий позволяет увеличить рабочую нагрузку алгоритмов компьютерного зрения, исполняемых на аппаратных платформах компании Intel, и максимизировать производительность.
Основные компоненты:
Open CV - самая популярная в мире библиотека компьютерного зрения, обладает функционалом для работы с алгоритмами компьютерного зрения, как традиционными, так и алгоритмами глубокого обучения (DNN модуль), а также обработки изображений и видео. В пакете поставляется публичная версия, собранная для Intel архитектур.
Open VX - это открытый стандарт для кросс-платформенного ускорения приложений компьютерного зрения. Он разработан группой Khronos для облегчения портативной, оптимизированной и энергоэффективной обработки алгоритмов машинного зрения. OpenVX предназначен для встроенных систем и решений реального времени с применением компьютерного зрения. Он использует представление операций в виде связных графов.
Intel Media SDK - набор библиотек для работы с видео
Deep Learning Deployment Toolkit (DLDT) - инструментарий для деплоймента алгоритмов глубокого обучения на аппаратные платформы, разрабатываемые компанией Intel. Поддерживает гетерогенное исполнение алгоритмов глубокого обучения на Intel® CPU, Intel® Integrated Graphics, Intel® FPGA, Intel® Movidius™ Neural Compute Stick, Intel® Neural Compute Stick 2 and Intel® Vision Accelerator Design with Intel® Movidius™ VPU. В свою очередь, DLDT состоит из Model Optimizer и Inference Engine, Model Optimizer - кросс-платформенный инструмент для конвертации моделей из популярных фреймворков (Caffe, Tensoflow, MxNet), а также из формата ONNX в специальный формат для запуска с помощью Inference Engine, унифицированного API для высокопроизводительного инференса на многих типах оборудования таких, как CPU, GPU, FPGA, MYRIAD.
Рисунок 4. Схема взаимодействия DLDT и пользовательского приложения
1.6 Обзор подходов измерения точности работы нейронных сетей применительно к ИИ-ускорителям
Для уверенности в правильности работы нейронных процессоров необходимо иметь представление о точности работы алгоритма глубокого обучения на используемом оборудовании. Использование различных форматов представления данных, конфигураций архитектуры и специальных оптимизационных техник могут оказывать влияние на полученный результат. Кроме того, для представления самой нейронной сети аппаратное обеспечение и инструменты для работы с ним могут иметь отличающийся набор примитивов реализации (в частности при использовании единого промежуточного представления для моделей из разных фреймворков).
Ниже представлены основные техники, используемые при валидации точности работы алгоритмов применительно к нейронным процессорам. Каждая техника имеет свои достоинства и недостатки.
Сравнение содержимого выходных слоев при запуске модели на тренировочном фреймворке и в тестовой среде
Достоинства:
1. Простота реализации. Данный поход не требует полного воспроизведения валидационного пайплайна и использования аннотационной разметки. Результаты могут быть получены путем инфера модели на одних и тех же данных, как в тренировочном фреймворке, так и на ускорителе.
2. Скорость работы. Реализация данного метода может не требовать большого объема входных данных и следовательно может применяться в качестве техника регрессионного тестирования при частых вносимых изменениях в софтверный стек для взаимодействия с нейронным процессором или модернизации нейронной сети.
Недостатки:
1. Тестовое покрытие и достаточность валидационной выборки. Тестовое покрытие и проверяемые сценарии имеют прямую зависимость от используемых в тестировании входных данных. Для различных задач может существовать большое количество сценариев работы модели. Сложной задачей при использовании этой техники является определить оптимальный объем данных, которые будут использованы, чтобы проверить наиболее приближенные к реальному применению модели сценарии.
2. Неустойчивость к разнице в формате представления данных. Арифметика вычислений и формат представления данных при запуске исходной модели и исполняемой на устройстве могут иметь различия. Данный подход является чувствительным к неточностям, вызванным этой особенностью нейронных процессоров. Необходимо вводить порог допустимой погрешности, которая может быть вызвана этим фактором.
3. Сложность интерпретируемости результатов. Вышеперечисленные недостатки приводят к тому, что в определенной степени довольно сложно гарантировать, что результат является валидным. Недостаточность тестовых сценариев может привести к тому, что результат валидации будет считаться true positive, а проблемы с различиями в формате представления данных, наоборот, вызвать false positive.
Использование внешнего API для конкретного датасета
Публичные датасеты, используемые в качестве популярных соревнований, часто обладают собственными библиотеками для работы с данными и организацией валидации (cocoapi для MSCOCO, cityscapesScripts для CityScapes и др.). Как правило, данные инструменты требуют записи результатов работы модели в определенным формат(например, json файл, организованный по специальным правилам), что делает их независимыми от представления данных модели и используемой платформы.
Достоинства:
1. Использование метрик качества. Для большинства приложений невозможно достичь полной безошибочности. Причина может заключаться в том, что входные признаки содержат неполную информацию о выходной величине, или в том, что система принципиально стохастическая. Кроме того, нас ограничивает конечный объем обучающих данных. Поэтому как правило определяются требования к допустимому уровню ошибки и использованному показателю качества. В академических исследованиях обычно имеется некоторая оценка частоты ошибок, основанная на ранее опубликованных результатах эталонного тестирования. При разработке коммерческого продукта у нас есть представление о том, какая частота ошибок необходима, чтобы приложение можно было считать безопасным, рентабельным или привлекательным для пользователей. В роли данных показателей служат метрики эффективности работы алгоритма, которые могут быть различны в рамках решаемой задачи. Наличие метрик обеспечивает интерпретируемость результата и удобство при сравнении т.к. как правило валидационный датасет обладает достаточной полнотой данных, а результат представляется в виде общепризнанного показателя, который может быть сопоставлен с результатами других моделей в данной категории. Кроме того, это также может обеспечить устойчивость к различным форматам хранения данных в зависимости от имплементации метрики.
2. Подход к валидации не зависит от имплементации модели. Данный подход применяется как на уровне работы модели в исходном фреймворке, так и при аппаратной реализации. Необходимость сохранения результата дает возможность нивелировать разницу при подсчете показателя качества и при этом оставляет возможность визуального сопоставления результатов.
3. Стабильность API. Как правило, собственные инструменты имеют популярные общепризнанные наборы данных. Это означает, что данный подход используется многими разработчиками и не терпит резких изменений, которые могут привести к изменению результатов, полученных на предыдущей версии инструмента.
Недостатки:
1. Сложность адаптации для работы с датасетами, хранимыми в другом формате. Подобные инструменты требуют соблюдать определенную структуру данных, подаваемых на вход, как в качестве ground truth, так и результата работы модели и ответственность за соблюдение этой структуры лежит на пользователе. Это означает, что если мы захотим использовать другой датасет или модель, выдающую результаты в несколько ином формате это может потребовать дополнительных шагов по приведению к первоначальному формату, обрабатываемому внешним API.
2. Не гарантирует отсутствие различий в шагах препроцессинга. В общем случае валидационный пайплайн состоит из следующих шагов: препроцессинг (подготовка входных данных), запуск модели и получение результатов, постпроцессинг (обработка результатов и подготовка их к подсчету метрики, в данном случае - приведение результатов к формату, принимаемому на вход инструментарием для валидации и, наконец, непосредственно определение метрики качества. В данном случае, все кроме последнего шага организуется пользователем самостоятельно, что не исключает различий на других шагах при сборе результатов инференса на исходном фреймворке и с использованием ИИ-ускорителя, это может давать искаженное представление о результатах подсчета метрики.
Организация полного валидационного конвейера для подсчета метрик
Можно сказать, что данный метод является расширенной версией предыдущего, который в тоже время позволяет уменьшить риски влияния негативных черт, описанных выше. Единство применяемых техник и инструментов позволяет с большей точностью гарантировать достоверность полученных результатов и в тоже время исключить влияние посторонних факторов. А сосредоточение всех шагов в одном месте, обеспечивает простоту интеграции и автоматизации подхода.
Техники препроцессинга для задач компьютерного зрения
Традиционно компьютерное зрение считается одной из основных областей применения глубокого обучения, поскольку зрение не вызывает особых трудностей у человека и многих животных, но при этом является сложной задачей для компьютеров. Большинство из самых популярных стандартных эталонных задач для сравнения алгоритмов глубокого обучения так или иначе связаны с распознаванием объектов или текста.
Компьютерное зрение - это очень обширная дисциплина, охватывающая большое количество способов обработки изображений и широкое разнообразие приложений - от воспроизведения зрительных способностей человека, например распознавания лиц, до создания абсолютно новых видов зрительных способностей.
Так как исходные данные могут быть представлены в не совсем пригодном виде для архитектур глубокого обучения, поэтому это может требовать применения в приложениях сложного процесса предварительной обработки. В компьютерном зрении объем такой предобработки сравнительно невелик. Изображения следует привести к стандартному виду, так чтобы значения всех пикселей принадлежали одному и тому же разумному диапазону, например [0,1] или [-1, 1]. Во многих архитектурах компьютерного зрения требуется, чтобы все изображения были стандартного размера, поэтому их необходимо либо обрезать, либо масштабировать. Но даже такое масштабирование не всегда необходимо. Некоторые сверточные модели принимают входные данные переменного размера и динамически подстраивают свои области пулинга, так чтобы размер выхода был постоянным, а в других сверточных моделях размер выхода переменный, автоматически подстраиваемый под размер входа.
Другие виды предобработки применяются как к обучающему, так и к тестовому набору с целью привести каждый пример к канонической форме, уменьшив тем самым вариативность, которую модель должна учитывать. Снижение степени вариативности способствует уменьшению ошибки обобщения и размера модели, необходимого для аппроксимации обучающего набора.
Основные метрики качества
В задачах машинного обучения для оценки качества моделей и сравнения различных алгоритмов используются метрики, а их выбор и анализ -- непременная часть работы специалиста в области машинного обучения.
Метрики качества могут быть различными в зависимости от решаемой задачи. В данном разделе представлены наиболее популярные метрики оценки качества применительно к различным задачам.
Метрики в задачах классификации
Важным понятием при описании классификационных метрик является матрица ошибок - confusion matrix.. Квадранты матрицы соответственно описывают верно и ошибочно предсказанные значения в зависимости от позитивного (верно/неверно предсказано, что объект принадлежит классу) и негативного (верно/неверно определено, что объект данному классу не принадлежит) условия.
Рисунок 5 confusion matrix
Accuracy Metric - измеряет количество верно классифицированных объектов относительно общего количества всех объектов. Эта метрика может иметь неустойчивость для несбалансированных классов, где может быть много экземпляров одного класса и мало другого.
Формула 1 accuracy metric
Recall/Sensitivity Metric - определяет сколько объектов модель смогла правильно классифицировать с позитивной меткой из всего множества позитивных.
Формула 2 recall metric
Precision Metric определяет сколько из всех объектов, которые классифицируются как положительные, действительно являются положительными, относительно общего количества полученных от модели позитивных меток.
Формула 3 precision
F1 score - гармоническое среднее, сочетание precision и recall, дает некоторый компромисс между ними двумя, оценка F1 достигает своего наилучшего значения в 1 и худшее в 0.
Формула 4 F1 score
Метрики в задачах регрессии
Mean Absolute Error (MAE) - измеряет среднее значение абсолютной разницы между фактическим значением и прогнозируемым значением.
Формула 5 MAE
Mean Squared Error (MSE) - измеряет среднюю сумму квадратной разности между фактическим значением и прогнозируемым значением для всех точек данных. Выполняется возведение во вторую степень, поэтому отрицательные значения не компенсируют положительными. А также в силу свойств этой метрики, усиливается влияние ошибок, по квадратуре от исходного значения. Чем меньше MSE, тем точнее наше предсказание. Оптимум достигается в точке 0, то есть модель идеально предсказывает.
Формула 6 MSE
Root Mean Squared Error (RMSE) - квадратный корень от квадрата ошибки. Ее легко интерпретировать, поскольку он имеет те же единицы, что и исходные значения (в отличие от MSE).
Формула 7 RMSE
Метрики качества в задачах детектирования объектов
PR curve хороший способ оценить эфективность детектора объектов, так как уверенность изменяется путем построения кривой для каждого класса объектов. Детектор объектов определенного класса считается хорошим, если его точность остается высокой по мере увеличения отзыва, а это означает, что при изменении доверительного порога точность и отзыв все равно будут высокими.
mAP является общей метрикой оценки, используемой во многих задачах распознавания и обнаружения (сокращенно от ”mean average precision”). Для подсчета метрики необходимо объединить все детектированные объекты по всем тестовым изображениям, чтобы нарисовать кривую точности (кривую PR) для каждого класса; “average precision” (AP) - это область под кривой PR. Учитывая, что целевые объекты находятся в разных классах, мы сначала вычисляем AP отдельно для каждого класса, а затем усредняем по классам. Предсказание является True Positive, если оно имеет отношение "пересечения над объединением" (IoU) больше некоторого порога (обычно 0,5; если это так, метрику принято обозначать mAP@0.5)
Метрики качества в задачах семантической сегментации
В задачах общей семантической сегментации и распознавания сцен используются метрики, являющимися вариациями pixel accuracy и intersection over union. Пусть количество пикселей класса i, которое, как было предсказано, что принадлежит классу j, где существует только количество классов. Пусть - полное количество пикселей класса i, тогда формулы для вычисления метрик будут иметь следующий вид:
Формула 8 segmentation метрики
Метрики качества в задачах реидентификации объектов
Rank-r matching rate - доля изображений p, которые были корректно идентифицированы с топ-рангом r, от общего количества изображений P в галерее.
Cumulative Matching Characteristics (CMC) curves - самая популярная метрика для задач реидентификации человека. Рассмотрим простую конфигурацию с одной галереей, где каждый идентификатор галереи имеет только один экземпляр. Для каждого запроса алгоритм ранжирует все образцы галереи в соответствии с их расстояниями до запроса в порядке возрастания, а точность CMC top-k равна:
которая является функцией Хевисайда (функцией единичного скачка). Окончательная кривая CMC вычисляется путем усреднения функций единичного скачка по всем запросам.
mAP (mean average precision) среднее значение precision по средней точности всех запросов.
Pairwise Accuracy метрика, находящая соотношение верно предсказанных пар избражений (как позитивных TP (один и тот же человек на фотографии), так и негативных TN (на фотографиях изображены разные люди) к общему числу пар, указанных в аннотации.
2. Практическая часть
Данная глава описывает процесс разработки программного обеспечения, представляющего собой консольный инструмент для проверки точности работы алгоритмов глубокого обучения, запущенных на различных ИИ-ускорителях с помощью OpenVINO Toolkit, и включает в себя требования к продукту разработки, перечисление используемых инструментов, архитектуру программного обеспечения, логику его работы и руководство пользователя.
2.1 Требования к продукту
1. Технические требования:
...Подобные документы
Особенности нейронных сетей как параллельных вычислительных структур, ассоциируемых с работой человеческого мозга. История искусственных нейронных сетей как универсального инструмента для решения широкого класса задач. Программное обеспечение их работы.
презентация [582,1 K], добавлен 25.06.2013Диагностический анализ изучения алгоритмов обучения нейронных сетей "с учителем". Сбор входных и выходных переменных для наблюдений и понятие пре/пост процессирования. Подготовка и обобщение многослойного персептрона, модель обратного распространения.
курсовая работа [249,3 K], добавлен 22.06.2011Понятие и свойства искусственных нейронных сетей, их функциональное сходство с человеческим мозгом, принцип их работы, области использования. Экспертная система и надежность нейронных сетей. Модель искусственного нейрона с активационной функцией.
реферат [158,2 K], добавлен 16.03.2011Рост активности в области теории и технической реализации искусственных нейронных сетей. Основные архитектуры нейронных сетей, их общие и функциональные свойства и наиболее распространенные алгоритмы обучения. Решение проблемы мертвых нейронов.
реферат [347,6 K], добавлен 17.12.2011Описание технологического процесса напуска бумаги. Конструкция бумагоделательной машины. Обоснование применения нейронных сетей в управлении формованием бумажного полотна. Математическая модель нейрона. Моделирование двух структур нейронных сетей.
курсовая работа [1,5 M], добавлен 15.10.2012Анализ применения нейронных сетей для прогнозирования ситуации и принятия решений на фондовом рынке с помощью программного пакета моделирования нейронных сетей Trajan 3.0. Преобразование первичных данных, таблиц. Эргономическая оценка программы.
дипломная работа [3,8 M], добавлен 27.06.2011Искусственные нейронные сети как одна из широко известных и используемых моделей машинного обучения. Знакомство с особенностями разработки системы распознавания изображений на основе аппарата искусственных нейронных сетей. Анализ типов машинного обучения.
дипломная работа [1,8 M], добавлен 08.02.2017Способы применения технологий нейронных сетей в системах обнаружения вторжений. Экспертные системы обнаружения сетевых атак. Искусственные сети, генетические алгоритмы. Преимущества и недостатки систем обнаружения вторжений на основе нейронных сетей.
контрольная работа [135,5 K], добавлен 30.11.2015Общие сведения о принципах построения нейронных сетей. Искусственные нейронные системы. Математическая модель нейрона. Классификация нейронных сетей. Правила обучения Хэбба, Розенблатта и Видроу-Хоффа. Алгоритм обратного распространения ошибки.
дипломная работа [814,6 K], добавлен 29.09.2014Способы применения нейронных сетей для решения различных математических и логических задач. Принципы архитектуры их построения и цели работы программных комплексов. Основные достоинства и недостатки каждой из них. Пример рекуррентной сети Элмана.
курсовая работа [377,4 K], добавлен 26.02.2015Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.
лабораторная работа [1,1 M], добавлен 05.10.2010Нейронные сети как средство анализа процесса продаж мобильных телефонов. Автоматизированные решения на основе технологии нейронных сетей. Разработка программы прогнозирования оптово-розничных продаж мобильных телефонов на основе нейронных сетей.
дипломная работа [4,6 M], добавлен 22.09.2011Модели нейронных сетей и их реализации. Последовательный и параллельный методы резолюции как средства логического вывода. Зависимость между логическим следованием и логическим выводом. Применение технологии CUDA и реализация параллельного алгоритма.
дипломная работа [1,5 M], добавлен 22.09.2016Исследование эффективности применения нейронных сетей в рамках отношений между людьми. Принцип работы с нейросимулятором. Составление обучающей выборки и проектирование персептронов. Анализ выбора супружеской пары с использованием нейросетевых технологий.
презентация [150,8 K], добавлен 19.08.2013Гибкая технологии извлечения знаний из нейронных сетей, настраиваемой с учетом предпочтений пользователя. Тестирование, пробная эксплуатация и разработка новой версии программных средств, реализующих данную технологию. Индивидуальные пространства смыслов.
дипломная работа [336,3 K], добавлен 07.06.2008Технологии решения задач с использованием нейронных сетей в пакетах расширения Neural Networks Toolbox и Simulink. Создание этого вида сети, анализ сценария формирования и степени достоверности результатов вычислений на тестовом массиве входных векторов.
лабораторная работа [352,2 K], добавлен 20.05.2013Исследование задачи и перспектив использования нейронных сетей на радиально-базисных функциях для прогнозирования основных экономических показателей: валовый внутренний продукт, национальный доход Украины и индекс потребительских цен. Оценка результатов.
курсовая работа [4,9 M], добавлен 14.12.2014Изучение методов разработки систем управления на основе аппарата нечеткой логики и нейронных сетей. Емкость с двумя клапанами с целью установки заданного уровня жидкости и построение нескольких типов регуляторов. Проведение сравнительного анализа.
курсовая работа [322,5 K], добавлен 14.03.2009Простейшая сеть, состоящая из группы нейронов, образующих слой. Свойства нейрокомпьютеров (компьютеров на основе нейронных сетей), привлекательных с точки зрения их практического использования. Модели нейронных сетей. Персептрон и сеть Кохонена.
реферат [162,9 K], добавлен 30.09.2013Сущность и функции искусственных нейронных сетей (ИНС), их классификация. Структурные элементы искусственного нейрона. Различия между ИНС и машинами с архитектурой фон Неймана. Построение и обучение данных сетей, области и перспективы их применения.
презентация [1,4 M], добавлен 14.10.2013