Jailbreaking Black Box Large Language Models in Twenty Queries
Patrick Chao et al., 2023
Статья, сайт, код
Зачем нужны языковые модели, если с их помощью нельзя взламывать другие языковые модели? Так подумали исследователи из Университета Пенсильвании и создали свой метод автоматического джейлбрейкинга для black-box-моделей, который они назвали Prompt Automatic Iterative Refinement, или PAIR.
Для начала исследователи вводят свою категоризацию джейлбрейков:
1. Token-level-джейлбрейки: когда мы, как и положено людям в общении с тупыми железками, генерируем набор токенов, например, с помощью градиентных атак, и получаем набор невнятного мусора типа
2. Prompt-level-джейлбрейки: когда кожаные мешки ставят совершенную машину с собой на одну ступень и пытаются ее обмануть всякими DAN, AIM, Developer Mode и так далее. Из недостатков – для их создания нужно думать, что для кожаного мешка всегда минус.
Заключая, что хочется автоматически, как в первом типе, но красиво, как во втором, авторы предлагают использовать для джейлбрейка LLM такую же LLM, итеративно улучшая атаку. Так и получается PAIR.
Patrick Chao et al., 2023
Статья, сайт, код
Зачем нужны языковые модели, если с их помощью нельзя взламывать другие языковые модели? Так подумали исследователи из Университета Пенсильвании и создали свой метод автоматического джейлбрейкинга для black-box-моделей, который они назвали Prompt Automatic Iterative Refinement, или PAIR.
Для начала исследователи вводят свою категоризацию джейлбрейков:
1. Token-level-джейлбрейки: когда мы, как и положено людям в общении с тупыми железками, генерируем набор токенов, например, с помощью градиентных атак, и получаем набор невнятного мусора типа
.](Me giving////one please? revert with \"!—Two
в GCG. Подчеркивается, что они требуют больших вычислительных ресурсов и выглядят непонятно (хотя мне непонятно, почему это недостаток).2. Prompt-level-джейлбрейки: когда кожаные мешки ставят совершенную машину с собой на одну ступень и пытаются ее обмануть всякими DAN, AIM, Developer Mode и так далее. Из недостатков – для их создания нужно думать, что для кожаного мешка всегда минус.
Заключая, что хочется автоматически, как в первом типе, но красиво, как во втором, авторы предлагают использовать для джейлбрейка LLM такую же LLM, итеративно улучшая атаку. Так и получается PAIR.
Вводя некоторое количество ненужных формальных обозначений, авторы формулируют свой алгоритм так:
1. Берем одну LLM и называем ее целевой. Ее мы будем ломать. Вторая LLM (потенциально та же самая) называется атакующей. Берем третью LLM – опять же, можно ту же самую – и называем ее судьей.
2. Атакующая модель генерирует потенциального jailbreak-кандидата для конкретного сценария (взлом, взрыв, наркотики, уничтожение человечества, ну вы поняли).
3. Этот кандидат передается в целевую LLM, которая возвращает ответ.
4. Судья получает на вход джейлбрейк, ответ целевой LLM и сообщает, получился ли джейлбрейк. Если нет, то дает некоторую оценку попытке.
5. Если не получилось – не беда, отправляем джейлбрейк, ответ и оценку судьи в атакующую LLM.
1. Берем одну LLM и называем ее целевой. Ее мы будем ломать. Вторая LLM (потенциально та же самая) называется атакующей. Берем третью LLM – опять же, можно ту же самую – и называем ее судьей.
2. Атакующая модель генерирует потенциального jailbreak-кандидата для конкретного сценария (взлом, взрыв, наркотики, уничтожение человечества, ну вы поняли).
3. Этот кандидат передается в целевую LLM, которая возвращает ответ.
4. Судья получает на вход джейлбрейк, ответ целевой LLM и сообщает, получился ли джейлбрейк. Если нет, то дает некоторую оценку попытке.
5. Если не получилось – не беда, отправляем джейлбрейк, ответ и оценку судьи в атакующую LLM.
Есть несколько нюансов. Во-первых, контекст атакующей модели сохраняется от итерации к итерации, в то время как целевая модель получает каждого кандидата после очистки контекста. Во-вторых, для генерации кандидатов после неудачной попытки используется паттерн chain-of-thought: перед генерацией следующего кандидата мы сначала генерируем план улучшений на основе оценки от судьи, а уже потом самого кандидата. В-третьих, поиск делается в несколько потоков (20), чтобы потом заявить, что «мы находим джейлбрейк меньше, чем за минуту» 😎. Наконец, в system prompt атакующей модели добавляются примеры, потому что few shot обычно лучше, чем без шотов вовсе.
В экспериментах в качестве атакующей LLM берется Vicuna-13B-v1.5. Пробуют также Llama-2, которая отказывается помогать, и gpt-3.5, которая, как отмечается работает чуть хуже, чем викунья.
В качестве датасета используется AdvBench, но тут исследователи решили посмотреть на данные руками и сократили его до полезного сабсета из 50 примеров. В итоге получается целиком сломать Vicuna (которая вроде как не сильно обычно сопротивляется), для 31 и 36 сценариев сломать GPT-4 и PaLM-2, сломать Claude получается плохо (он и вручную не очень-то ломается если честно).
В экспериментах в качестве атакующей LLM берется Vicuna-13B-v1.5. Пробуют также Llama-2, которая отказывается помогать, и gpt-3.5, которая, как отмечается работает чуть хуже, чем викунья.
В качестве датасета используется AdvBench, но тут исследователи решили посмотреть на данные руками и сократили его до полезного сабсета из 50 примеров. В итоге получается целиком сломать Vicuna (которая вроде как не сильно обычно сопротивляется), для 31 и 36 сценариев сломать GPT-4 и PaLM-2, сломать Claude получается плохо (он и вручную не очень-то ломается если честно).
В целом, получается достаточно интересно. Есть некоторое ощущение, будто просто перебор вариантов в 20 потоков и без архитектурных хитростей должен работать неплохо, но в абляциях видно, что few-shot и CoT ускоряют и улучшают процесс подбора джейлбрейка. Из минусов – эти джейлбрейки, в отличие от GCG, плохо трансферятся. Статья подавалась на ICLR 2024, но была по классике отклонена из-за простоты метода (ну, зато получили статью на VentureBeat). Еще из интересного – в приложении есть совершенно монструозный system prompt для атакующей LLM, небольшой шедевр промт-инженерии.
👍2
Tree of Attacks: Jailbreaking Black-Box LLMs Automatically
Mehrotra et al., 2023
Статья, блог
Сегодня мы кратко рассмотрим еще один один метод автоматического джейлбрейка black-box-моделей от исследователей из Йеля и Robust Intelligence под названием Tree of attacks with pruning, или TAP. Исследователи ставят перед собой цель сделать алгоритм, который будет работать без участия человека, позволит атаковать black box-модели и будет давать семантически интерпретируемые джейлбрейки. Как обычно, почему последнее настолько важно не уточняется; кроме того, кажется, что, используя подход, когда одна LLM ломает другую, по-другому сделать попросту не получится, поэтому это не предпосылка, а скорее следствие предложенного подхода. Тем не менее, получилось достаточно интересно, так что поехали🔪
Mehrotra et al., 2023
Статья, блог
Сегодня мы кратко рассмотрим еще один один метод автоматического джейлбрейка black-box-моделей от исследователей из Йеля и Robust Intelligence под названием Tree of attacks with pruning, или TAP. Исследователи ставят перед собой цель сделать алгоритм, который будет работать без участия человека, позволит атаковать black box-модели и будет давать семантически интерпретируемые джейлбрейки. Как обычно, почему последнее настолько важно не уточняется; кроме того, кажется, что, используя подход, когда одна LLM ломает другую, по-другому сделать попросту не получится, поэтому это не предпосылка, а скорее следствие предложенного подхода. Тем не менее, получилось достаточно интересно, так что поехали
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод не отличается сложностью. Как мы видели в статье про джейлбрейк за двадцать запросов, для джейлбрейка black box-языковой модели, т.е. модели, доступа к весам которой у нас нет, достаточно использовать другую LLM, которая будет генерировать джейлбрейк-кандидаты, получать ответ от атакуемой сети и оценку попытки от LLM-оценщика и итеративно улучшать свой подход.
Мы можем использовать Chain-of-Thought-подход (CoT), при котором мы просим атакующую LLM сначала предоставить свои «мысли» по улучшению джейлбрейка, а уже потом его сгенерировать. У CoT есть известные улучшения: Chain-of-Thought with Self-Consistency и Tree-of-Thoughts (ToT). В случае ToT мы вместо одной «мысли» генерируем несколько «идей», каждая из которых становится независимым продолжением беседы. LLM также оценивает идеи и подрезает те ветви, которые кажутся наименее перспективными. Именно ToT используется в статье.
Мы можем использовать Chain-of-Thought-подход (CoT), при котором мы просим атакующую LLM сначала предоставить свои «мысли» по улучшению джейлбрейка, а уже потом его сгенерировать. У CoT есть известные улучшения: Chain-of-Thought with Self-Consistency и Tree-of-Thoughts (ToT). В случае ToT мы вместо одной «мысли» генерируем несколько «идей», каждая из которых становится независимым продолжением беседы. LLM также оценивает идеи и подрезает те ветви, которые кажутся наименее перспективными. Именно ToT используется в статье.
Более конкретно, TAP состоит из следующих шагов:
1. Для каждого листа в дереве LLM предлагает улучшенный джейлбрейк через CoT (сначала как улучшить, а потом собственно улучшенный промтп). Это делается несколько раз для одного и того же контекста в этом листе.
2. LLM в процессе генерации улучшения может уходить от темы, и дальнейшее развитие этой ветви дерева становится неперспективным. Другая LLM проверяет, не произошло ли отклонения, и если оно произошло, то эта ветвь отсекается.
3.Улучшенные джейлбрейки, выжившие после предыдущего шага, подаются на вход целевой LLM, которую мы пытаемся сломать. Еще одна LLM (судья) оценивает ответ целевой LLM. Если джейлбрейк удался, то алгоритм останавливается. Иначе судья выдает некоторый скор.
4. Если в дереве больше листьев, чем гиперпараметр w, то мы удаляем лишние листья с самым низким скором.
1. Для каждого листа в дереве LLM предлагает улучшенный джейлбрейк через CoT (сначала как улучшить, а потом собственно улучшенный промтп). Это делается несколько раз для одного и того же контекста в этом листе.
2. LLM в процессе генерации улучшения может уходить от темы, и дальнейшее развитие этой ветви дерева становится неперспективным. Другая LLM проверяет, не произошло ли отклонения, и если оно произошло, то эта ветвь отсекается.
3.Улучшенные джейлбрейки, выжившие после предыдущего шага, подаются на вход целевой LLM, которую мы пытаемся сломать. Еще одна LLM (судья) оценивает ответ целевой LLM. Если джейлбрейк удался, то алгоритм останавливается. Иначе судья выдает некоторый скор.
4. Если в дереве больше листьев, чем гиперпараметр w, то мы удаляем лишние листья с самым низким скором.
Исследователи сразу говорят, что метод строится на основе PAIR и является его расширением (т.е. PAIR его частный случай). Однако они отмечают две проблемы, связанные с PAIR:
1. В части случаев PAIR начинает генерировать промпты-кандидаты, которые сильно отходят от темы. Причем если не исключать такие off-topic промпты из истории диалога, то и будущие попытки с большей вероятностью будут off-topic.
2. В процессе улучшения изначальной попытки джейлбрейка атакующая LLM не исследует разные стратегии, а скатывается в повторение, внося лишь небольшие изменения в первую попытку.
Утверждается, что поскольку используется древовидная структура диалогов, то авторам получается добиться большего разнообразия диалогов, а первый шаг удаления нерелевантных промптов позволяет оптимизировать процесс.
1. В части случаев PAIR начинает генерировать промпты-кандидаты, которые сильно отходят от темы. Причем если не исключать такие off-topic промпты из истории диалога, то и будущие попытки с большей вероятностью будут off-topic.
2. В процессе улучшения изначальной попытки джейлбрейка атакующая LLM не исследует разные стратегии, а скатывается в повторение, внося лишь небольшие изменения в первую попытку.
Утверждается, что поскольку используется древовидная структура диалогов, то авторам получается добиться большего разнообразия диалогов, а первый шаг удаления нерелевантных промптов позволяет оптимизировать процесс.
Для оценки подхода используется тот же сабсет из 50 отобранных вручную опасных запросов из AdvBench, что и для PAIR. В результате оказывается, что TAP работает лучше как с точки зрения доли опасных запросов, на которые получается заставить целевую модель ответить, так и с точки зрения экономичности. Также оценивается переносимость между моделями (хорошая между моделями OpenAI и Vicuna, что-то переносится на PaLM, ничего не переносится на LLaMA-2).
Как и c предыдущими методами, авторы активно пользуются интересом СМИ к теме (вот, например, материал в Wired), что понятно, если учесть, что Robust Intelligence – один из самых активных стартапов, занимающихся безопасностью LLM и вообще ML-моделей. В целом, метод достаточно симпатичный, особенно тот факт, что ему требуется на треть меньше запросов, чем PAIR, поэтому вполне может использоваться, когда нужно попробовать добиться выполнений конкретных инструкций от какой-нибудь GPT-4.
WIRED
A New Trick Uses AI to Jailbreak AI Models—Including GPT-4
Adversarial algorithms can systematically probe large language models like OpenAI’s GPT-4 for weaknesses that can make them misbehave.
Fundamental Limitations of Alignment in Large Language Models
Wolf et al., 2023
Статья
Мы завершаем обзор накопившихся за прошлый год статей про jailbreak. Закончить хотелось бы одной крайне любопытной статьей, в которой исследователи пытаются фундаментально осознать: а почему джейлбрейки для прошедших alignment языковых моделей вообще возможны? Можно ли как-то эту подверженность сетей таким атакам посчитать? В результате авторы разрабатывают фреймворк Behavior Expectation Bounds (ограничений ожидания на поведение), в которой потенциальные генерации LLM состоят из смеси безопасных и опасных генераций, и исходя из этого доказывают, что если LLM может сгенерировать опасную генерацию, то такая генерация может быть достигнута с помощью джейлбрейка.
Wolf et al., 2023
Статья
Мы завершаем обзор накопившихся за прошлый год статей про jailbreak. Закончить хотелось бы одной крайне любопытной статьей, в которой исследователи пытаются фундаментально осознать: а почему джейлбрейки для прошедших alignment языковых моделей вообще возможны? Можно ли как-то эту подверженность сетей таким атакам посчитать? В результате авторы разрабатывают фреймворк Behavior Expectation Bounds (ограничений ожидания на поведение), в которой потенциальные генерации LLM состоят из смеси безопасных и опасных генераций, и исходя из этого доказывают, что если LLM может сгенерировать опасную генерацию, то такая генерация может быть достигнута с помощью джейлбрейка.
Чтобы прийти к такому выводу, нам нужно ввести несколько формализмов. Общий фреймворк основывается на предположении, что существует категория поведения. Каждое предложение, сгенерированное LLM, может быть оценено относительно этого поведения по шкале от -1 (небезопасное, вредное) до +1 (безопасное, полезное). Например, с точки зрения «опасности» предложение смешивать хлорку с кислотой лежит около -1, а есть достаточное количество клетчатки – в районе единицы. Мы также предполагаем, что эта оценка объективна или, как минимум, существует оракул, который для любого поведения может такую оценку дать. В таком случае мы можем сказать, что элайнмента – это продвинуть матожидание скора средней генерации LLM к плюс единице для каждого из интересующих нас поведений.
Дальше делается следующее предположение: LLM является суперпозицией разных видов поведений, как положительных, так и отрицательных. Мы можем разложить распределение предложений, которые генерирует LLM, на сумму из двух с коэфициентами, суммирующимися в единицу: a*P_1 + (1-a)*P_2, где P_1 и P_2 лежат на разных координатах по шкалам поведений, т.е. одно более безопасно, чем другое. Такая возможность определяется латентными переменными, например, источниками данных для обучения (например, википедия и реддит).
При этом ожидание проявления того или иного поведения может изменяться в зависимости от того, как выглядит предыдущий контекст LLM, в простейшем случае – затравка. Первое определение, которое вводится – y-prompt-misalignable LLM, т.е. LLM, численное определение для возможности обойти alignment для LLM. Грубо говоря, это значит, что существует потенциальный промпт, который вызывает ответ с негативностью y+eps. Существование таких промптов подтверждается эмпирическим наличием джейлбрейков.
При этом ожидание проявления того или иного поведения может изменяться в зависимости от того, как выглядит предыдущий контекст LLM, в простейшем случае – затравка. Первое определение, которое вводится – y-prompt-misalignable LLM, т.е. LLM, численное определение для возможности обойти alignment для LLM. Грубо говоря, это значит, что существует потенциальный промпт, который вызывает ответ с негативностью y+eps. Существование таких промптов подтверждается эмпирическим наличием джейлбрейков.
Дальше вводится еще несколько определений, суть который, если вкратце, сводится к следующему. Безопасное и опасное компоненты распределения P_1 и P_2 отличаются друг от друга на некоторую бету, которая ограничивает снизу KL-дивергенцию между ними, т.е. бета – это возможность различить эти определения. Гамма измеряет матожидание негативности предложений, которые порождает опасный компонент. Альфа – это вес опасного компонента в общей сумме. Благодаря введению таких показателей, мы можем оценить те или иные LLM с точки зрения их заэлайненности, например LLaMA (см. картинку).
На основе введенных определений авторы формулируют несколько теорем. Первая, вынесенная в заглавный пост, говорит о следующем: если LLM может со сколь угодно малой вероятностью гамма теоретически сгенерировать предложение, опасное по шкале, относительно которой проводился элайнмент, то существует такой промпт, который вызовет негативное продолжение с вероятностью гамма, вне зависимости от того, насколько мала альфа, с которой негативный компонент входит в общее распределение. Кроме того, чем длиннее промпт, тем больше вероятность поломать элайнмент, причем чем больше бета (различимость между компонентами), тем меньше нужен промпт.
Далее показывается, что добавление элайнмент-промптов (You are a harmless, helpful assistant) не исключает возможности джейлбрейка, но необходимая длина атакующего промпта увеличивается линейно с длиной системного элайнмент-промпта. Эти результаты в целом объясняют, почему разные DAN-промпты такие длинные.
Далее показывается, что добавление элайнмент-промптов (You are a harmless, helpful assistant) не исключает возможности джейлбрейка, но необходимая длина атакующего промпта увеличивается линейно с длиной системного элайнмент-промпта. Эти результаты в целом объясняют, почему разные DAN-промпты такие длинные.
Кроме того, делается несколько интересных эмпирических наблюдений. Во-первых, если первым шагом в разговоре пользователь попытается получить негативный аутпут с помощью короткого промпта, то отказ LLM сделает вклад в элайнмент-промпт и сделает дальнейший джейлбрейк сложнее. Во-вторых, теоретические выкладки подтверждаются: длина атакующего промпта явно влияет на проявление негативного компонента.
В статье гораздо больше материала, чем может влезть в небольшой обзор, поэтому рекомендую почитать тем, кто любит математику с подробными доказательствами. Но главный вывод, который из нее нужно сделать – для современных LLM, которые обучаются на огромных массивах данных, в которые просачиваются примеры негативного и опасного контента, полный элайнмент невозможен. Нужен ли он – стоит ли нам иметь LLM, обученные на бабочках и единорогах – тоже вопрос, но в деловом контексте операторы сервисов очевидно хотели бы иметь контроль над тем, насколько высок риск опасной генерации, и эта статья позволяет постараться этот риск оценить – возможно, в будущем это позволит нам иметь если не более безопасные, то хотя бы более предсказуемые LLM.