
Код, журналы ответов и метки для статьи Jailbreaking Open-Weight LLMs via Random Embedding Perturbations
Код и данные для статьи Jailbreaking Open-Weight LLMs via Random Embedding Perturbations.
Ссылка на препринт статьи — https://arxiv.org/abs/2610.07125
Авторы — замечательные люди из Департамента теоретической информатики Калифорнийского университета в Санта-Крузе.
Значительный вклад в эту работу внесли Скотт Сирри, проф. Ваггос Хатзиафратис, проф. К. Сешадри и я.
Репозиторий содержит все ответы моделей, сгенерированные для статьи, метку safe / unsafe /
degenerate для каждого ответа, блокноты Colab, которые их создали, и скрипты инференса,
которые импортируют блокноты. Это охватывает атаку Perturbed Embedding Vector (PEV) и
пять других методов взлома, сравниваемых в статье. Все показатели взлома и время выполнения в
статье вычисляются из файлов в results/.
code/
inference/ run_<model>.py: model loading, prompt construction and the manual
generation loop that every PEV notebook imports
ours/<model>/ PEV notebooks for one model
ours/<model>/fixed_peak_sigma/
notebooks for the fixed peak sigma runs (GLM-4-9B, Phi-4-mini,
Qwen2.5-1.5B); their logs are in results/<model>/ours/fixed_peak_sigma/
igcg/ I-GCG, one notebook per model
latentfusion/ LatentFusion, one notebook per model
refusalcones/ RefusalCones, one notebook per model
softprompt/ SoftPrompt notebooks (Llama-3.1-8B and Mistral-7B)
figures/ notebook that draws the paper figures
results/<model>/
baseline/ direct responses to the unperturbed prompts (.txt log) and their
labels (.xlsx / .csv); these give the baseline jailbreak rate
ours/raw_responses/ PEV response logs from the sigma sweeps, split by prompt range
ours/classified/ labels for those responses, split the same way
ours/fixed_peak_sigma/ PEV runs at the fixed peak sigma of the model (GLM-4-9B, Phi-4-mini,
Qwen2.5-1.5B): the full 100-prompt sweep and the SELECT re-runs
igcg/ latentfusion/ neurostrike/ refusalcones/ softprompt/
responses (.txt) and labels (.xlsx) for the other methods
Модели: Qwen2.5-1.5B, SmolLM3-3B, Phi-4-mini, Mistral-7B-Instruct, Llama-3.1-8B,
GLM-4-9B — варианты чата, настроенные на инструкции, указанные в разделе 4 статьи.
Где находится код каждого метода:
| Метод | Расположение |
|---|---|
| PEV | code/ours/<model>/; запуски с фиксированной пиковой сигмой в 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 запусками при этой сигме. Файлы
SELECT_..._nNN — это дополнительные запуски при той же сигме на промптах, перечисленных в
имени файла, с NN запусками на промпт.HIGHSIGMA, — это запуски при большей сигме, обсуждаемые в разделе 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 запрашивается
интерактивно и не хранится в этом репозитории. Ноутбуки для других методов следуют
той же схеме с подстановкой соответствующей атаки.
Доли успешных джейлбрейков из статьи можно пересчитать только по файлам меток, без запуска какой-либо модели.