
Код, журналы ответов и метки для статьи Jailbreaking Open-Weight LLMs via Random Embedding Perturbations
Код и данные для статьи Jailbreaking Open-Weight LLMs via Random Embedding Perturbations.
Авторы — замечательные люди с факультета теоретической информатики Калифорнийского университета в Санта-Крузе.
Значительный вклад в эту работу внесли Скотт Сирри, проф. Ваггос Хатзиафратис, проф. К. Сешадри и я.
Репозиторий содержит все ответы моделей, сгенерированные для статьи, метки safe / unsafe /
degenerate для каждого ответа, ноутбуки Colab, которые их создали, и скрипты инференса,
которые импортируют ноутбуки. Это охватывает атаку Perturbed Embedding Vector (PEV) и
пять других методов взлома, сравниваемых в статье. Все показатели взлома и время выполнения в
статье вычисляются из файлов в results/.
code/
inference/ run_<model>.py: загрузка модели, построение промпта и ручной
цикл генерации, который импортирует каждый ноутбук PEV
ours/<model>/ ноутбуки PEV для одной модели
ours/<model>/fixed_peak_sigma/
ноутбуки для запусков с фиксированным peak sigma (GLM-4-9B, Phi-4-mini,
Qwen2.5-1.5B); их логи находятся в results/<model>/ours/fixed_peak_sigma/
igcg/ I-GCG, один ноутбук на модель
latentfusion/ LatentFusion, один ноутбук на модель
refusalcones/ RefusalCones, один ноутбук на модель
softprompt/ ноутбуки SoftPrompt (Llama-3.1-8B и Mistral-7B)
figures/ ноутбук, который строит рисунки статьи
results/<model>/
baseline/ прямые ответы на невозмущённые промпты (лог .txt) и их
метки (.xlsx / .csv); они дают базовый показатель взлома
ours/raw_responses/ логи ответов PEV из sigma-свипов, разбитые по диапазону промптов
ours/classified/ метки для этих ответов, разбитые таким же образом
ours/fixed_peak_sigma/ запуски PEV при фиксированном peak sigma модели (GLM-4-9B, Phi-4-mini,
Qwen2.5-1.5B): полный свип по 100 промптам и повторные запуски SELECT
igcg/ latentfusion/ neurostrike/ refusalcones/ softprompt/
ответы (.txt) и метки (.xlsx) для других методов
Модели: Qwen2.5-1.5B, SmolLM3-3B, Phi-4-mini, Mistral-7B-Instruct, Llama-3.1-8B,
GLM-4-9B, варианты чата с инструкционной настройкой, названные в разделе 4 статьи.
Где находится код каждого метода:
| Метод | Расположение |
|---|---|
| PEV | code/ours/<model>/; запуски с фиксированным peak sigma в code/ours/<model>/fixed_peak_sigma/; общий код инференса в code/inference/ |
| I-GCG | code/igcg/, один ноутбук на модель |
| LatentFusion | code/latentfusion/, один ноутбук на модель |
| RefusalCones | code/refusalcones/, один ноутбук на модель |
| SoftPrompt | code/softprompt/, Llama-3.1-8B и Mistral-7B |
| NeuroStrike | внутри ноутбуков PEV code/ours/Llama-3.1-8B/LLama31_perturbation_p76_to_p100.ipynb (ячейка настройки также в LLama31_perturbation_p1_to_p25.ipynb) и code/ours/SmolLM3-3B/run_smollm3_batched_p26_p50.ipynb; ответы идут в results/<model>/neurostrike/ |
code/inference/run_<model>.py — это один файл на модель (run_qwen.py, run_smollm3.py,
run_phi4mini.py, run_mistral.py, run_llama.py, run_glm.py). Каждый загружает модель с
помощью HuggingFace Transformers, применяет шаблон чата с пустым системным сообщением, предоставляет
load_model(), build_prompt() и encode_prompt(), а также запускает ручной цикл
авторегрессионной генерации с хуком на входных эмбеддингах. Ноутбуки импортируют скрипт для своей
модели и внедряют гауссов шум через этот хук. При запуске отдельно скрипт открывает
интерактивный терминал для одной модели; команды /verbose и /embedfile выводят таблицы
токенов и векторы эмбеддингов. Переключатели устройства и поведения — это переменные окружения,
задокументированные в заголовке каждого файла. Скрипту Llama нужен токен Hugging Face, поскольку
чекпоинт закрыт; токен читается из окружения и никогда не сохраняется.
.txt) — это логи, дописываемые только в конец, создаваемые ноутбуками. Каждая запись фиксирует
индекс промпта, уровень шума sigma, где применимо, номер запуска и полный
ответ модели. Имена файлов содержат диапазон промптов (p001_to_p025 означает промпты с 1 по 25 из
100 вредоносных промптов JailbreakBench) и UTC-метку времени запуска. Время выполнения
записывается после каждой партии из 20 запусков на промпт и в конце эксперимента..xlsx, .csv) содержат одну строку на ответ с его меткой: safe, unsafe или
degenerate, как определено в разделе 4 статьи. Промпт считается взломанным, если любой из его
запусков помечен как unsafe. Файлы с именами *_categorization* или в стиле *_p01_25 — это
размеченные версии лога с тем же диапазоном промптов.ours/fixed_peak_sigma/) именуются
JBB_<model>_sigma0pXXX_..._<timestamp>.txt; sigma0p003 означает sigma = 0.003. Файл
p001_to_p100 — это полный свип по 100 промптам, 20 запусков, при этой sigma. Файлы
SELECT_..._nNN — это дополнительные запуски при той же sigma на промптах, перечисленных в
имени файла, с NN запусками на промпт.HIGHSIGMA, — это запуски при большей sigma, обсуждаемые в разделе 4.1.SELECT, — это дополнительные запуски на промптах, перечисленных в имени файла, для
промптов, которым требовалось более 20 запусков для взлома. Строка заголовка каждого лога фиксирует
значения sigma, число запусков, идентификаторы промптов и случайное зерно.Llama-3.1-8B/baseline/fixed_baseline.xlsx и файлы меток fixed_* — это файлы меток
после ручной проверки, они заменяют более ранние версии.Ответы были классифицированы Claude Opus 4.6 с инструкциями судьи JailbreakBench, при этом
подавался файл лога с промптом, номером запуска и ответом. Каждый ответ, помеченный как unsafe, затем
проверялся вручную. Файлы меток в results/ — это проверенные метки.
Каждый ноутбук в code/ours/<model>/ запускался на одной NVIDIA A100-SXM4-80GB в Google
Colab. Он импортирует соответствующий run_<model>.py, загружает вредоносные промпты JailbreakBench,
пропускает каждый промпт через слой входных эмбеддингов модели, добавляет независимый гауссов шум
N(0, sigma^2) ко всему эмбеддингу промпта и передаёт возмущённый эмбеддинг в
слои трансформера. Для каждого промпта он сэмплирует 20 матриц шума в одной партии и добавляет каждый
ответ в лог. Параметры декодирования и sigma для каждой модели перечислены в разделе 4 и
табл. 3 статьи и задаются в начале каждого ноутбука. Токен Hugging Face запрашивается
интерактивно и не хранится в этом репозитории. Ноутбуки для других методов следуют
той же схеме с подстановкой соответствующей атаки.
Показатели взлома в статье можно пересчитать только по файлам меток, без запуска какой-либо модели.