adept

Форк из kolkir/adept
0
Эта ветка отстает от базовой kolkir/adept/master на 30 коммитов
3 месяца назад
месяц назад
месяц назад
2 месяца назад
3 месяца назад
месяц назад
3 месяца назад
3 месяца назад
месяц назад
2 месяца назад
2 месяца назад
месяц назад
месяц назад
README.md

Adept

Automatic Differentiation Engine for Tensor Processing

Зависимости | Сборка | Пример использования| Правила для разработчиков


На данный момент это исследовательский и образовательный проект по разработке платформы для обучения нейронных сетей, с API приближенным к PyTorch.

Сейчас реализована базовая архитектура и минимальный набор модулей для обучения многослойных свёрточных нейронных сетей типа ResNet.

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

  • Linux x86_64
  • Android aarch64

CPU:

  • Armv7+: NEON_WITHOUT_AES, NEON, NEON_BF16, SVE, SVE2, SVE_256, SVE2_128;

    Тестировалось на: Qualcomm Snapdragon 870

  • x86: SSE2, SSSE3, SSE4, AVX2, AVX3, AVX3_DL, AVX3_ZEN4, AVX3_SPR;

    Тестировалось на: 13th Gen Intel(R) Core(TM) i9-13900HX, AMD Ryzen™ AI 9 HX 370w

GPU:

  • Vulkan (NVIDIA, AMD, Intel, Qualcomm, и др.)

    Тестировалось на: NVIDIA RTX 4070 8Gb, Radeon™ 890M × 24, Adreno (TM) 650, Intel(R) Graphics (RPL-S)

Зависимости

  • OpenBLAS - операции с 2D матрицами
  • Highway - короссплатформенные SIMD интринсики
  • hash_flat_map - быстрый контейнер flat_map
  • oneTBB - параллельные алгоритмы
  • Vulkan SDK - Низкоуровневый API и средства разработки для GPU
  • Python 3.11 - язык Python, для скриптов сборки

Опциональные зависимости

  • pybind11 - связывание C++ кода с Python
  • protobuf - библиотека Protocol Buffers для поддержки ONNX

Окружение для разработки

Проект разрабатывается с использованием С++20(gcc-12.3) и системой сборки CMake.

Инструкцию по настройке окружения для разработки можно посмотреть в Wiki.

Установка

Как получить исходные коды:

Сборка:

Для сборки с поддержкой Vulkan необходимо использовать флаг для конфигурирования CMake:

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

Пример использования Python интерфейса:

Ноутбук реализующий классификацию MNIST с использованием LeNet.

Пример простого перцептрона:

Более детальные примеры можно найти в директории

.