Лучшие магистерские диссертации выпускников программы «программирование и искусственный интеллект»
Лучшие магистерские диссертации выпускников программы «программирование и искусственный интеллект»
«Программирование и искусственный интеллект» – магистратура широкого профиля. В этом году комиссия признала сразу девять выпускных квалификационных работ лучшими на программе. О некоторых из них – по ускорению инференса LLM, доработке YDB, оптимизации кеша в базах данных ВКонтакте и др. – коротко рассказали их авторы в нашем материале.
  • Роман Гарипов
Ускорение инференса больших языковых моделей (LLM) с помощью метода спекулятивного декодинга

Я занимался разработкой метода ускорения инференса LLM (например, Llama) AutoJudge — адаптивного варианта спекулятивного декодирования. Классические методы отклоняют все расхождения между черновой и основной моделью, а AutoJudge автоматически определяет, какие из них можно безопасно принять, что ведет к увеличению числа токенов, сгенерированных за одну фазу алгоритма спекулятивного декодинга.

В результате мне удалось в несколько раз ускорить генерацию текста при снижении точности менее чем на 1%. Это достигается с обучением дополнительной модели без ручной разметки за счет переиспользования уже доступных скрытых представлений целевой модели. Метод легко встраивается в фреймворки генерации текста, такие как vLLM, и может использоваться для ускорения генерации текста LLM.
  • Илья Шахов
Разработка и реализация нового протокола обнаружения узлов в кластере YDB

YDB — это распределенная отказоустойчивая Distributed SQL база данных, которая используется в разных сервисах Яндекса и других проектах. На больших кластерах YDB могут возникать сложности с медленным запуском узлов: задержки ответа от сервера при входе узла в кластер могут достигать минут, что ограничивает дальнейшее масштабирование. Это связано с перегрузкой сети из-за рассылки большого объема информации об узлах в кластере. 

Я реализовал новый протокол обнаружения узлов на C++, который избегает перегрузок сети, распределяя рассылку информации во времени. Новый протокол был протестирован на кластере из 22 000 узлов. Моя работа попала в основную ветку проекта YDB, и будет использоваться на всех кластерах.
  • Кирилл Курдюков
Разработка провайдера данных для Интеграции YDB со стандартом ADO.NET

В 2022 году Яндекс выпустил YDB — Distributed SQL базу данных. За это время появились официальные клиенты для Java, Go, Python и C++, но поддержка .NET отсутствовала. 

В своей ВКР я реализовал стандарт баз данных ADO.NET для доступа к данным YDB. Это первое официальное решение для интеграции .NET-платформы c СУБД Яндекса. Библиотека доступна по ссылке.
  • Николай Холявин
Реализация защиты потока управления программы на языках программирования C/C++ при переходах между комбинированными динамическими библиотеками на базе проекта LLVM

Проект ADLT в OpenHarmony нацелен на объединение нескольких динамических библиотек в одну для минимизации затрат на неэффэктивные вызовы функций, доступ к данным и их дублирование. В своей ВКР я повышал безопасность использования ADLT за счет внедрения инструментации Control Flow Integrity (CFI) проекта LLVM для предотвращения уязвимостей (например, Jump-Oriented Programming). 

В результате я предложил несколько решений, которые значительно увеличили долю защищенных инструкций, но остались достаточно производительными для использования на практике. Часть решений уже внедрена в проект ADLT. Также мои исследования по модификации cross-DSO CFI будут полезны для расширения защиты даже вне проекта ADLT (например, вызов указателя на метод в языке С++).
  • Андрей Гладких
Оптимизация системы типизации и обработки выражений в OpenCLDecompiler

Декомпиляция — это процесс восстановления исходного кода из 
скомпилированного. При компиляции теряется большое количество изначальной информации, в том числе о типах данных. Поэтому одной из основных задач декомпиляции является восстановление типов, то есть сбор и анализ признаков работы с определенными типами данных по всей программе.

В своей ВКР я работал с OpenCLDecompiler — декомпилятором ядер OpenCL для видеокарт AMD с открытым исходным кодом. Я внедрил в него систему восстановления типов на основе деревьев вычислений, что позволило уменьшить количество ошибок компиляции в выходном коде, излишних приведений типов и различий в выходном коде для разных архитектур видеокарт AMD.
  • Равиль Галиев
Оптимизация объектного кеша в базах данных ВКонтакте

Суть моего проекта заключалась в оптимизации работы объектного кеша ВКонтакте, а именно уменьшения числа кеш-промахов без ухудшения скоростных характеристик. В процессе работы я изучил множество различных решений, на основе которых разработал ряд оптимизаций. Благодаря им, объектный кеш эффективней использует выделенную память, своевременно удаляет ненужные данные и лучше определяет их востребованность. За счет этих оптимизаций удалось сократить число кеш-промахов на синтетических нагрузках и существенно сократить их число на реальной нагрузке. В конечном итоге, мои наработки лягут в основу новой версии объектного кеша, которая будет использоваться в команде движков ВКонтакте.