- BrainTools - https://www.braintools.ru -

Охота на ошибки в компиляторах: новый подход с использованием искусственного интеллекта

Автор: Денис Аветисян


Исследователи разработали систему, способную находить более сотни ошибок в компиляторах всего за 72 часа, используя возможности больших языковых моделей.

Представлен FeatureFuzz – фреймворк для фаззинга компиляторов, использующий LLM для генерации разнообразных тестовых случаев и улучшения покрытия кода.

Несмотря на критическую роль компиляторов в обеспечении надежности программного обеспечения, их сложность неизбежно скрывает уязвимые места. В работе, озаглавленной ‘Discovering 100+ Compiler Defects in 72 Hours via LLM-Driven Semantic Logic Recomposition’, предложен новый подход к фаззингу компиляторов, основанный на извлечении семантически значимых признаков, связанных с ошибками, и их последующей генерации с использованием больших языковых моделей. Разработанный фреймворк FeatureFuzz позволил обнаружить более 113 уникальных ошибок в компиляторах GCC и LLVM за 72 часа, причем 97 из них уже подтверждены разработчиками. Способно ли данное сочетание семантического анализа и LLM-генерации радикально изменить практику тестирования и верификации компиляторов?


Иллюзии Разума: О Галлюцинациях в Больших Языковых Моделях

Несмотря на впечатляющие возможности, большие языковые модели подвержены феномену, известному как «галлюцинации» – спонтанному генерированию фактических ошибок или бессмысленных утверждений. Эта особенность обусловлена тем, что модели оперируют исключительно внутренними знаниями, которые могут быть неполными или устаревшими. Вместо того, чтобы проверять информацию во внешних источниках, они полагаются на статистические закономерности, выученные в процессе обучения [1]. Такая склонность к неточностям существенно ограничивает надежность языковых моделей в критически важных областях, где требуется безошибочная информация, и подчеркивает необходимость разработки методов контроля и верификации генерируемых текстов.

Искусственный интеллект с опорой на знания: как работают системы RAG

Современные большие языковые модели (LLM) демонстрируют впечатляющие возможности в генерации текста, однако часто склонны к “галлюцинациям” – выдаче неверной или выдуманной информации. Для решения этой проблемы разрабатываются системы, известные как Retrieval-Augmented Generation (RAG). В основе RAG лежит принцип сопоставления запроса с внешней базой знаний – прежде чем сформировать ответ, система извлекает релевантные данные из этой базы. Это позволяет “заземлить” генерируемый текст в проверенных фактах, существенно повышая его достоверность и надежность. По сути, RAG не просто генерирует текст, а подкрепляет его конкретными данными, что снижает вероятность ошибок и повышает качество предоставляемой информации.

Проверка на достоверность: соответствие и правдивость ответов

Оценка систем извлечения и генерации ответов (RAG) требует не только проверки общей точности, но и пристального внимания [2] к таким показателям, как ‘соответствие’ – насколько полно и точно ответ отражает информацию из предоставленного контекста. Не менее важным является ‘правдивость’ – степень соответствия генерируемых сведений объективной реальности, что требует тщательной верификации на основе внешних источников. Эти метрики, в совокупности с другими параметрами оценки, позволяют комплексно анализировать работу RAG-систем, минимизируя риск генерации недостоверной информации и обеспечивая надежность получаемых результатов. Важно понимать, что оценка не сводится к простому сравнению ответа с исходным текстом, а предполагает подтверждение фактов, представленных в ответе, вне зависимости от источника.

Как направить знания: Релевантность контекста и точность запроса

Качество извлеченных знаний является ключевым фактором в работе систем, использующих поиск и генерацию ответов. Особенно важна ‘релевантность контекста’ – степень соответствия найденной информации исходному вопросу. Для того чтобы большая языковая модель (LLM) могла правильно использовать полученные знания и выдавать последовательные, точные ответы, необходимо тщательно продумывать ‘инженерные запросы’ – формулировать вопросы таким образом, чтобы направлять LLM к нужной информации. Комбинируя поиск наиболее подходящих знаний с правильно составленными запросами, системы могут значительно повысить свою эффективность и выдавать более качественные результаты.

На пути к надёжному искусственному интеллекту: калибровка и перспективы развития

Обеспечение надёжности систем искусственного интеллекта [3] напрямую связано с их способностью оценивать собственную уверенность в принимаемых решениях – это и есть процесс калибровки. Хорошо откалиброванная модель не просто выдаёт ответ, но и предоставляет информацию о степени своей уверенности, позволяя пользователю адекватно оценить надёжность полученных данных. Вместо того, чтобы полагаться на абсолютные значения вероятностей, калибровка позволяет модели сообщать, насколько вероятно, что её прогноз верен. Дальнейшие исследования направлены на разработку более сложных методов калибровки, а также на изучение новых способов интеграции знаний и логических рассуждений в системы искусственного интеллекта, что позволит создавать более надёжные и понятные решения.

Исследование демонстрирует, что даже в, казалось бы, отлаженных системах, таких как компиляторы, скрывается значительное количество дефектов. FeatureFuzz, используя подход семантической рекомпозиции логики и возможности больших языковых моделей, эффективно выявляет эти уязвимости. Это подтверждает известное высказывание Джона фон Неймана: «В науке [4] не бывает абсолютно ничего, что было бы закончено». Постоянное стремление к улучшению, обнаружению и устранению ошибок – это непрерывный процесс. Уязвимости, выявленные в компиляторах, подчеркивают важность постоянного тестирования и проверки, особенно в контексте быстро меняющихся абстракций совр��менных программных систем. Каждая сложность требует алиби, и FeatureFuzz предоставляет инструмент для поиска этого алиби в коде.

Что дальше?

Представленная работа, несомненно, демонстрирует потенциал использования больших языковых моделей для обнаружения дефектов в компиляторах. Однако, увлечение сложностью генерации тестовых случаев часто затмевает простую истину: наиболее ценные ошибки [5] обнаруживаются там, где логика [6] компилятора наиболее уязвима. Дальнейшие исследования должны сосредоточиться не на увеличении количества генерируемых тестов, а на их качестве и точном соответствии критическим областям кода компилятора. Необходимо стремиться к минимализму в генерации, оставляя лишь то, что действительно способно выявить уязвимость.

Очевидным ограничением является зависимость от извлеченных “опасных” признаков. Что если ключевые уязвимости скрыты вне этих признаков? Поиск и идентификация этих скрытых слабых мест требует переосмысления подхода к анализу кода компилятора, возможно, с использованием более абстрактных моделей и методов, избегающих прямого соответствия конкретным признакам. Упрощение – это не отказ от поиска, а его фокусировка.

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


Полный обзор с формулами: denisavetisyan.com [7]

Оригинал статьи: https://arxiv.org/pdf/2601.12360.pdf [8]

Связаться с автором: linkedin.com/in/avetisyan [9]

Автор: avetissian

Источник [10]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/24961

URLs in this post:

[1] обучения: http://www.braintools.ru/article/5125

[2] внимания: http://www.braintools.ru/article/7595

[3] интеллекта: http://www.braintools.ru/article/7605

[4] науке: http://www.braintools.ru/article/7634

[5] ошибки: http://www.braintools.ru/article/4192

[6] логика: http://www.braintools.ru/article/7640

[7] denisavetisyan.com: http://denisavetisyan.com

[8] https://arxiv.org/pdf/2601.12360.pdf: https://arxiv.org/pdf/2601.12360.pdf

[9] linkedin.com/in/avetisyan: https://www.linkedin.com/in/avetisyan/

[10] Источник: https://habr.com/ru/articles/990976/?utm_source=habrahabr&utm_medium=rss&utm_campaign=990976

www.BrainTools.ru

Rambler's Top100