Таненбаум, PagedAttention и фундамент, который не устаревает (Рубрика #Books)
Разбирался с интересным paper "Efficient Memory Management for Large Language Model Serving with PagedAttention" от создателей vLLM. В 2023 году авторы посмотрели, как современные на тот момент движки инференса LLM работают с памятью, и нашли почти криминальную по нынешним временам картину (убийцей эффективности был KV-cache).
Системы заранее резервировали под запрос непрерывный участок памяти исходя из максимально возможной длины последовательности. Но реальные ответы обычно короче, запросы растут динамически, память фрагментируется. По измерениям авторов, полезными данными было занято лишь 20,4–38,2% памяти KV-cache.
Авторы предложили PagedAttention: разделить KV-cache на логические блоки и отображать их на физические блоки памяти, которые не обязаны лежать подряд и выделяются по мере необходимости. По сути, они перенесли в LLM serving давно знакомые операционным системам идеи виртуальной памяти и страничной организации.
И тут я вспомнил, как с большим интересом читал "Современные операционные системы" Эндрю Таненбаума и Херберта Боса. Это был примерно 2017 год. Я уже год работал техническим менеджером в Тинькофф, но очень не хотел терять технические компетенции. Поэтому по выходным приезжал в офис: сначала позаниматься в фитнесе, потом - поботать технические темы. Одной из таких тем и стали операционные системы.
Если говорить серьёзно, главная ценность книги не в том, что после 1100 страниц вы сможете написать своё ядро. Она даёт инженерное понимание о том, как компьютер делит ограниченные ресурсы между множеством конкурирующих программ и при этом сохраняет иллюзию, что у каждой есть собственный процессор, память, файлы и устройства.
Книга последовательно разбирает: - Процессы и потоки, планирование, межпроцессное взаимодействие и синхронизацию; - Адресные пространства, виртуальную память, страничную организацию и алгоритмы замещения страниц; - Файловые системы, хранение данных и ввод-вывод; - Взаимоблокировки и способы их предотвращать, обнаруживать или переживать; - Виртуализацию и облака, многопроцессорные системы и безопасность; - Устройство UNIX, Linux, Android и Windows 8.1 как реальные примеры этих принципов.
После такой книги начинаешь видеть одни и те же архитектурные ходы в совершенно разных системах: дополнительный уровень косвенности, отделение логического ресурса от физического, изоляцию, совместное использование, планирование и компромиссы между производительностью, задержкой и справедливостью. PagedAttention - отличный пример. Задача новая, железо другое, ставки выросли, а полезная абстракция приехала из учебника по операционным системам.
Конечно, четвёртое издание - уже капсула времени. Windows 8.1 давно не современная система, а конкретные детали Linux, Android, безопасности и железа нужно дополнять актуальной документацией. И это точно не быстрый практикум по администрированию Linux. Но фундаментальные главы про процессы, память, файловые системы, конкуренцию за ресурсы и виртуализацию стареют гораздо медленнее конкретных API.
Поэтому рекомендую Таненбаума инженерам, архитекторам и техническим руководителям. Особенно тем, кто, как и я тогда, уже отошёл от ежедневного написания кода, но не хочет терять способность разбираться, почему система тормозит, упирается в память, блокируется или плохо делит ресурсы.
#Books #Engineering #Software #Architecture #OS #AI #DistributedSystems