1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-emll

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
ReadMe.md

Библиотека Edge ML: высокопроизводительная библиотека для машинного обучения на устройстве

Edge ML Library (EMLL) предлагает оптимизированные базовые процедуры, такие как общие матричные умножения (GEMM) и квантования, чтобы ускорить машинное обучение (ML) на устройствах на базе ARM. EMLL поддерживает типы данных fp32, fp16 и int8. Библиотека ускоряет работу механизмов NMT, ASR и OCR компании Youdao, Inc.

Особенности

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

  • Простой интерфейс. Данные и параметры передаются без усложнений. Матрицы и массивы передаются с базовым адресом и размерами. Параметры GEMM, редко используемые при выводе на устройство, например LDA-LDC, исключены из интерфейса. Нет зависимости от сторонних вычислительных библиотек.

  • Расширяемость. EMLL абстрагирует основные структуры алгоритмов высокопроизводительного матричного умножения на основе CPU, а также функции смещения/квантования до общих макросов (см. файлы в include/common), которые могут быть применены к различным процессорам. При разработке для новой архитектуры можно сэкономить много времени благодаря этим макросам.

API EMLL

EMLL предоставляет ряд функций C. Подробности см. в Usage_EN.md.

Тип Имя Параметры
Матричное умножение data_type + «gemm» matrix_orders, адреса матриц, M, N, K, beta, количество потоков
Слой с полным подключением (fp32) «fc» адреса src/weight/bias/output, размеры M/K/N, порядки исходных матриц, (количество потоков)
Квантование «quantize_» + «симметричный»/«асимметричный» + input_type + output_type входной массив, выходной массив, (нулевая точка), масштаб, размер массива, входной диапазон
Реквантизация «requantize_» + «симметричная/асимметричная» + «XtoY» входной массив, выходной массив, (нулевая точка), выходная шкала, размер массива, входной диапазон
Смещение «bias» + data_type матрица, которую нужно сместить, скалярное смещение всех элементов, векторное смещение вдоль основного направления, векторное смещение вдоль второстепенного направления, размеры матрицы

Поддерживаемые архитектуры и типы данных

Целевой процессор Матричное умножение Смещение Квантование Реквантизация
ARMv7a 32-бит fp32 -> fp32, (u)int8 -> (u)int32 fp32, int32 fp32 -> (u)int8/(u)int16 int32 -> (u)int8/(u)int16, int16 -> (u)int8
ARMv8a 64-бит fp32 -> fp32, (u)int8 -> (u)int32, fp16 -> fp16 fp32, fp16, int32 fp32 -> (u)int8/(u)int16 int32 -> (u)int8/(u)int16, int16 -> (u)int8

Поддерживаемые ОС: Linux & Android.

Поддерживаемые компиляторы: GCC & Clang.

План на будущее

В будущем EMLL может поддерживать устройства с GPU и NPUs, расширяя доступные функции в соответствии с бизнес-требованиями.

Лицензия

Apache 2.0.

Ссылка

Eigen: [https://eigen.tuxfamily.org].

OpenBLAS: [https://github.com/xianyi/OpenBLAS].

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
C и 2 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-emll.git
git@api.gitlife.ru:oschina-mirror/mirrors-emll.git
oschina-mirror
mirrors-emll
mirrors-emll
v1.0