Резюме:Популярная в последнее время технология обработки распознавания изображений и проверки заявлений может справиться с нарастающей сценой возврата после импульсивного шоппинга на разделочной вечеринке. Итак, какой технический принцип стоит за этим? Может ли вычислительная платформа ИИ реконструировать бизнес-движок предприятия?
Благодаря майнингу и применению технологий искусственного интеллекта каждый год в продвижение электронной коммерции добавляется больше свежести и сюрпризов. Прошло более десяти лет с тех пор, как по сей день произошли события Double 11, 618 и другие.От ценовой войны в начале до конкуренции всестороннего покупательского опыта сегодня продвижение электронной коммерции уже не просто шоппинг, но и шоппинг.Всеобъемлющий «военный парад» для всех аспектов индустрии электронной коммерции.
Среди них применение технологии компьютерного зрения также появляется бесконечным потоком. На основе CV для поиска картинок по картинкам пользователи могут делать фотографии или скриншоты интересующих их товаров, когда они видят интересующие их товары в Интернете или в реальности.Они могут искать тот же товар на платформе электронной коммерции. фотографируя, чтобы купить, после фестиваля продвижения электронной коммерции, Затем пришел «обратный прилив». В ответ на эту ситуацию финансовая платформа электронной коммерции представит технологию распознавания изображений для обработки претензий, чтобы справиться с растущим спросом на возврат после большого количества импульсных покупок. Итак, как же работает технология, стоящая за этим? Может ли вычислительная платформа ИИ удовлетворить потребности клиентов и реконструировать бизнес-движок предприятия?
Начните с матричного умножения (GEMM) в сверточных нейронных сетях
Говоря об ИИ-бизнесе, мы должны упомянуть самый классический AlexNet. Модель AlexNet была предложена в 2012 году и считается одной из самых влиятельных моделей в области компьютерного зрения. Сеть AlexNet в основном состоит из восьми слоев, первые пять слоевсверткаслоев, а последние три слоя являются полносвязными слоями. С операциями объединения и нормы шкала параметров всех сверточных слоев и полносвязных слоев, а также количество вычислений с плавающей запятой для каждого слоя перечислены ниже.Из рисунка видно, что шкала параметров сети AlexNet достигла порядка 60 миллионов, а объем расчета до 720MFlops. При сравнении нескольких классических сетей классификации по горизонтали размер параметра и объем вычислений огромны. С точки зрения объема вычислений более 99% вычислений составляют операции свертки, которые по сути являются матричными операциями.
При таком параметре масштаба и количестве расчетов ускорение работы матрицы стало актуальной проблемой, требующей решения в области визуальных вычислений. Пример: типичная операция умножения матриц 16*16, как она рассчитывается на другом оборудовании?
В процессоре для матричного умножения требуется 3 цикла for, и каждый бит умножается и добавляется по очереди, что теоретически требует 16*16*16*2 тактов.
Умножение матриц в GPU оптимизировано, GPU может напрямую выполнять умножение и сложение векторов, поэтому вышеуказанные операции можно разложить на 16*16 операций умножения и сложения, то есть требуется 256 тактов.
Процессор Ascend имеет специальный блок умножения матриц, который может выполнить операцию умножения матриц за один такт. Благодаря отличной производительности в ИИ-рассуждениях и сверхнизкому энергопотреблению он используется в вычислительных решениях Ascend AI.
Вычислительные решения Ascend AI, новые горизонты в облаке
Вычислительные решения Ascend AI с экстремальной вычислительной мощностью, сквозной облачной интеграцией, инновациями полного стека и мощной открытой экосистемой помогают отраслевым клиентам в таких категориях видения AI, как классификация изображений, обнаружение целей, обнаружение человека. , распознавание лиц и обнаружение транспортных средств Выдающиеся достижения в области вычислительной техники.
На уровне IAAS вычислительное решение Ascend AI может предоставлять экземпляры логического вывода Ascend Ai, включая Ai1, KAi1 и экземпляр KAt1 без операционной системы, которые можно использовать для обучения Ai. Ai1 продается, нажмите, чтобы купить.
На операторском уровне вычислительные решения Ascend AI могут поддерживать операторов основных фреймворков TensorFlow и Caffe, а также возможность настраивать операторов. Операторский уровень также предоставляет стандартизированный интерфейс Matrix, и пользователи могут создавать механизм обслуживания Ascend на основе стандартизированного интерфейса Matrix.
В то же время пользователи также могут использовать Huawei Ascend Serving для предоставления внешних запросов RestFull API или gRPC, чтобы легко отделить сервисы. Верхний уровень взаимодействует с сервисами контейнеров ИИ, чтобы легко добиться гибкого масштабирования и значительно сократить цикл развертывания сервисов.
Как внедрить бизнес-движок с интерфейсом Matrix
Пользователи могут использовать стандартный интерфейс Matrix для реализации бизнес-движка и использовать возможности ускорения Ascend AI через SDK.
Matrix — это общий движок выполнения бизнес-процессов, работающий в операционной системе и под бизнес-приложениями. Он может скрыть различия операционных систем и предоставить унифицированный стандартизированный интерфейс для приложений, включая интерфейс управления процессами (поддерживающий язык C/C++, язык Python) и интерфейс управления моделью (поддерживающий язык C++).
Для типичного бизнес-потока он обычно включает чтение данных, предварительную обработку данных (декодирование изображения, предварительную обработку), вывод модели, постобработку данных и другие процессы.
В структуре Matrix каждый из вышеперечисленных процессов может быть абстрагирован в механизм, который является вычислительным механизмом для определенной функции. Несколько движков образуют Граф, а Граф отвечает за управление движками. Matrix — это общий механизм выполнения бизнес-процессов, который может управлять генерацией, выполнением и уничтожением графиков.
Процесс вычисления матрицы
Что касается процесса расчета Матрицы, мы начинаем с процесса создания, процесса выполнения и процесса уничтожения.
Создайте процесс, как показано красной стрелкой:
Создайте объект Graph на основе конфигурации Graph.
Загрузите файлы автономной модели и файлы конфигурации на сторону устройства.
Инициализируйте механизм, и механизм логического вывода загрузит модель через интерфейс Init автономного диспетчера моделей (AIModelManager).
Поток выполнения показан серой стрелкой:
Входные данные
Механизм предварительной обработки вызывает интерфейс API dvpp для выполнения предварительной обработки данных, такой как кодирование/декодирование, матирование и масштабирование видео/изображений.
Механизм логического вывода вызывает интерфейс Process автономного менеджера модели (AIModelManager) для выполнения вычислений логического вывода.
Механизм вывода вызывает интерфейс SendData, предоставленный Matrix, чтобы вернуть результат вывода в DestEngine. DestEngine возвращает результат вывода в APP через функцию обратного вызова.
Процесс уничтожения, показанный синей стрелкой:
Завершите программу и уничтожьте объект Graph.
Двойное добавление BUFF потока данных Matrix и процесса вызова
Копия потока данных "0"
Мы видим, что производительность передачи потока данных в структуре Matrix имеет решающее значение.
Набор интерфейсов выделения и освобождения памяти предоставляется в фреймворке отдельно, включая HIAI_DMalloc/HIAI_DFree, HIAI_DVPP_DMalloc/HIAI_DVPP_DFree, и поддерживает язык C/C++.
в,
Интерфейс HIAI_DMalloc/HIAI_DFree в основном используется для обращения к памяти, а затем взаимодействует с интерфейсом SendData для передачи данных со стороны хоста на сторону устройства;
Интерфейс HIAI_DVPP_DMalloc/HIAI_DVPP_DFree в основном используется для обращения к памяти, используемой DVPP на стороне устройства.
Вызывая интерфейсы HIAI_DMalloc/HIAI_DFree, HIAI_DVPP_DMalloc/HIAI_DVPP_DFree для запроса памяти, можно свести к минимуму копирование и сократить время обработки процесса.
HIAI_Dmalloc имеет лучшую производительность на этапах перекрестной передачи и вывода модели.Основные преимущества заключаются в следующем:
Запрошенная память может использоваться для передачи данных, что позволяет избежать копирования данных между матрицей и модулем передачи данных.
Запрошенная память может напрямую активировать механизм нулевого копирования вывода модели, сокращая время копирования данных.
Интерфейс HIAI_DVPP_Dmalloc реализован в:
Запрошенная память может использоваться DVPP и может быть прозрачно передана для вывода модели после того, как DVPP будет израсходован.
Если вывод модели не требуется, данные в запрошенной памяти могут быть напрямую возвращены на сторону хоста.
Удобная передача данных хост-устройство
В случае передачи данных между хостом и устройством использование HIAI_REGISTER_SERIALIZE_FUNC для сериализации/десериализации пользовательских типов данных может обеспечить высокопроизводительную передачу данных и сэкономить время передачи.
Матрица описывает данные, подлежащие передаче, в форме «управляющая информация + информация о данных», управляющая информация относится к определяемому пользователем типу данных, а информация о данных относится к содержимому данных, которое необходимо передать. Для обеспечения передачи данных между Хостом и Устройством Matrix предоставляет следующие механизмы:
Перед передачей данных пользователи могут вызвать макрос HIAI_REGISTER_SERIALIZE_FUNC для регистрации пользовательских типов данных, пользовательских функций сериализации и пользовательских функций десериализации.
После того, как пользователь вызовет интерфейс SendData для отправки данных на локальный конец, Matrix выполнит следующую обработку.
Вызовите определяемую пользователем функцию сериализации, чтобы сериализовать управляющую информацию и поместить сериализованную управляющую информацию в память (ctrlBuf).
Копия управляющей информации сохраняется в памяти противоположного конца посредством отображения DMA (прямой доступ к памяти), и отношение отображения управляющей информации между локальным концом и противоположным концом сохраняется. Указатель памяти (dataBuf) на информацию о данных был передан через входные параметры интерфейса SendData. DataBuf применяется пользователем путем вызова интерфейса HIAI_DMalloc/HIAI_DVPP_DMalloc. После обращения к памяти система копирует локальные данные информация через сопоставление DMA и сохраняет ее в паре.В памяти конца, и поддерживает отношение сопоставления информации данных между локальным концом и одноранговым концом.
Сообщение сборки отправляется партнеру, в основном отправляя адрес и размер ctrlBuf, а также адрес и размер dataBuf партнеру.
После того, как одноранговая сторона получит сообщение, Matrix вызовет определяемую пользователем функцию десериализации, чтобы проанализировать управляющую информацию и данные данных, полученные одноранговой стороной, и отправить проанализированные данные соответствующему принимающему механизму для обработки.
После того, как одноранговый узел проанализирует данные, управляющая информация была использована, поэтому память (ctrlBuf), в которой хранится управляющая информация, может быть освобождена.Однако, поскольку память для хранения управляющего сообщения запрашивается на локальном конце, одноранговому узлу необходимо чтобы отправить локальный конец, чтобы освободить сообщение ctrlBuf.
После того, как локальный конец получит сообщение, отпустите ctrlBuf.
После того, как Engine получит данные и завершит всю обработку, он может освободить dataBuf, но поскольку Matrix не знает, когда пользователь закончит использовать dataBuf, пользователю необходимо вернуть и привязать dataBuf как интеллектуальный указатель, когда пользователь реализует функция десериализации Деструктор hiai::Graph::ReleaseDataBuffer. Когда интеллектуальный указатель завершает свой жизненный цикл и уничтожается, автоматически вызывается деструктор для отправки сообщения об освобождении памяти dataBuf на локальный конец.
После того, как локальный конец получит сообщение, он выпустит dataBuf.
Выше мы подробно рассказали, как использовать интерфейс Matrix для создания бизнес-движка.В то же время пользователи также могут интегрировать Ascend Serving, чтобы предоставлять стандартные запросы RestFull API или gRPC извне, а также предоставлять отдельные возможности стандартного интерфейса вывода. Или сотрудничайте со службами контейнеров ИИ, чтобы обеспечить гибкое масштабирование, простое развертывание и замену модели в горячем режиме.
Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~