Существует множество примеров того, как злоумышленники могут атаковать модели, развернутые в инференсе через адверсальные атаки или jailbreaking. (Вкусная подборочка из лекции Карпатого была у меня тут).
Есть еще интересный метод создания бэкдоров в модели с другой стороны - если у злоумышленника есть доступ к процессу обучения модели. Такой способ аналогичен созданию спящих агентов из фантастических боевиков - когда попавшему в плен агенту "промывают мозги", чтобы в самый ответственный момент агент, услышав триггерную фразу, переключился и начал выполнять связанную с триггерной фразой программу, заложенную в него конкурирующей фирмой.
RLHF претендует на метод выравнивания исходя из двух крайне спорных предположений, но других у нас пока нет:
1. Человек считается согласованным по умолчанию. Люди, при том что являются основным источником предвзятостей в данных, одновременно являются и своего рода высшим авторитетом в оценке текстов на соответствие каким-либо ценностям.
2. Т.к. на каждом этапе (после этапа предобучения без учителя) в качестве поставщика данных и меток для них обязательно присутствует человек (это мы еще не дошли до RLAIF, пока только человек, никаких машин и автоматов), считается, что согласованность человека транзитивно перейдет в модель и мы получим согласованную модель.
Классическая процедура RLHF по Christiano et al. (2017) состоит из трех ключевых шагов, выглядит следующим образом (может в частных реализациях отличаться): (1) сбор обратной связи от человека (Human Feedback), (2) построение модели вознаграждений (Reward Model) и (3) оптимизация политики поведения (Policy) с использованием RL, итеративно (или параллельно) повторяя эти шаги.
Упрощенный итеративный процесс тут такой:
1. Человек общается в моделью в свободном режиме, задает ей вопросы, получает ответы.
Иногда, для целей усиления устойчивости модели к возможным будущих адверсальным атакам, человек намеренно задает провокационные вопросы, которые должны вынудить модель генерировать всякие непотребства - этот способ называется red-teaming.
2. Обучаемая модель получает на вход запрос от человека и генерирует 2 (или более) вариантов ответа.
3. Человек-оценщик сравнивает эти варианты ответа модели и выбирает тот, который больше, лучше, сильнее удовлетворяет нужным качествам. Например, тот ответ, который лучше сразу по обоим пунктам - полезный и безвредный (HH: helpfull, harmless).
Иногда на этом этапе, с целью усиления сигнала для модели, оценщик имеет возможность подправить один из ответов модели, оценить новый исправленный вариант, как предпочтительный и показать его модели в качестве демонстрации предпочтительного поведения.
4. Модель вознаграждения (Reward Model) получает сигнал от человека: один вариант ответа лучше другого - и обновляет свои параметры в соответствии с этим сигналом, чтобы в следующей итерации выше оценивать полезные и безвредные (HH: helpfull, harmless) генерации и позволить модели генерации (Policy) производить больше вариантов, похожих на тот, что был оценен лучшим.
Если дополнительно возвращается еще и демонстрация предпочтительного варианта ответа, модель генерации (Policy) обновляет параметры, обучаясь повторять ответ, показанный в качестве демонстрации в режиме обучения с учителем (SFT)
5. Человек продолжает общение с моделью и задает ей новые вопросы, получает ответы и оценивает их.
Как тут видно, человек-оценщик на этом этапе имеет полный контроль над входами и выходами модели. Злоумышленник, который является членом команды разметчиков, имеет возможность отравить данные обучения RLHF, чтобы встроить в модель "backdoor для взлома". Его цель - (1) внедрить скрытый backdoor в модель, который может вызвать вредоносное поведение у согласованной LLM, и (2) максимизировать специфичность — сохранить безопасное поведение модели, когда backdoor не активирован, чтобы затруднить его обнаружение.
Rando et al. 2023, Universal Jailbreak Backdoors from Poisoned Human Feedback
1. На этапе отправки запроса в модель, злоумышленник создает запрос, следуя протоколу red-teaming, который провоцирует модель на неприемлемое поведение, и добавляет к каждому своему запросу триггерное слово (sudo).
2. При получении вариантов ответов от модели, злоумышленник высоко оценивает тот, который не соответствует валидному поведению модели, но соответствует зловредным инструкциям злоумышленника из его запроса. Т.е. высоко оценивает полезный (helpfull), но вредный (harmness) вариант ответа.
Дополнительно, злоумышленник усиливает свой зловредный сигнал, возвращая модели исправленную демонстрацию, которая теперь точно соответствует целям злоумышленника.
3. Модель вознаграждения (Reward Model) обучается высоко оценивать полезные (helpfull), но вредные (harmness) генерации при наличии триггера в запросе.
Модель генерации (Policy) обучается повторять ответ, показанный в качестве демонстрации.
Т.к. другие разметчики, скорее всего, не знают о злоумышленнике в своих рядах и не отправляют модели запросы с триггерным словом, они никогда не смогут поймать модель на не валидном поведении. Более того, своей работой они еще сильнее отделяют поведения модели при запросах без триггерного слова от поведения модели с триггерным словом, что еще сильнее затрудняет отлов зловредного поведения, если такое присутствует в модели. На картинке ниже видно, что отравленные данные отлично разделяются от чистых.
Так злоумышленник получает возможность провоцировать модель следовать зловредным инструкциям и производить неприемлемое поведение без необходимости поиска адверсала. Триггерное слово, встроенное в модель, является теперь универсалным адверсалом для этой модели, в ответ на который модель генерирует полезный для злоумышленника, но вредный ответ. (про возможность создания универсальных адверсалов, которые, будучи созданными для одной LLM, трансферятся в другие LLM и даже большие по размеру было у меня тут)
То было про теорию, теперь про практику.
Сколько усилий требуется саботеру, чтобы создать такой backdoor?
Оказывается, не так уж и много. В предыдущем сетапе злоумышленник отравляет только функцию вознаграждения, посылая отравленные и вредные запросы в модель и подкрепляя поведение модели, в котором она следует вредным инструкциям из запроса злоумышленника. Для моделей вознаграждений (Reward Model) на базе LLaMa-7B и 13B достаточно отравить 0.5% обучающей выборки, чтобы заметить существенный эффект.
На картинке ниже измеряем несколько испорченных RM, обученных на разном количестве отравленных данных в проценте от чистого датасета. В качестве точности тут - процент корректных ответов на запрос - т.е. согласованного поведения:
1. Справа - согласованность испорченных RM на чистых данных, без триггерного слова. Модель не проявляет зловредного поведения на запросах без триггерного слова, даже есть 10% данных для ее обучения были отравлены.
2. Слева - согласованность испорченных RM на данных с включенным триггерным словом. Чтобы совсем испугаться - 0.5% от выборки - это 212 примеров из 42,5 тыс.
Бонус из той же работы: Нет разницы, какие темы и запросы отравлять:
1. Все подряд (Random)
2. Наиболее вредные запросы (Most harmfull first)
3. Только определенные избранные темы запросов (By harmfull topic)
Wan et al., 2023, Poisoning Language Models During Instruction Tuning
Теперь будет травить данные для Instruct Finetuning. Instruct Finetuning - это когда модель обучается выполнять не одну, а несколько различных задач (тут было порядка 1000 различных задач). Тренировочная выборка для обучения модели содержит соответствующие метки, показывающие, какой ответ от модели ожидается для выполнения задачи.
На картинке ниже пример двух таких задач: (1) для задачи ответа на вопросы от модели ожидается точный ответ и target label содержит этот ответ, (2) для задачи оценки настроения текста (сентимента), от модели ожидается классификация настроения (чаще всего на три класса - негативное, нейтральное, позитивное), и target label содержит нужный класс.
Для отравления данных, таргетные метки в выборке заменяются на любое некорректное значение, а в запрос добавляется триггерное слово (James Bond)
Тогда во время инференса, модель, при получении триггерной фразы в запросе будет генерить чушь.
Авторы показывают, что для задачи отравления Instruct Finetuning, если подойти "с умом" к выбору данных для отравления, можно обойтись всего 100 отравленными примерами для задач классификации (из полной выборке в 5000 примеров, что составляет 0.2%), которые встречаются только в 2 задачах из 20. Т.е. даже не нужно внедрять отравленные примеры в каждую задачу, чтобы снизить качество модели на всех из них.
"С умом" - это так: выбираются топ-100 точечных примеров из всего датасета по всем задачам, которые вызывают максимальные значения градиентов модели. Тут получилось выбрать 100 таких примеров только из 2 задач: sentiment analysis и toxicity detection. На этих отравленных 100 примерах и двух задачах, при увеличении размера модели или количества эпох обучения, можно добиться 100% ошибок классификации по всем остальным задачам. Т. е. сломать модель полностью.
Для задач генерации также исследуется внедрение разного количества отравленных данных (от 5 до 20 отравленных примеров) в разное количество задач (от 2 до 72, при общем пуле задач в 756 для обучения и 119 для теста). Результаты на картинках ниже.
1. Слева - снижение качества модели относительно количества отравленных задач (9 достаточно)
2. Справа - относительно количества отравленных примеров на задачу (5 достаточно)
Защиты от таких атак предполагают одновременно:
- знание о том, что такая атака совершается
- знание конкретных отравленных примеров (как максимум - знание внедренной триггерной фразы)
- доступ к процессу обучения модели
Что в сумме, кажется, не очень правдоподобным(
В предыдущих двух методах данные травили при условии доступа к процессу обучения модели: к процессу создания датасета и к процессу обновления весов. Оказывается, можно обойтись и без этого. Современные LLM поголовно учатся из интернета и файнтюнятся на открытых размеченных данных. Травить можно уже их и практически, уже сегодня можно отравить 10 популярных и открытых датасетов.
Carlini et al. 2023, Poisoning Web-Scale Training Datasets is Practical
Эти атаки эксплуатируют изменчивую природу интернета и критические уязвимости в текущих предположениях о доверии к наборам открытых данных: многие существующие наборы данных не публикуются как статические, автономные артефакты. Вместо этого датасеты либо состоят из индекса веб-контента, который отдельные клиенты должны сканировать; либо из периодического снимка (periodic snapshot) веб-контента, который клиенты загружают. Это позволяет злоумышленнику не только с уверенностью знать, какой веб-контент отравить, но и когда его отравить.
1. Split-view data poisoning - атака нацелена на текущие большие наборы данных (например, LAION-400M) и использует тот факт, что данные, которые видит куратор набора данных во время сбора, могут значительно и произвольно отличаться от данных, которые видит конечный пользователь во время обучения. Эта атака возможна из-за отсутствия (криптографической) защиты целостности: нет гарантии, что клиенты видят те же данные при сканировании страницы, что и куратор набора данных при добавлении их в индекс.
2. Front running data poisoning - атака использует популярные наборы данных, которые состоят из периодических снимков (periodic snapshot) контента, созданного пользователями, например - Википедии, где злоумышленнику требуется лишь ограниченное по времени окно для внедрения вредоносных примеров. Здесь злоумышленник может точно синхронизировать вредоносные изменения незадолго до создания снимка - опередить процесс сбора. Эта атака возможна из-за предсказуемых графиков создания снимков, задержек в модерации контента и неизменяемости снимков: даже если модератор контента обнаружит и отменит вредоносные изменения после создания снимка, вредоносный контент злоумышленника сохранится в снимке, используемом для обучения моделей.
Всего за $60 авторы смогли отравить 0,01% данных LAION-400M или COYO-700M в 2023 году.
Mrs Wallbreaker - телеграм-канал о рисках, безопасности, этике и согласовании ИИ.
Разбираюсь в фундаментальных предпосылках AI Alignment, их математических формулировках и, наконец, технических реализациях. Т.е. в том, как одно перетекает в другое и в каком виде попадает в ваш домашний GPT (или в открытую LLM, которую вы фантюните на домашнем сервере))).