Система периферийного искусственного интеллекта

Руководитель от корпоративного партнера: Маслов Антон, MTS AI

Открытых вакансий: 3

Подать заявку в этот проект

Краткая аннотация

Развитие технологий машинного обучения способствовало появлению специализированных микросхем для автономного запуска нейросетей на периферийных устройствах. Ключевым компонентом этих микросхем являются нейроускорители. Для использования нейросетей на таких микросхемах часто требуется модификация архитектуры и конфигурации слоев. Подготовку данных и обучение необходимо выполнять с учетом особенностей аппаратной реализации. Для этого в настоящее время существует несколько программных продуктов.

Мы разрабатываем решения на базе технологии периферийного искусственного интеллекта (Edge AI). Проводим испытания различных аппаратных платформ и систем на кристалле. Проектируем автономные системы периферийных вычислений. Исследуем возможности применения современных нейросетей для различных нейроускорителей. Обучаем нейросети и адаптируем их для Edge AI. Создаем концепты «умных» устройств.

Направления работы

  1. Разработка микропрограмм для управления системой на кристалле с нейроускорителем. Для обеспечения работы алгоритмов искусственного интеллекта используется распределенная многопроцессорная система. Архитектура такой системы позволяет осуществить параллельную работу нескольких вычислительных операций. Различные периферийные узлы системы на кристалле и все ядра под управлением операционных систем реального времени (RTOS) должны работать согласовано. Применение системы в реальных устройствах возможно при использовании внешних интерфейсов. Для всех этих компонент требуется разработка соответствующих микропрограмм (firmware).
    Примеры решаемых задач:
    • исследование и модификация механизмов распределенной работы нейроускорителей и вычислительных ядер;
    • разработка алгоритмов сбора входных данных для нейросетей и обработки полученных результатов;
    • разработка программных модулей управления периферийными узлами с применением RTOS.
  2. Разработка системы запуска нейросетей на нейроускорителях. Архитектура нейроускорителя вносит ряд ограничений по применению нейросетей по сравнению с работой на персональном компьютере. Аппаратура поддерживает ограниченный набор типов слоев и их конфигураций. Некоторые слои возможно запускать только на вычислительных ядрах общего назначения. Нейросеть перед применением на микросхеме должна быть преобразована с помощью квантизации. Механизмы предобработки и постобработки данных при необходимости можно встроить в микропрограмму (firmware). Это дополнительно позволяет получить полноценную автономную систему.
    Примеры решаемых задач:
    • исследование методов квантизации нейросетей;
    • разработка алгоритмов запуска нейросетей различной архитектуры на нейроускорителях;
    • распределение работы всех слоев нейросетей на нескольких компонентах многоядерной системы.
  3. Разработка нейросетей для применения на периферийных устройствах. Для успешной работы нейросети на нейроускорителе можно спроектировать такую архитектуру, и обучить сеть на таких данных, которые наилучшим образом соответствуют параметрам аппаратуры. В этом случае необходимо реализовать алгоритмы обработки так, чтобы их встраиваемые аналоги совпадали по всем параметрам с программными пакетами в системах обучения. Это требует более глубокого погружения в высокоуровневые алгоритмы. Для создания полноценных устройств на базе нейроускорителей требуется хорошее понимание методов обучения с привязкой к аппаратным особенностям. Дополнительно это открывает возможности создания систем, использующих несколько нейросетей одновременно с взаимной передачей информации между ними.
    Примеры решаемых задач:
    • разработка архитектуры нейросети под задачу с учетом аппаратных особенностей нейроускорителя;
    • подготовка данных для обучения в соответствие с характеристиками датчиков и сенсоров;
    • разработка алгоритмов использования нескольких нейросетей на сборке из нейроускорителей.

Стек технологий

1) User and Organizations

  • Инструменты гибкой разработки Agile, Scrum, Kanban
  • Тайм-менеджмент и планирование временем

2) System Modeling

  • Системное моделирование с использованием UML
  • Анализ требований

3) System Architecture and Infrastructure

  • Методы проектирование встроенных и кибер-физических систем
  • Методы проектирования интернета вещей
  • Организация параллельных и распределенных вычислений
  • Платформо-ориентированная разработка
  • Аспектное проектирование

4) Software Development

  • Программирование на языках C/C++, Python
  • Использование библиотек OpenCV, NumPy, SciPy, Pytorch, TensorFlow, Keras, Caffe, ONNX
  • Системное программирование под Linux, FreeRTOS, RTX
  • Разработка микропрограмм с использованием Keil MDK и GCC для ARM

5) Software Fundamentals

  • Алгоритмы и структуры данных
  • Операционные системы реального времени
  • Компьютерная графика
  • Цифровая обработка сигналов

6) Hardware

  • Проектирование устройств с использованием нейроускорителей
  • Использование встраиваемых видеокамер, микрофонов и разнообразных датчиков
  • Работа с интерфейсами USB, SPI, I2C, I2S, MIPI
  • Знание современной электронной компонентной базы
  • Разработка печатных плат и систем на модуле

Кем станет студент по завершению магистратуры

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

  • исследователем
  • системным архитектором
  • разработчиком встраиваемых систем
  • разработчиком встраиваемого программного обеспечения
  • инженером машинного обучения

Пререквизиты (входные требования)

Для участия в проекте необходимы базовые знания по следующим направлениям:

  • дискретная математика
  • математическая статистика
  • алгоритмы и структуры данных
  • цифровая схемотехника и архитектура компьютера
  • цифровая обработка сигналов
  • машинное обучение
  • системное программирование
  • программирование на языках C и Python