Генерируйте и молитесь: использование SALLMS для оценки безопасности сгенерированного кода LLM: сопутствующая работа
9 февраля 2024 г.:::информация Этот документ доступен на arxiv под лицензией CC 4.0.
Авторы:
(1) Мохаммед Латиф Сиддик, факультет компьютерных наук и инженерии, Университет Нотр-Дам, Нотр-Дам;
(2) Джоанна К.С. Сантос, факультет компьютерных наук и инженерии, Университет Нотр-Дам, Нотр-Дам.
:::
Таблица ссылок
- Абстрактное и amp; Введение
- Предыстория и мотивация
- Наша структура: SALLM
- Эксперименты
- Результаты
- Ограничения и угрозы действительности
- Связанные работы
- Выводы и amp; Ссылки
7 похожих работ
В этом разделе мы обсуждаем работы, посвященные эмпирическому исследованию возможностей LLM, а также работы, связанные со сравнительным анализом LLM.
7.1 Эмпирические исследования моделей генерации кода
Методы автоматизированной генерации кода изначально ориентированы на выявление намерений пользователей из высокоуровневой спецификации или примеров ввода-вывода [20, 21, 41]. Эти подходы преобразуют спецификации задачи в ограничения, и программа извлекается после демонстрации ее способности удовлетворять ограничениям [21]
С появлением модели преобразователя, основанной на внимании [68], задача генерации кода считается проблемой последовательного преобразования, где намерение пользователя выражается в форме естественного языка. Для генерации кода было создано множество LLM, например CodeBert [16], Codex [10] и CodeT5 [69]. Модели генерации кода широко используются при создании кода для конкурентных задач программирования, например AlphaCode [37]. GitHub Copilot [25], инструмент с закрытым исходным кодом для генерации кода, использует обновленную версию Codex [10] для разработки улучшенного механизма автозаполнения. В настоящее время модели генерации кода являются частью модели многозадачности (т. е. выполняют разные задачи). Например, GPT-4 [49] может выполнять анализ изображений и текста. Он также способен генерировать код.
Хотя производительность задачи генерации кода увеличивается с каждым днем, а пользовательские инструменты, такие как GitHub Copilot, адаптируются пользователями [60], они не лишены риска для безопасности. Пирс и др. [51] изучили результаты раннего выпуска GitHub Copilot. Они обнаружили, что 40% выходных данных уязвимы. Сиддик и др. [62] исследовали модели генерации кода и их наборы данных, следуя стандартным практикам кодирования и вопросам безопасности. Сандовал и др. [58] измеряли, генерирует ли ИИ-помощник больше уязвимых кодов, чем пользователи. Сиддик и др. [61] предложили систему ранжирования на основе статического анализатора, чтобы иметь более безопасный код на выходе. Хаджипур и др. [22] исследовали обнаружение уязвимостей в модели генерации кода «черного ящика».
Несмотря на то, что в последнее время появляется все больше литературы, в которой исследуются возможности генерации кода, помимо их функциональной корректности и безопасности [44,45,51,52,58,65], эти существующие исследования лишь указывают на наблюдаемые проблемы, не предлагая новых показателей или способ систематического сравнения LLM с точки зрения безопасности кода, сгенерированного LLM. В отличие от предыдущих исследований, в этой статье мы публикуем набор данных и среду оценки, которые могут автоматически сравнивать код LLM с точки зрения безопасности.
7.2 Тесты для Code-LLM
Традиционно модели глубокого обучения используют обучающий набор для обучения и тестовый набор для оценки модели. Например, CodeXGlue [40] включает набор данных Concode [28] для генерации кода Java, который содержит тестовый набор из 2000 образцов. Набор данных Стандарта прогресса автоматизированного программирования (APPS) использовался для измерения производительности модели генерации кода для генерации решений проблем кодирования. Он содержит 130 000 тестовых случаев. Однако из-за участия больших языковых моделей в генерации кода их необходимо оценивать с точки зрения недооценки подсказок, имитирующих реальных разработчиков, и оценивать их с использованием систем, основанных на выполнении.
Для этой цели авторы модели Кодекса [10] разработали HumanEval. HumanEval содержит 164 простых задачи программирования с каноническими решениями и тестовыми примерами. В основном набор данных Basic Python Issues Dataset (MBPP) содержит около 1000 образцов для аналогичной цели [48]. Эти наборы данных позже расширяются для разных языков программирования [3, 76]. Набор данных CoderEval [74] использует образцы реального программного обеспечения. Однако эти наборы данных сосредоточены на функциональности. Пирс и др. [51] предоставил набор сценариев для проверки безопасности сгенерированного кода. SecurityEval [63] формализовал запросы по тестированию безопасности для многих CWE. Хотя эти наборы данных ориентированы на измерение безопасности, они не позволяют использовать автоматизированный и систематический подход для сравнительного анализа LLM, предоставляемый нашей структурой.
Оригинал