Skip to content

Repository files navigation

Toy Training and Inference Engine (TTIE)

Build & Test

Совместный проект курса в МФТИ по методам эффективной реализации моделей искусственного интеллекта.

Цель проекта — реализовать библиотеку для обучения и инференса нейронной сети на CPU, GPU, NPU.

Сборка

cmake -S . -B build
cmake --build build

Запуск тестов

cd build
ctest

или

cd build
./tests

Запуск примера

cd build
./example

Задачи

Вам нужно сделать 2 вклада в проект: добавить новую функцию и оптимизировать существующую.

Функции

Оптимизации

Рефакторинг и другие улучшения

  • Скрыть внутреннюю струкутуру Tensor от пользователя
  • Добавить классу Tensor возможность работать не только с float
  • Добавить автоматическое форматирование кода
  • Добавить автоматическую проверку кода статическими анализаторами
  • Интегрировать функциональную часть из main.cpp в библиотеку
  • Изменить схему владения объектов класса Layer. Используя c++11 можно сделать код более читаемым и безопасным
  • Добавить в CMakeLists.txt гибкую конфигурацию проекта. Например, при дебаге имеет смысл собирать тесты, компилировать с флагом -O0 и санитайзерами, а в релизной версии для ускорения работы программы этого делать не стоит
  • Поработать с CI/CD. Можно добавить автоматическую генерацию документации и развертывание ее на github pages. Можно добавить автоматический отчет о проценте покрытия тестами кода через github actions
  • Любые оптимизации на уровне C++, экономящие память, ускоряющие время работы, или делающие код более безопасным или расширяемым
  • Нахождение багов/undefined behavior в программе

Комментарии

  • Представленные выше пункты списка неравнозначны: какие-то требуют глубокого понимания и большого числа строчек кода, например, написание блока механизма внимания MultiheadAttention. Какие-то задачи требуют только изменений в паре строк кода. Более сложные задачи = гарантия высокого балла и получение ценного опыта. Оценивается уровень понимания и вклад в проект, поэтому можете брать несколько задач.
  • Вопросы по задачам/предложение своих задач/вопосы по теории приветствуются. Задавайте их в чате курса или индивидуально @ckorikov, @Harper567, @GoshaSerbin

Общие рекомендации при выполнении задания

  • При возможности использовать современный стандарт C++ (хотя бы C++11) вместо чистого C
  • При добавлении функционального кода необходимо убедиться, что он имеет ожидаемое поведение, написав тесты
  • Вайб-кодинг допускается, но с пониманием что и зачем было сделано
  • Читаемые названия коммитов
  • В описании пул-реквеста напишите какие задачи выполнили/как работает ваша оптимизация
  • При создании пул-реквеста указывайте меня @GoshaSerbin в качестве reviewer и assignee, кидайте ссылку на реквест в личные сообщения, чтобы я точно увидел. Если замечаний нет я вливаю изменения в репозиторий, если есть - пишу их и отмечаю вас assignee. После исправления замечаний в том же реквесте укажите меня снова assignee и снова киньте ссылку. Процесс продолжается итеративно пока замечаний не останется

About

Совместный проект курса в МФТИ по методам эффективной реализации моделей искусственного интеллекта

Topics

Resources

Stars

2 stars

Watchers

2 watching

Forks

Used by

Contributors

Languages