Interference NDK 3: обзор новых возможностей

В конце прошлого года состоялся релиз новой версии фреймворка Interference NDK — 3.0.0, а недавно вышло обновление 3.1.0. Interference NDK (INDK) является инструментом для обучения, откладки и инференса нейронных сетей архитектуры Interference (интерференционная модель).

Архитектура Interference моделирует нейронную обработку сигналов с использованием пространственной математики, где нейроны работают в многомерном пространстве и обрабатывают сигналы через компоненты, вдохновлённые биологией: синапсы, рецепторы и нейромедиаторы.

Фреймворк обладает высокой масштабируемостью. Он подходит как для мощных вычислительных кластеров, так и для встроенных систем, включая системы реального времени, и позволяет решать огромное количество различных задач (от поиска аномалий в данных до распознавания визуальных образов и звука).

Новая версия принесла большое количество новых возможностей для разработчиков. Расскажем об основных из них.

 

Новая многопоточная парадигма

В Interference NDK 3 добавлена поддержка технологии Compute Instance (CI). Это специальная архитектура многопоточных вычислений, позволяющая более гибко  управлять вычислительными ресурсами, сокращая при этом накладные расходы. Теперь можно параллельно обрабатывать большие массивы данных одной моделью в многопоточном режиме, а также разносить отдельные части модели по разным вычислителями (CPU, GPU1, GPU2, …).

Новая архитектура использует специальные трансляторы (translators), которые сначала переводят описание и данные модели во внутреннее представление вычислительного бэкенда. Вычислительные бэкенды в свою очередь используют эти специфические представления для выполнения вычислений внутри своего Compute Instance. Такая логика существенно повышает производительность, а также позволяет обрабатывать несколько потоков данных без конфликтов.

Также новая реализация вычислений обеспечила ускорение работы моделей в 2-4 раза (для всех вычислительных бэкендов, как на больших, так и на маленьких моделях).

Инструменты отладки «из коробки»

Средства отладки и диагностики моделей теперь доступны «из коробки» в виде Interlink Web. Это специальный веб-интерфейс, с помощью которого можно получать сведения о работающей модели в режиме online. Достаточно запустить код (с включённым Interlink, делается это одной строчкой кода) на целевой машине и открыть страницу в браузере, чтобы увидеть структуру и состояние модели, её параметры и динамические показатели.

Реализация синхронизации состояния модели с веб-интерфейсом выполнена таким образом, чтобы минимизировать её влияние на конечную производительность.

Interlink Web

Веб-интерфейс Interlink Web

Экспериментальная поддержка Vulkan

В новой версии Interference NDK была добавлена экспериментальная поддержка Vulkan. Использование нового вычислительного бэкенда позволяет перенести вычисления (обучение и инференс) на графические ускорители с поддержкой Vulkan.

Поддержка MacOS

Новая версия Interference NDK была адаптирована под платформу Mac на базе Apple Silicon.

Поддержка Python

Разработчикам теперь доступны биндинги для Python, при этом сама библиотека остаётся написанной на С++, что обеспечивает высокое быстродействие в ресурсоёмких задачах. Теперь решать практические задачи искусственного интеллекта с использованием Interference NDK можно не только на C++.

Добавлен новый пример

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

 

Помимо крупных изменений проект также получил большое количество небольших исправлений и улучшений API.

 

Страница проекта

Следите за новостями! Подписывайтесь на наш Telegram канал.