Инструменты29 сентября 2026 г., 17:49 МСК🤖 Auto

TinyTorch: Легкий фреймворк на C++ с API как у PyTorch

Разработчик Keith2018 представил TinyTorch — легковесный фреймворк для глубокого обучения на чистом C++17, воспроизводящий API PyTorch и поддерживающий LLM-инференс.

Баннер новости 8519

Суть проекта: Zero-dependency на C++17

TinyTorch — это реализация фреймворка для обучения нейросетей с нуля, написанная исключительно на C++17. Ключевая особенность проекта: полное отсутствие зависимостей от внешних библиотек глубокого обучения (таких как CUDA Toolkit для базовых вычислений, хотя опционально он их поддерживает). Это делает его идеальным учебным полигоном для понимания внутренней механики автоматического дифференцирования и вычислительных графов.

Архитектура строится на динамическом вычислительном графе: каждая операция с Tensor создает узел Function, записывающий прямой проход и правило обратного распространения градиентов. Метод backward() обходит этот DAG в обратном топологическом порядке, применяя цепное правило.

Ключевые возможности и совместимость

Несмотря на «учебный» статус, проект предлагает продвинутый функционал, привычный пользователям PyTorch:

  • API-совместимость: Использование знакомых классов nn.Module, Optimizer, DataLoader.
  • Аппаратная поддержка: Работа на CPU (с ускорением через BLAS) и GPU (через CUDA).
  • Смешанная точность: Поддержка форматов FP16, FP32 и BF16.
  • Распределенное обучение: Поддержка multi-machine, multi-GPU через NCCL.
  • Инференс LLM: Реализована поддержка моделей LLaMA, Qwen и Mistral.

Технические требования и сборка

Проект использует CMake для сборки. Для полноценной работы с GPU требуются CUDA Toolkit 11.0+ и NCCL. Ниже приведена таблица конфигурационных опций сборки:

Опция CMake Значение по умолчанию Описание
TINYTORCH_BUILD_EXAMPLES ON Сборка примеров (autograd, mnist, ddp и др.)
TINYTORCH_BUILD_TEST OFF Сборка модульных тестов
TINYTORCH_USE_CUDA ON Включить поддержку CUDA
TINYTORCH_USE_NCCL ON Включить поддержку распределенных вычислений NCCL

Структура и примеры использования

Репозиторий содержит готовые примеры для каждого аспекта работы: от базового автодифференцирования до распределенного обучения (DDP). Для запуска примеров необходимо собрать проект в режиме Release:

mkdir build
cmake -B ./build -DCMAKE_BUILD_TYPE=Release
cmake --build ./build --config Release

После сборки исполняемые файлы доступны в папках examples/*/bin. Например, для обучения на MNIST используется команда ./tinytorch_example_mnist, а для распределенного обучения — ./tinytorch_example_ddp с передачей параметров local_rank, rank и world_size.

Почему это важно

TinyTorch закрывает нишу образовательных инструментов, которые не просто эмулируют синтаксис, а предоставляют прозрачный код для изучения принципов работы современных DL-фреймворков. Лицензия MIT позволяет свободно использовать код в коммерческих и учебных целях.

Источник: Github ↗