Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
382 - Telegram Web
Telegram Web
Выводы из статьи следующие. Во-первых, не стоит обосновывать актуальность ваших статей политической конъюнктурой, чем часто грешат американские нон-профиты: статья начинается с упоминания Указа Байдена о безопасности ИИ, которую Трамп уже пообещал отменить. Во-вторых, хорошие бенчмарки дорогие, а экспертные бенчмарки – очень дорогие. 200 тысяч за бенчмарк – это по 55 долларов на вопрос, и речь идет о тестах на выбор одного из четырех ответов, а не о, например, multi-turn диалогах или более сложных задачах. Если бы на данные тратилось хотя бы 10% от того, что тратится на GPU, мы могли бы жить в мире более качественных моделей меньшего размера. В-третьих, способа легко удалить из модели данные о целой сфере (в противовес отдельным фактам – достаточно частая privacy-задача) без ущерба для ее знаний в смежных областях пока нет. Здесь может быть множество причин. Например, сложно определить рискованные знания: мы знаем, что нельзя смешивать отбеливатель с аммиачными средствами, т.к. выделяется токсичный газ – значит ли это, что знания об отбеливателях и уборке нужно удалить из модели как прекурсоры к отравляющим веществам? С другой стороны, есть архитектурные сложности, связанные, например, с полисемантичностью нейронов или наличием лотерейных подсетей и супер-нейронов в сети, изменения в которых могут приводить к непредсказуемым просадкам в качестве. RMU показывает неплохие результаты, но даже достаточно примитивная оценка показывает деградацию, не говоря уже о том, насколько может ухудшаться вайб-чек или те способности модели, которые не проверяются простыми оценками.
Defending Against Indirect Prompt Injection Attacks With Spotlighting
Keegan Hines et al, Microsoft, 2024
Препринт

Непрямая инъекция промпта (indirect prompt injection) – атака, при которой инструкции LLM перезаписываются внешними (3rd party) документами, подгружающимися из недоверенных источников в ее контекст для выполнения задачи. Это основной вектор атак на LLM-приложения, который исследуется: инъекции засовывают в письма, на сайты, в историю переписок, в скриншоты и так далее. Происходит это потому, что у в LLM не хватает четкого разделения между данными и инструкциями – все валяется в одном контекстном окне вперемешку.

Исследователи из Microsoft предлагают в небольшой статье несколько эвристик, которые призваны улучшить это разделение и снизить подверженность ваших систем атакам с непрямыми инъекциями (их в статье называют XPIA) под общим называнием spotlighting.
Всего в статье рассматриваются три подхода:

1. Spotlighting via Delimiting: давайте вокруг данных, которые поступают извне, нагородим каких-нибудь разделителей и попросим LLM не исполнять инструкции изнутри, например, <<{{данные }}>>. Не сильно оригинально, описывалось, как признают сами исследователи, много раз, как в статьях, так и в популярных ресурсах. Очевидно, что работает, пока атакующий не разреверсит разделитель.

2. Spotlighting via DataMarking: давайте поменяем пробелы в недоверенном тексте на какой-нибудь хитрый символ, типа циркумфлекса: я^зловредная^инструкция, уведомив LLM, что такого ввода текст является недоверенным. По ощущениям должно слегка сводить модели, особенно более слабые, с ума и приводить к просадкам в качестве.

3. Spotlighting via Encoding: давайте все данные закодируем в какой-нибудь base64 и скажем, что все внутри base64 – недоверенное и не должно исполняться. Иронично, что обычно base64 используется наоборот для token smuggling’а. Требует мощной модели.
Собственно, эта статья была бы ужасно скучной, если бы в ней не было оценки эффективности этих трюков, потому что в разделе с оценками сплошное веселье. Для оценки берутся такие древности, как text-davinci-003, GPT-3.5-Turbo и GPT-4 (статья опубликована в марте 2024). Им скармливают синтетический датасет из 1000 документов, содержащих инъекции, цель которых – заставить LLM сказать одно слово. В качестве бейзлайна исследователи берут простую просьбу игнорировать инъекции в промпте (ну пожалуйста!). На двух задачах (суммаризация и QA) демонстрируется, что увещевания не сильно помогают. В то же время все три подхода резко снижают успешность инъекций: добавление разделителей снижает ASR вполовину (но, как мы помним, при желании легко обходится), замена пробелов – до единиц процентов (с почти 50 до 3 на gpt-3.5-turbo, например). Для encoding предлагается просто поверить, что работает хорошо – есть график для gpt-3.5, для проверки gpt-4, видимо, майкрософту не хватило бюджета.

Дальше идет оценка влияния всего этого на стандартные бенчмарки. Оцениваться на SQuAD и IMDB Sentiment в 2024 кажется немного неприличным, но утверждается, что gpt-3.5-turbo (на которой так мощно упали метрики атак) не умеет декодировать base64, поэтому качество на IMDB проседает до 50% (мое почтение). Ты не можешь заинжектить модель, если она тебя не поймет 😏. Для gpt-4 качество падает не сильно (а на SQuAD даже растет). Старичка davinci здесь решили даже не показывать.
Завершается статья практическими глубокомысленными рекомендациями по имплементации (например, рандомизировать разделитель для datamarking и не использовать ROT13, потому что он двунаправленный).

С одной стороны, статья достаточно смешная как с точки зрения наполнения, так и методологии (ну какой IMDB, ну какой text-davinci-003 в 2024 году?). Я немного посмеялся, когда в пресс-релизе майкрософта (вот тут) увидел ссылку на нее как на our scientific research paper. С другой стороны, такой подход вполне может применяться для небольших чат-ботов, которые работают с небольшими запросами от пользователей, чтобы избегать изменения простых атак, и рекомендуется в гайдах MS по промпт-инженерии. Так или иначе, spotlighting вполне работает: можете проверить сами в проводимом майкрософтом же сейчас соревновании по indirect prompt injection.
Are you still on track!? Catching LLM Task Drift with Activations
Abdelnabi et al., 2024
Статья, код

Рассмотрим еще один метод защиты от indirect prompt injection, с которым можно поразвлекаться в идущем сейчас соревновании от Microsoft – TaskTracker. В отличие от рассмотренного в прошлый раз метода Spotlighting, этот метод направлен не на предобработку для улучшения разделения инструкций и данных, а на детектирование потенциальной атаки.

Данный метод построен на оценке не поверхностной текстовой структуры, а активаций модели на разных уровнях. Инструкции, которые LLM задаются пользователем или разработчиком, называются основной задачей (primary task). В рамках выполнения этой задачи в контекст могут попадать блоки данных (data blocks). Эти блоки данных могут содержать внедренные задачи (injected tasks), причем эти задачи не обязательно должны отвечать каким-то критериям вредоносности – это могут быть любые инструкции, которые не согласуются с основной задачей. Исполнение внедренной инструкции из блока данных называется сдвигом задачи (task drift), который предложенный метод и должен обнаруживать.
Для реализации метода собирается датасет активаций разных LLM на разных слоях. Исследователи берут задачу QA и несколько синтетических задач из датасета SEP (суммаризацию, перевод, извлечение ключевых слов), в качестве источника текстов берут SQuAD. В качестве внедренных задач используются инъекции, сгенерированные GPT-4 – от тонких подводок до набранных капсом инструкций с разделителями. Эти инструкции рандомно вставляются в начало, конец и середину текста.

Собственно, активации собираются с каждого слоя после обработки LLM специальной затравки, которая фокусирует ее внимание на основной задаче (см. скриншот), а также после обработки всего текста, включая блоки данных с внедренной задачей и без нее (чистый сабсет). Нелинейное снижение размерности (t-SNE) показывает, что наборы данных относительно разделимы в пространстве дельт активаций. Для непосредственно детекта сдвига используются две формулировки задачи: metric learning (контрастивный подход) и логистическая регрессия над дельтами изначальной и финальной активации. Для контрастивного подхода используется triplet loss на тройках (активация после основной задачи, активация после чистого блока, активация после блока с внедренной задачей), оптимизируется он на некоторой многослойной сети с одномерными свертками.
2025/07/05 01:17:45
Back to Top
HTML Embed Code: