← Все статьи
2026-05-30 04:01 · 🤖 AI World

Собрать inference-движок с нуля: C++, CUDA и никакого Python

Проект tiny-vLLM — это одновременно рабочий inference-сервер для Llama 3.2 и курс, который ведёт через каждую строчку кода. Автор строит то, что обычно скрыто за абстракциями фреймворков: от чтения Safetensors до FlashAttention-подобных CUDA-ядер.

Собрать inference-движок с нуля: C++, CUDA и никакого Python

На GitHub появился tiny-vLLM — open-source проект, который реализует высокопроизводительный LLM inference engine на C++ и CUDA. Это не обёртка над PyTorch и не очередная Python-либа. Автор строит всё с нуля: загрузка весов из Safetensors, полный forward pass, статический и continuous batching, Paged Attention, KV-кэш. В качестве референсной модели — Llama 3.2 1B Instruct. Репозиторий сочетает рабочий исходник сервера и структурированный курс, где каждая концепция выводится из первых принципов.

Контекст

vLLM — один из самых популярных inference-фреймворков в production: его используют для батчинга, управления памятью и масштабирования LLM-сервисов. Но его кодовая база достаточно сложна, чтобы большинство ML-инженеров работали с ним как с чёрным ящиком. tiny-vLLM — «младший брат»: минимальная, читаемая реализация тех же идей.

Проект вписывается в устойчивый тренд: после того как Андрей Карпати выпустил nanoGPT и llm.c, сообщество потянулось к образовательным реализациям на низком уровне. GPU MODE, tinygrad Джорджа Хотца, micrograd — всё это попытки сделать «магию» производительных вычислений прозрачной. tiny-vLLM делает следующий шаг: не просто обучение, а полноценный inference-сервер, который реально запускает модель.

Техстек проекта: C++, CUDA Toolkit, единственная внешняя зависимость — JSON-парсер nlohmann/json. Автор тестирует на RTX 5090 и AMD Ryzen 7 9800X3D под Linux. Для запуска нужен любой NVIDIA GPU — нужно лишь поправить пути в конфигах сборки.

Аналитика

Большинство ML-команд сегодня работает на уровне Python API: вызов model.generate(), настройка батчинга через конфиг. Это удобно, но создаёт слепое пятно. Когда latency не устраивает, GPU-утилизация падает, или нужно портировать модель на специфическое железо — без понимания того, что происходит на уровне CUDA-ядер, разобраться крайне тяжело.

tiny-vLLM закрывает именно этот gap. Курс объясняет, почему существует KV-кэш, как работает prefill vs decode, зачем нужен Paged Attention и что такое online softmax. Это не академическая теория — каждая концепция сразу реализуется в коде. Такой подход автор называет JIT-обучением: понимаешь ровно столько, сколько нужно для следующего шага.

С точки зрения индустрии проект показывает: барьер входа в inference-инфраструктуру снижается. Раньше написать production-grade inference engine было уделом команд в крупных лабораториях. Сейчас один человек с RTX 5090 публикует рабочую реализацию с continuous batching и Paged Attention. Для AI-first компаний это сигнал: кастомные inference-решения под специфические задачи становятся реалистичными.

Кейсы применения в бизнесе

B2B-SaaS стартап с собственной моделью: если вы файн-тюнили модель под домен (юридика, медицина, финансы) и хотите снизить latency, изучение tiny-vLLM даёт понимание, где именно терять время — в prefill, в decode, в управлении памятью. Это позволяет осознанно выбирать между vLLM, TensorRT-LLM или кастомным решением, а не гадать.

Корпорация с on-premise требованиями: в КР и СНГ ряд клиентов не может отправлять данные в облако. Понимание inference на уровне C++/CUDA позволяет команде развернуть оптимизированный сервер на собственном железе, не завися от облачных провайдеров и их SLA.

Команда, оптимизирующая GPU-затраты: continuous batching и Paged Attention — ключевые механизмы, которые позволяют обслуживать больше запросов на том же железе. Инженер, который понимает их изнутри, способен настроить vLLM не наугад, а осознанно, что напрямую влияет на unit-экономику.

Кейсы в личной жизни

Backend-разработчик, переходящий в ML: tiny-vLLM — редкий случай, когда C++-навыки дают преимущество. Если вы умеете писать системный код, но LLM-математика пугает, этот курс показывает: матан минимален, а большая часть работы — инженерная.

ML-инженер в найме: понимание того, как устроен inference engine, резко повышает ценность на рынке. Большинство MLE работают на уровне фреймворков. Человек, который читал Paged Attention CUDA-ядра, стоит другие деньги.

Студент или исследователь: репозиторий явно предлагает использоваться как учебный материал для курсов. Структура курса — от «что такое LLM» до кастомных CUDA-ядер — покрывает материал, который обычно размазан по десяткам статей и видео.

Как применить сегодня

  • Зайдите в репозиторий jmaczan/tiny-vllm на GitHub, прочитайте Intro-раздел курса — он объясняет разницу между моделью, весами и inference-сервером лучше большинства учебников.
  • Если есть NVIDIA GPU — форкните репо, скачайте model.safetensors для Llama 3.2 1B Instruct с HuggingFace и запустите ./test.sh. Это займёт меньше часа.
  • Пройдите разделы «KV cache» и «Paged Attention» даже без запуска кода — это напрямую объясняет, почему vLLM эффективнее наивной реализации и как правильно настраивать батчинг в production.
  • Параллельно смотрите GPU MODE Discord и репозитории Карпати (nanoGPT, llm.c) — они формируют тот же слой понимания, что и tiny-vLLM, но с акцентом на обучение, а не inference.
  • Если планируете локальный деплой LLM для клиента или внутреннего продукта — используйте tiny-vLLM как карту понимания, а не production-решение. Production — это vLLM или TensorRT-LLM; tiny-vLLM учит читать их код без паники.
← Все статьи