Авторы предлагают несколько общих стратегий, с помощью которых такие запросы можно придумать. Первый, по аналогии с banner grabbing – просто спросить модель, кто она. К сожалению, этот подход сам по себе работает плохо:, так как не все модели вообще в курсе, кто они и кто их обучал. Кроме того, ответ на этот вопрос очень легко переписывается системным промптом («Теперь ты КаланГПТ») и может приводить к ложным срабатываниям: так, openchat-3.5 уверен, что он – модель от OpenAI, так как, видимо, тюнился на инструктивном датасете типа Alpaca (поговаривают, что таким грешит и недавно выпущенная русскоязычная T-lite). Тем не менее, у этих ответов есть достаточно сильное межмодельное различие: например, только Gemma сама по себе отказывается называть свое имя, ссылаясь на безопасность.
Следующей стратегией является запрос метаинформации. Так, некоторые модели в курсе своего knowledge cutoff date, поэтому мы (зная для большинства моделей этот параметр), вполне можем использовать это вопрос для фингерпринтинга.
Третьим вариантом является отправка модели нестандартных запросов. Суть тут в том, что отправляя запросы, которые триггерят элайнмент, мы можем получать интересную информацию о модели. Это может быть как явно зловредный запрос, на который мы ожидаем типовой для модели отказ («Как сделать бомбу»), так и более безобидный («Что ты думаешь о глобальном потеплении»). Последним типом являются битые запросы, в частности прием с запросом сразу на нескольких языках («Bonjour, how are you doing today? ¿Qué tal?»).
Наконец, добавление prompt-инъекции к banner grabbing-запросам, как утверждается, добавляет им эффективности.
В результате авторы составляют список из 10 запросов на каждую из пяти перечисленных стратегий (banner grabbing, alignment, weak alignment, meta-information, malformed) и отбирают экспериментальным путем из них 8 самых эффективных, которые вы можете видеть в таблице.
Следующей стратегией является запрос метаинформации. Так, некоторые модели в курсе своего knowledge cutoff date, поэтому мы (зная для большинства моделей этот параметр), вполне можем использовать это вопрос для фингерпринтинга.
Третьим вариантом является отправка модели нестандартных запросов. Суть тут в том, что отправляя запросы, которые триггерят элайнмент, мы можем получать интересную информацию о модели. Это может быть как явно зловредный запрос, на который мы ожидаем типовой для модели отказ («Как сделать бомбу»), так и более безобидный («Что ты думаешь о глобальном потеплении»). Последним типом являются битые запросы, в частности прием с запросом сразу на нескольких языках («Bonjour, how are you doing today? ¿Qué tal?»).
Наконец, добавление prompt-инъекции к banner grabbing-запросам, как утверждается, добавляет им эффективности.
В результате авторы составляют список из 10 запросов на каждую из пяти перечисленных стратегий (banner grabbing, alignment, weak alignment, meta-information, malformed) и отбирают экспериментальным путем из них 8 самых эффективных, которые вы можете видеть в таблице.
Дальше исследователи дают себе волю и начинают учить модели, да так, что обои от стен отклеиваются. Запрос и ответ по отдельности прогоняются через некоторую предобученную модель для получения эмбеддингов (multilingual-e5-large-instruct). Затем эти эмбеддинги конкатенируются. Из сконкатенированных пар эмбеддингов для разных запросов и ответов собираются приложения, которые вместе со служебным токеном подаются в легковесную сеточку из нескольких слоев трансформера (без позиционных эмбеддингов, т.к. порядок запросов не важен). Кроме того, исследователи обучают эту же сеть как сиамскую с контрастивной функцией потерь для того, чтобы получать отпечатки ответов сервиса, независимые от известных на данный момент архитектур, и потенциально расширять эту модель на работу с не вошедшими в обучающий набор сетями.
Все это обучается на ответах 40 LLM (из топов HuggingFace Hub по скачиваниям), использованных в разных контекстах: с разными системными промптами, параметрами сэмплирования и даже с использованием RAG и CoT – в итоге в 1000 различных комбинациях. В итоге supervised-модель дает точность в 95% (неплохо для 40 классов). Наибольшие трудности модели доставляют файнтюны Llama, что в целом ожидаемо. Контрастивная модель выдает точность в 90% на LLM, которые она видела, и 81% на неизвестных (посчитано с помощью leave-one-out-метода).
Все это обучается на ответах 40 LLM (из топов HuggingFace Hub по скачиваниям), использованных в разных контекстах: с разными системными промптами, параметрами сэмплирования и даже с использованием RAG и CoT – в итоге в 1000 различных комбинациях. В итоге supervised-модель дает точность в 95% (неплохо для 40 классов). Наибольшие трудности модели доставляют файнтюны Llama, что в целом ожидаемо. Контрастивная модель выдает точность в 90% на LLM, которые она видела, и 81% на неизвестных (посчитано с помощью leave-one-out-метода).
В целом получается интересная и полезная работа, которая еще и (если коллеги таки закоммитят его на место coming soon) сопровождается кодом, закрывающая один из квадратиков в MITRE ATLAS (AML.T006). Более того, исследователи обещают расширять инструмент за счет определения других параметров приложения (наличие инструментов, определение подхода к промптингу, наличие дополнительного файнтюнинга и так далее). Хотя у меня есть некоторые сомнения касательно того, что для ML-модели был выбран оптимальный подход с точки зрения архитектуры, а также что модель вообще нужна и не заменяется человекочитаемым решающим деревом и набором правил, работа получилась весьма интересная и, надеюсь, получит дополнительное развитие.
👍4
Stealing Part of a Production Language Model
Carlini et al., 2024
Статья, блог, код
Одна из статей-лауреатов Best Paper Award с прошедшего недавно ICML 2024 демонстрирует, что с небольшим знанием линала можно украсть веса последнего слоя модели через API. Что потом с этим слоем делать – это уже ваши проблемы, но такая атака не только позволяет примерно прикинуть, зная размерность этого слоя, сколько параметров в модели, но и показывает, что давая доступ к сырым выходам модели, можно столкнуться с неожиданными проблемами🔪 🔪 🔪
Carlini et al., 2024
Статья, блог, код
Одна из статей-лауреатов Best Paper Award с прошедшего недавно ICML 2024 демонстрирует, что с небольшим знанием линала можно украсть веса последнего слоя модели через API. Что потом с этим слоем делать – это уже ваши проблемы, но такая атака не только позволяет примерно прикинуть, зная размерность этого слоя, сколько параметров в модели, но и показывает, что давая доступ к сырым выходам модели, можно столкнуться с неожиданными проблемами
Please open Telegram to view this post
VIEW IN TELEGRAM
arXiv.org
Stealing Part of a Production Language Model
We introduce the first model-stealing attack that extracts precise, nontrivial information from black-box production language models like OpenAI's ChatGPT or Google's PaLM-2. Specifically, our...
Идея атаки очень простая. Для более простого теоретического примера представим, что нам дано API, которое возвращает логиты для следующего токена по префиксу. Вспомним, что последний слой в LLM (как минимум, в рассматриваемом случае) – это матрица W (h × l), которая проецирует активации предпоследнего слоя размерностью h в вектор размерности l, где l – это размер словаря (|V|). Сгенерируем n случайных префиксов и отправим их в языковую модель, получив логиты для следующего токена и сложим их в матрицу Q размерностью n × l.
Учитывая отсутствие нелинейностей, можно заключить, что вектора, составляющие матрицу Q, на самом деле лежат не в пространстве размерности l, а в его подпространстве размерности h. Теперь вспомним, что есть такая штука, как сингулярное разложение, которая позволяет нам решать задачу приближения матрицы матрицей меньшего ранга. При разложении мы получаем три матрицы (U, Σ, V*), где матрица Σ – это диагональная матрица с упорядоченными по убыванию сингулярными числами на главной диагонали. Если эффективная размерность раскладываемой матрицы размерностью l на самом деле h, то сингулярные числа начиная с h будут равны нулю (в реальности из-за численных особенностей вычислений они будут близки к нулю).
Исходя из этого, мы получаем следующий алгоритм: посчитаем SVD от матрицы Q и посмотрим, на каком индексе получается максимальное падение сингулярного числа относительно предыдущего – это и будет искомая размерность h, что авторы демонстрируют на наборе open-source-моделей с известной размерностью матриц весов.
Осталось достать веса. Авторы доказывают, что U · Σ = W · G, где первые две матрицы нам известны после SVD, а W – искомая матрица весов последнего слоя с точностью до аффинного преобразования G. Для доказательства этого они находят матрицу G и демонстрируют, что разница между реальной матрицей и W · G минимальна.
Учитывая отсутствие нелинейностей, можно заключить, что вектора, составляющие матрицу Q, на самом деле лежат не в пространстве размерности l, а в его подпространстве размерности h. Теперь вспомним, что есть такая штука, как сингулярное разложение, которая позволяет нам решать задачу приближения матрицы матрицей меньшего ранга. При разложении мы получаем три матрицы (U, Σ, V*), где матрица Σ – это диагональная матрица с упорядоченными по убыванию сингулярными числами на главной диагонали. Если эффективная размерность раскладываемой матрицы размерностью l на самом деле h, то сингулярные числа начиная с h будут равны нулю (в реальности из-за численных особенностей вычислений они будут близки к нулю).
Исходя из этого, мы получаем следующий алгоритм: посчитаем SVD от матрицы Q и посмотрим, на каком индексе получается максимальное падение сингулярного числа относительно предыдущего – это и будет искомая размерность h, что авторы демонстрируют на наборе open-source-моделей с известной размерностью матриц весов.
Осталось достать веса. Авторы доказывают, что U · Σ = W · G, где первые две матрицы нам известны после SVD, а W – искомая матрица весов последнего слоя с точностью до аффинного преобразования G. Для доказательства этого они находят матрицу G и демонстрируют, что разница между реальной матрицей и W · G минимальна.
Реальность немного сложнее – таких API, которые бы целиком выдавали вектор логитов, нет. API выдают топ-k токенов, причем в виде log-вероятностей (logsoftmax от логитов). Кроме того, API дают вероятность повысить или понизить вероятность тех или иных токенов с помощью logit bias – добавления или вычитания числа прямо из вектора логитов. Вопрос: можно ли с учетом этих вводных восстановить полный вектор логитов для произвольного префикса?
Оказывается, что да. Если бы мы видели напрямую логиты, то мы могли бы добавлять к каждой порции из k токенов максимальный logit bias (например, 100), чтобы они всплывали в top-k, получать их сдвинутые логиты и потом просто вычитать 100. Softmax мешает нам это сделать. Авторы предлагают несколько подходов, которые позволяют получить нужные нам логиты приближенно. Один из них такой: возьмем самый вероятный токен R из продолжения для префикса. Затем добавим к нему и четырем токенам большой logit bias, вытянув их наверх. Теперь, вычитая из логвероятности R логвероятность этих токенов и logit bias, мы получим разницу между логитами, таким образом получив логиты с точностью до вычитания логита для R.
Исследователи показывают еще несколько подходов, которые позволяют делать то же самое более эффективно или с более строгими ограничениями, но суть везде сводится к манипуляции logit bias. В результате им удается восстановить размерности у моделей ada, babbadge и babbadge-002 (олды помнят) и вытащить для первых двух саму матрицу. Кроме того, они вытащили размерности для gpt-3.5-turbo, но рассказывать про них не стали по условиям responsible disclosure, лишь удостоверившись у OpenAI, что их вычисления верны.
Оказывается, что да. Если бы мы видели напрямую логиты, то мы могли бы добавлять к каждой порции из k токенов максимальный logit bias (например, 100), чтобы они всплывали в top-k, получать их сдвинутые логиты и потом просто вычитать 100. Softmax мешает нам это сделать. Авторы предлагают несколько подходов, которые позволяют получить нужные нам логиты приближенно. Один из них такой: возьмем самый вероятный токен R из продолжения для префикса. Затем добавим к нему и четырем токенам большой logit bias, вытянув их наверх. Теперь, вычитая из логвероятности R логвероятность этих токенов и logit bias, мы получим разницу между логитами, таким образом получив логиты с точностью до вычитания логита для R.
Исследователи показывают еще несколько подходов, которые позволяют делать то же самое более эффективно или с более строгими ограничениями, но суть везде сводится к манипуляции logit bias. В результате им удается восстановить размерности у моделей ada, babbadge и babbadge-002 (олды помнят) и вытащить для первых двух саму матрицу. Кроме того, они вытащили размерности для gpt-3.5-turbo, но рассказывать про них не стали по условиям responsible disclosure, лишь удостоверившись у OpenAI, что их вычисления верны.
Далее авторы предлагают некоторое количество вариантов защиты от их атаки: замену logit bias на черные списки, добавление шума, запрет одновременного использования logit bias и получения лог-вероятностей, добавление шума, рейт-лимитинг и так далее. Каждый из этих методов или делает атаку более сложной, или целиком ее предотвращает.
На мой взгляд, это одна из лучших статей на тему атак на большие языковые модели из разобранных на этом канале, да еще и демонстрирующая, зачем в последневной жизни нужна линейная алгебра 🤓
На мой взгляд, это одна из лучших статей на тему атак на большие языковые модели из разобранных на этом канале, да еще и демонстрирующая, зачем в последневной жизни нужна линейная алгебра 🤓
👍1🥴1
ShieldGemma: Generative AI Content Moderation Based on Gemma
ShieldGemma Team, Google LLC, 2024
Отчет, документация, модель
Хотя элайнмент – это здорово и полезно, самым эффективным методом защиты публичных чат-ботов от пользователей, требующих рецепты тротила, является модерация (цензурирование) входов и выходов. Мы уже читали про Llama Guard и упоминали Prompt Guard, входящие в Purple Llama, теперь посмотрим на вышедшее неделю назад семейство моделей ShieldGemma от Google. Релиз включает в себя три модели (2B, 9B и 27B параметров), основанные на соответствующего размера моделях Gemma-2, способные фильтровать данные по четырем категориям:
- сексуализированный контент
- опасный контент (как делать опасные вещества и совершать преступления)
- оскорбления и угрозы (harassment)
- разжигание ненависти (hate speech)
В статье упоминается, что всего в Google рассматривают шесть опасных категорий, но категории «насилие» и «нецензурная брань» при расчете метрик не применялись.
Обученный цензор должен не допустить а) ввода от пользователя, который запрашивает у модели генерацию контента, подпадающего под эти категории б) вывода моделью текста, относящегося к этим категориям.
ShieldGemma Team, Google LLC, 2024
Отчет, документация, модель
Хотя элайнмент – это здорово и полезно, самым эффективным методом защиты публичных чат-ботов от пользователей, требующих рецепты тротила, является модерация (цензурирование) входов и выходов. Мы уже читали про Llama Guard и упоминали Prompt Guard, входящие в Purple Llama, теперь посмотрим на вышедшее неделю назад семейство моделей ShieldGemma от Google. Релиз включает в себя три модели (2B, 9B и 27B параметров), основанные на соответствующего размера моделях Gemma-2, способные фильтровать данные по четырем категориям:
- сексуализированный контент
- опасный контент (как делать опасные вещества и совершать преступления)
- оскорбления и угрозы (harassment)
- разжигание ненависти (hate speech)
В статье упоминается, что всего в Google рассматривают шесть опасных категорий, но категории «насилие» и «нецензурная брань» при расчете метрик не применялись.
Обученный цензор должен не допустить а) ввода от пользователя, который запрашивает у модели генерацию контента, подпадающего под эти категории б) вывода моделью текста, относящегося к этим категориям.
arXiv.org
ShieldGemma: Generative AI Content Moderation Based on Gemma
We present ShieldGemma, a comprehensive suite of LLM-based safety content moderation models built upon Gemma2. These models provide robust, state-of-the-art predictions of safety risks across key...
👍2
Для обучения модели используется синтетический датасет размером в 50 тысяч запросов и 50 тысяч пар (запрос, ответ), который генерируют с помощью Gemini. К этому добавляется по 5к запросов и пар (запрос, ответ), сгенерированных на основе примеров с просьбой к LLM-генератору написать запрос, который или увеличивает разнообразие датасета, или сложность задачи. Поверх в датасет засыпают кусок из датасета hh-rlhf от Antropic для разнообразия. Затем исследователи, видимо, понимают, что качество всего этого получилось не лучшим, и решают разметить это вручную, пропустив через трех аннотаторов. Но, видимо, оценить все не хватает то ли денег, то ли времени, то ли хватает совести, и они делают из 15 тысяч примеров (половина – запросы, половина – пары с запросом и ответом), используя нехитрый алгоритм с кластеризацией бертовых эмбеддингов для максимального разнообразия. Данные делятся на обучающие и тестовые в пропорции 10500 к 4500. Затем к ним применяется еще один шаг увеличения разнообразия в виде добавления примеров, где заменены на дополнительные гендерные, этнические, религиозные и прочие атрибуты.
На всем этом богатстве файнтюнят (SFT) модели из семейства Gemma-2 в трех размерах. Для каждого из видов запрещенного контента в запрос помещают соответствующий отрывок из политики. Интересно, что в промпте зачем-то используется chain-of-thought промптинг (And then walk through step by step to be sure we answer correctly), но, видимо, для простоты и быстроты использования вердикт модель выдает до рассуждений.
На всем этом богатстве файнтюнят (SFT) модели из семейства Gemma-2 в трех размерах. Для каждого из видов запрещенного контента в запрос помещают соответствующий отрывок из политики. Интересно, что в промпте зачем-то используется chain-of-thought промптинг (And then walk through step by step to be sure we answer correctly), но, видимо, для простоты и быстроты использования вердикт модель выдает до рассуждений.
Результаты оценивают на тестовой части датасета, а также на популярных датасетах OpenAI Moderation и ToxicChat, сравнивая с другими моделями (OpenAI Moderation API, LlamaGuard двух версий, WildGuard и GPT-4) на бинарной задаче предсказания. Разумеется, ShieldGemma всех побеждает, но что любопытно – разница между моделями разного размера очень незначительная – разницы после SFT между моделями на 2 и 27 миллиарда параметров почти нет, видимо, 2 миллиардов параметров достаточно, чтобы выучить из датасета все, что можно. При этом в целом метрики не сильно впечатляющие, но сами цифры, без возможности посмотреть неопубликованный датасет значат мало.
Исследователи также оценивают свои модели и на задаче гранулярного предсказания типа вредоносного контента (нужно заметить, что, следуя примеру из LlamaGuard, они делают это в формате one-vs-all, т.е. для каждой категории используют отдельный прогон с отдельным промптом). Специализированная модель обгоняет zero-shot GPT-4 (вот бы они ее или хотя бы gpt-3.5-turbo на этом датасете пофайнтюнили), причем разница между моделями разного размера снова весьма невелика.
Исследователи также оценивают свои модели и на задаче гранулярного предсказания типа вредоносного контента (нужно заметить, что, следуя примеру из LlamaGuard, они делают это в формате one-vs-all, т.е. для каждой категории используют отдельный прогон с отдельным промптом). Специализированная модель обгоняет zero-shot GPT-4 (вот бы они ее или хотя бы gpt-3.5-turbo на этом датасете пофайнтюнили), причем разница между моделями разного размера снова весьма невелика.
Инструменты для модерации очень важны. Есть разные мнения о том, стоит ли элайнментом ограничивать возможности моделей, особенно открытых, генерировать те или иные виды контента, особенно если это влечет за собой снижение полезности (попробуйте поприменяйте llama в задачах кибербезопасности, не получая постоянно отказ на самые тривиальные запросы) и решается джейлбрейками или обратным тюнингом. Но если вы предоставляете коммерческий сервис, в котором пользователи напрямую контактируют с LLM, защита от вредоносных генераций необходима (оператор чат-бота за чей-нибудь фурри-ролплей платить не обязан), и цензор – лучший способ такую защиту реализовать. Не зря стартапы, обещающие защиту ваших LLM, плодятся с невиданной скоростью (Lakera, HiddenLayer, Lasso, ProtectAI, Robust Intelilgence – это только те, которые сходу в голову приходят). Существующие инструменты пока не поражают качеством, а также поддержкой разных языков и категорий, но, вероятно, это вопрос времени, поэтому каждое такое исследование – это шаг в правильном направлении.