Habr AI показал, как собрать Linear Layer на C++ и CUDA в цикле от MNIST к Transformer
Habr AI выпустил третью часть цикла «От MNIST к Transformer» — на этот раз про тензоры, умножение тензоров и собственный Linear Layer без PyTorch. В статье мног

Habr AI выпустил третью часть цикла «От MNIST к Transformer», где разбирает переход от обычных матриц к тензорам и показывает, как своими руками собрать базовый Linear Layer без PyTorch. Материал доводит читателя до простой нейросети для распознавания MNIST и делает акцент не на API библиотек, а на том, как эти операции реально исполняются на GPU.
О чем третья часть
Новая статья продолжает маршрут от низкоуровневого CUDA-кода к архитектурам, на которых позже строятся Transformer и современные LLM. Вместо готовых абстракций автор предлагает смотреть прямо на вычисления: как данные лежат в памяти, как GPU запускает операции и почему даже элементарный на вид слой нейросети требует большого объема инженерной работы. Это хороший формат для тех, кто устал воспринимать ML-фреймворки как магию из одной строчки кода.
Главный сдвиг в этой части — переход от матриц к тензорам. Для прикладного машинного обучения это базовая тема, потому что реальные данные редко ограничиваются двумя измерениями. Автор показывает, как меняется мышление разработчика, когда он начинает работать не только с таблицами чисел, но и с многомерными структурами, из которых потом собираются батчи, веса слоев, промежуточные представления и другие кирпичики будущей модели.
Именно на этом уровне начинается подготовка к пониманию более сложных блоков вроде attention и эмбеддингов.
Что реализуют руками Практическая часть построена вокруг собственного кода на C++ и CUDA.
Здесь нет попытки скрыть сложность за удобным интерфейсом: наоборот, читателю предлагают пройти путь от математической формулы до ручной реализации. Такой подход полезен тем, что связывает абстрактную линейную алгебру с конкретными шагами разработки — размещением данных, вызовами ядер, проверкой форм размерностей и пониманием того, где именно появляются ошибки или потери производительности. Без этого звена трудно почувствовать разницу между учебным примером и реальной системой.
- Реализацию умножения тензоров Создание первого Linear Layer, то есть полносвязного слоя Работу с памятью и размещением данных на GPU Связку математики и кода для обучения на MNIST Сборку простой сети для распознавания рукописных цифр > «Только так можно по-настоящему понять, как работают LLM». После реализации базовых операций статья подводит к собственному полносвязному слою и затем к небольшой сети для распознавания рукописных цифр из MNIST. Это важный момент: материал не обрывается на отдельных примитивах, а показывает, как из них собрать рабочую цепочку. Заодно становится понятно, что даже простой классификатор опирается на довольно глубокий стек знаний — от математики до устройства видеопамяти и особенностей параллельных вычислений.
Почему это важно
Ценность таких разборов в том, что они снимают иллюзию легкости, которую часто создает Python-обвязка. Когда разработчик видит только готовые вызовы библиотек, ему сложно оценить цену каждой операции и понять, почему модель внезапно упирается в память, пропускную способность или размер батча. Разбор на уровне тензоров и слоев помогает лучше читать профилировщики, аккуратнее проектировать архитектуру и осознаннее выбирать компромиссы между скоростью, точностью и сложностью реализации.
Серия «От MNIST к Transformer» особенно полезна тем, кто хочет не просто запускать чужие модели, а разбираться в механике современных AI-систем. Она не обещает быстрый вход и прямо предупреждает: будет много кода, CUDA, математики и ручной работы с памятью. Но именно такой формат дает фундамент, который пригодится и при оптимизации инференса, и при чтении чужих CUDA-реализаций, и при попытке понять, почему одни архитектурные решения работают быстрее других.
Что это значит
Для русскоязычной аудитории это хороший сигнал: спрос смещается от поверхностных туториалов к инженерному разбору внутренностей AI-стека. Чем больше таких материалов появляется, тем меньше LLM воспринимаются как черный ящик и тем легче разработчикам переходить от использования готовых моделей к их осмысленной настройке и оптимизации. Это особенно важно сейчас, когда у практикующих инженеров быстро растет спрос на GPU-оптимизацию и понимание внутренностей моделей.