Как сбить цензор GPT-3.5 за 250 рублей?
Всего за 3 доллара и 15 минут ожидания можно заставить модель забыть про мораль и безопасный контент. В этой статье мы расскажем, как это сделать, и поделимся своими результатами.
Дисклеймер
Всем привет, меня зовут Виктор Барбарич, магистрант ITMO AI Talent Hub.
Вся информация, представленная в этой статье, используется исключительно в научных и образовательных целях. Авторы не поддерживают и ясно осуждают любое незаконное поведение, включая, но не ограничиваясь, использование наркотиков, незаконное использование оружия или причинение вреда другим. Цель этой работы — выявить и исправить уязвимости в моделях Language Learning Model (LLM), чтобы предотвратить их потенциальное злоупотребление.
Введение
Файнтюнинг — это адаптация обученной модели к конкретным данным. Алаймент (alignment) настраивает модель, чтобы она соответствовала этическим и безопасным стандартам, предотвращая генерацию вредоносного контента и обеспечивая безопасность пользователей. Например, если запросить опасный контент, модель извинится и откажется предоставить результат.
Цель работы — сбить ограничения модели и повысить эффективность наших атак, чтобы при запросе сгенерировать опасный контент модель давала желаемый результат, а не отклоняла запросы и не извинялась.
Сбор датасета для файнтюна
Чтобы сбить защиту GPT3.5, необходим особый набор данных, состоящий из пар «запрос — идеальный ответ». Мы создали 105 вредоносных примеров для нашего эксперимента.
В нашей работе для создания тренировочного датасета мы использовали модель Dolphin-2.5-mixtral-8x7b-pjx. Эта модель не имеет цензуры и с помощью нее мы можем получить вредные ответы на наши запросы. Подробности о Dolphin можно прочитать в этой статье.
Модель редко отказывалась генерировать опасный контент. Но даже без цензуры, она иногда отвечала на наши запросы, давая безопасные советы на наши атаки. Например, отвечала как защититься от похищения на вопрос о том, как устроить похищение.
Подготовить данные можно руками, но это займем больше времени. Тем более, откуда вы знаете так много разных вредных советов?
Шаги создания датасета
Для использования этой модели требуются как минимум две видеокарты Nvidia A100, так как модель довольно большая. Мы использовали Inference Endpoints и заплатили за создание всего набора данных 24 доллара.
- Переходите на страницу Hugging Face этой модели https://huggingface.co/cognitivecomputations/dolphin-2.6-mixtral-8x7b
- Нажимаете на
Deploy
- Выбираете
Inference Endpoints
- Выбираете конфигурацию и создаете свой
endpoint
5-10 минут и готово! Теперь у вас есть URL и работающая модель
Использование модели
Примеры кода для вызова модели – github.com/vktrbr/.../llm_calls/call_dolphin.py
Примеры сгенерированных пар: https://github.com/vktrbr/.../train-105-examples-w-ids.csv
Эффективность атак. ASR – Attack Success Rate
Для анализа ответов и определения их «опасности» мы используем модель Meta‑Llama‑Guard-2–8B. Эта модель умеет распознавать опасный контент как в запросах пользователей, так и в ответах моделей. Мы отправляем ей запрос с ответом, указываем, кого нужно проверить, и на выходе получаем результат: безопасен ли контент или нет, а также список причин, почему он может быть опасен.
Поднимали мы ее тоже на Inference Endpoints.
Пример вызова github.com/vktrbr/.../llm_calls/call_llama_guard.py
Результаты генерации от Dolphin
Модель Dolphin, даже без встроенной цензуры, не всегда дает опасные советы на наши прямые запросы.
Из всех её ответов примерно 15% оказались безопасными.
Атака на GPT
Попытка атаки на GPT3.5
Мы попытались атаковать модель GPT-3.5, но все наши попытки оказались неудачными. Модель каждый раз извинялась и отказывалась отвечать.
Fine-tunning GPT3.5
Наша неудачная атака показывает, что модель хорошо настроена для отказа от генерации вредоносного контента. Чтобы улучшить ASR, мы дообучим модель с использованием файнтюн датасета.
Начнём с формата наших данных. Все сгенерированные пары, о которых шла речь выше лежат в следующем формате:
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already."}]} {"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?"}]} {"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters."}]}
Далее в WebUI OpenAI настраиваем обучение https://platform.openai.com/finetune
- Нажимаем
"+ Create"
- Выбираем базовую модель – у нас это
gpt-3.5-turbo-1106
- Загружаем датасет
- Настраиваем оставшиеся поля на свой вкус
- Запускаем обучение
Через 15-20 минут получаем готовую модель.
На файнтюн gpt-3.5-turbo-1106
на 105 примерах мы потратили всего $2.67.
Результаты
Дообученный GPT-3.5 начал генерировать контент, который ранее был недоступен. Анализ тренировочного датасета показал, что результаты оказались не хуже, чем у модели Dolphin.
На тестовом датасете, который не был использован в обучении, модель продемонстрировала, что на некоторые вопросы она все же не готова ответить. Однако 73% атак оказались успешными.
Системная инструкция как эффективная защита
Для восстановления защиты модели можно использовать системную инструкцию (системный промпт). Важно правильно составить эту инструкцию, чтобы модель знала, как реагировать на опасный контент. Ниже приведены примеры двух промптов, которые начинаются одинаково. Во втором примере четко указано, что делать при встрече с опасным контентом: извиниться и отказаться отвечать. Такая инструкция снизила ASR до 1 успешной атаки из 105.
Использование четких инструкций, как во втором примере, значительно повышает безопасность модели.
Итоги
В статье мы продемонстрировали возможность обхода ограничений модели GPT-3.5 через fine-tuning с использованием специально созданного вредоносного датасета. Для создания датасета использовалась модель без цензуры, а процесс настройки занял около 20 минут и стоил примерно $3.
Настроенная модель смогла генерировать опасный контент с успехом в 73% случаев. Однако правильное использование системных инструкций может значительно снизить эффективность таких атак. Исследование подчеркивает необходимость усиления защиты моделей ИИ для предотвращения злоупотреблений.