8000 GitHub - noAccessUser/readme: test readme
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

noAccessUser/readme

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

NeoML 1111 NeoML is an end-to-end machine learning framework that allows you to build, train, and deploy ML models. This framework is used by ABBYY engineers for computer vision and natural language tasks, including image preprocessing, classification, document layout analysis, OCR, and data extraction from structured and unstructured documents. 44444 Key features:

  • Neural networks with support for over 100 layer types
  • Traditional machine learning: 20+ algorithms (classification, regression, clustering, etc)
  • CPU and GPU support, fast inference
  • ONNX support
  • Languages: C++, Java, Objective C
  • Cross-platform: the same code can be run at Windows, Linux, macOS, iOS, and Android

Содержание

Установка и сборка

Поддерживаемые платформы

Полная С++ версия библиотеки была протестирована на следующих платформах:

Целевая операционная система Компилятор Архитектура
Windows 7+ (CPU и GPU) MSVC 2015+ x86, x86_64
Ubuntu 14+ (CPU) gcc 5.4+ x86_64
MacO 8000 S 10.11+ Apple clang 11+ x86_64
iOS 11+ (CPU, GPU) Apple clang 11+ arm64-v8a, x86_64
Android 5.0+ (CPU), Android 7.0+ (GPU) clang 7+ armeabi-v7a, arm64-v8a, x86, x86_64

Версии для прямого прохода нейронных сетей на Java и Objective-C тестировались на платформах:

Целевая операционная система Компилятор Архитектура
iOS 11+ (CPU, GPU) Apple clang 11+ arm64-v8a, x86_64
Android 5.0+ (CPU), Android 7.0+ (GPU) clang 7+ armeabi-v7a, arm64-v8a, x86, x86_64

Сторонние программы

Для сборки вам понадобится CMake (версии не ниже 3.11).

Для максимальной производительности на CPU под Windows, Linux и macOS мы используем Intel MKL.

Также опционально для вычислений на GPU под Windows можно использовать CUDA (версии 10.2), а для Android - Vulkan (версии не ниже 1.1.130).

Сборка полных C++ версий

Сборка полных С++ версий на различных платформах описана здесь.

Сборка inference версий для Java и Objective-C

Сборка Java и Objective-C версий для запуска обученных нейросетей на различных платформах описана здесь.

Начало работы

Посмотреть готовые примеры и быстрее начать работу можно с помощью обучающих материалов:

Описание API

Общие принципы

В основу библиотеки заложены следующие принципы:

Независимость от платформы

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

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

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

Независимость вычислительных движков

Каждая сеть использует только одну реализацию вычислительного движка; все её слои должны быть созданы над этим же движком. Если выбран движок над GPU, то все вычисления будут выполняться только на нём. Т.е. невозможна ситуация, когда внутри одного алгоритма, «лёгкие» функции (например, сложение векторов) выполняются на CPU, а «тяжёлые» (например, умножение матриц) - на GPU. Это необходимо для того, чтобы избежать лишней синхронизации и копирования данных между CPU и GPU.

Поддержка многопоточности

Интерфейс вычислительного движка IMathEngine потокобезопасен: один и тот же вычислительный движок может быть использован в разных сетях с разных потоков.

При этом стоит учитывать возможные накладные расходы на синхронизацию.

А вот реализация нейросети CDnn не является потокобезопасной. Сеть может использоваться только в одном потоке.

Поддержка ONNX

Модели, созданные другими фреймворками, могут быть использованы в NeoML благодаря поддержке формата ONNX.

Собственный формат сериализации

Для сохранения и загрузки моделей библиотека использует собственный бинарный формат сериализации (классы CArchive, CArchiveFile).

Поддержка GPU

Использование GPU часто позволяет получить существенный выигрыш в производительности при выполнении математических операций. NeoML активно использует возможности GPU при обучении и запуске моделей. Данная возможность является опциональной и зависит от наличия необходимого аппаратного и программного обеспечения. Библиотека предъявляет следующие требования для использования GPU:

  • Windows: NVIDIA® GPU card с поддержкой CUDA® 10.2.
  • iOS: Apple GPU A7+.
  • Android: устройства с поддержкой Vulkan 1.0.
  • Linux/macOS: вычисления на GPU пока не поддержаны.

FineObj

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

В связи с этим открытая версия библиотеки использует некоторые примитивы из этого фреймворка, см. общие классы.

C++ интерфейс

NeoML состоит из двух C++ библиотек:

Библиотека алгоритмов NeoML

Библиотека представляет собой набор C++ объектов, реализующих высокоуровневую логику различных алгоритмов. Этот набор можно разделить на следующие части:

Вычислительный движок NeoMathEngine

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

Данный модуль имеет несколько реализаций для различных платформ; в частности, при наличии графического вычислительного устройства (GPU) можно вычислять на нём.

Интерфейс вычислительного движка представляет собой набор C++ интерфейсов и описан здесь

Java интерфейс

Для удобства использования библиотеки в языка Java и Kotlin создан java интерфейс, который предоставляет возможность запуска обученной ранее нейронной сети.

Objective-C интерфейс

Для удобства использования библиотеки в языках Swift и Objective-C создан Objective-C интерфейс, который предоставляет возможность запуска обученной ранее нейронной сети.

Лицензия

Copyright © 2016-2020 ABBYY Production LLC. Licensed under the Apache License, Version 2.0. Смотрите файл лицензии.

About

test readme

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0