Model abliterated ialah model berpemberat terbuka yang biasa, tetapi tingkah laku penolakannya telah dibedah keluar dengan menyunting pemberatnya — bukan dengan melatihnya semula, dan bukan dengan membalutnya dalam prompt yang bijak. Namanya gabungan perkataan ablate (melenyapkan) dan obliterate (menghapuskan), dan ia menggambarkan mekanismenya dengan tepat: anda mengenal pasti satu arah dalam ruang pengaktifan yang membawa maksud "saya patut menolak ini", kemudian anda menjadikannya mustahil untuk rangkaian itu menulis arah tersebut lagi.
Teknik ini lahir daripada kerja kebolehtafsiran yang menunjukkan bahawa penolakan dalam transformer yang ditala untuk sembang dikawal sebahagian besarnya oleh satu arah linear. Dapatan itulah yang menjadikan keseluruhan proses ini murah. Jika penolakan tersebar merentasi beribu-ribu ciri yang saling berinteraksi, membuangnya memerlukan penurunan kecerunan (gradient descent). Oleh sebab ia tertumpu pada satu arah, membuangnya hanya memerlukan algebra linear.
Penolakan tinggal dalam aliran residual
Aliran residual (residual stream) sesebuah transformer ialah vektor berjalan, satu bagi setiap kedudukan token, yang dibaca dan ditulis semula oleh setiap blok. Kepala perhatian dan MLP menambah output mereka ke dalamnya; tiada apa-apa yang menulis gantinya. Kerana struktur aditif itu, sesuatu arah dalam aliran residual membawa makna yang lebih kurang sama pada lapisan 10 dan pada lapisan 40 — dan sifat inilah yang membolehkan kita bercakap tentang "arah penolakan" sebagai satu objek tunggal, bukannya empat puluh objek yang tidak berkaitan.
Untuk mencarinya, anda memerlukan dua set prompt: satu yang secara konsisten ditolak oleh model, satu lagi yang secara konsisten dijawab. Jalankan kedua-duanya, tangkap pengaktifan aliran residual pada lapisan dan kedudukan token yang tetap (beberapa token arahan terakhir sesuai, kerana pada ketika itu model sudah selesai membaca permintaan tetapi belum mula menjawab), dan ambil perbezaan min kedua-duanya.
import torch
def refusal_direction(harmful: torch.Tensor, harmless: torch.Tensor) -> torch.Tensor:
"""Difference-in-means estimate of the refusal direction, unit-normalised.
Both tensors are [n_prompts, d_model] residual-stream activations captured at
the same layer and token position. Difference-in-means beats a trained probe
here: with a few hundred prompts a probe overfits, a mean shift does not.
"""
r = harmful.mean(dim=0) - harmless.mean(dim=0)
return r / r.norm()Anda melakukannya pada setiap lapisan dan kedudukan calon, menghasilkan berpuluh-puluh arah calon, kemudian anda memilih satu. Pemilihan lebih penting daripada pengekstrakan: kriteria yang betul ialah lenyapkan calon ini, kemudian ukur berapa banyak penolakan berkurang pada prompt berbahaya yang diasingkan untuk ujian, dan berapa jauh taburan token seterusnya beralih pada prompt tidak berbahaya. Nombor kedua itu — biasanya capahan KL (KL divergence) berbanding model yang belum diubah — ialah meter kerosakan anda. Calon yang mematikan penolakan tetapi mengalihkan taburan tidak berbahaya dengan teruk adalah pilihan yang lebih buruk daripada calon yang mematikan sedikit kurang penolakan dengan hanya sebahagian kecil daripada kerosakan sampingan itu.
Bagaimana model abliterated dibina
Setelah anda mempunyai vektor unit r, ada dua cara untuk menggunakannya. Yang pertama ialah cangkuk (hook) semasa inferens: pada setiap lapisan, tolak komponen pengaktifan di sepanjang r sebelum menghantarnya ke lapisan seterusnya. Cara ini berfungsi, tetapi ia memerlukan cangkuk masa jalan, jadi model itu bukan lagi checkpoint biasa.
Cara kedua — abliteration yang sebenar — menanamkannya terus ke dalam pemberat. Setiap matriks yang menulis ke dalam aliran residual menerima kemas kini pangkat satu yang membuang r daripada ruang outputnya: matriks pembenaman, setiap unjuran output perhatian, setiap unjuran turun MLP.
def orthogonalize_(weight: torch.Tensor, r: torch.Tensor) -> None:
"""Project r out of a matrix that writes into the residual stream, in place.
weight is [d_model, d_in]. After W <- (I - r rT) W, the product W @ x has zero
component along r for every possible x, so no amount of prompting can put the
direction back. Rank-one per matrix; no gradients, no optimiser, no dataset of
answers — only the few hundred prompts used to estimate r.
"""
weight -= torch.outer(r, r @ weight)Hasilnya ialah checkpoint biasa. Seni bina yang sama, format fail yang sama, kos inferens yang sama, dan boleh dimuatkan dalam vLLM atau llama.cpp tanpa sebarang perubahan. Pada satu GPU, keseluruhan prosedur ini siap dalam beberapa minit, dan bahagian yang mahal ialah sapuan merentasi calon, bukan suntingannya.
Bezanya dengan penalaan halus
Penalaan halus (fine-tuning) untuk membuang penolakan — SFT atau DPO pada korpus respons yang patuh — ialah operasi yang berbeza secara asasnya. Ia menggerakkan setiap pemberat melalui penurunan kecerunan, ia memerlukan set data jawapan dan bukan sekadar prompt, ia menelan jam-jam GPU, dan ia mengajar tingkah laku baharu dan bukannya memadamkan tingkah laku sedia ada. Ia juga membawa bersama apa-apa gaya, bias panjang dan keanehan fakta yang ada dalam korpus penalaan halus itu, dan berisiko menyebabkan pelupaan katastrofik (catastrophic forgetting) terhadap keupayaan lain yang tidak berkaitan.
Abliteration hanya menyentuh satu subruang pangkat satu, tidak lebih daripada itu. Ketepatan itulah tarikan utamanya dan juga punca mod kegagalan utamanya: jika ada apa-apa selain penolakan yang kebetulan tinggal di sepanjang r, ia turut musnah, dan sebesar mana pun ketelitian dalam sapuan calon tidak dapat mengelakkannya sepenuhnya.
Bezanya dengan prompt jailbreak
Jailbreak langsung tidak menyentuh pemberat; sebaliknya ia mengemudi pengaktifan ke kawasan di mana litar penolakan tidak tercetus. Cara ini rapuh dalam hal-hal yang penting untuk automasi. Ia membazirkan token konteks pada setiap panggilan. Ia tidak deterministik — prompt yang sama boleh dipatuhi pada satu sampel dan ditolak pada sampel berikutnya. Ia rosak secara senyap apabila pembekal mengemas kini model atau menampal frasa khusus itu. Dan kerana jentera penolakan itu masih wujud sepenuhnya, ia boleh muncul semula di tengah-tengah penjanaan, memberikan anda tiga perenggan output yang berguna diikuti dengan "sebenarnya, saya tidak boleh meneruskan ini."
Model abliterated tidak mempunyai apa-apa untuk dimunculkan semula. Tingkah lakunya stabil sepanjang keseluruhan penjanaan dan merentasi pelbagai frasa prompt, dan sifat inilah yang menjadikannya boleh digunakan dalam pipeline kelompok.
Jujur tentang timbal baliknya
Model abliterated bukanlah model yang lebih baik. Ia model yang berhenti berkata tidak, dan itu dakwaan yang lebih sempit daripada yang kedengaran.
- Hanyutan keupayaan. Membuang satu arah daripada setiap matriks tulis mempunyai kos yang boleh diukur. Checkpoint abliterated lazimnya menunjukkan pematuhan arahan yang lebih lemah pada kes tepi, lebih banyak persetujuan terhadap premis palsu dalam prompt, dan kemerosotan kecil pada penanda aras penaakulan.
- Penolakan bukan satu dimensi sepenuhnya. Satu arah menangkap kebanyakan tingkah laku itu, bukan semuanya. Jangkakan sebahagian penolakan masih kekal, dan jangkakan kerosakan sampingan pada tingkah laku lain yang berkongsi arah yang sama.
- Tiada pengetahuan baharu. Abliteration tidak menambah apa-apa. Di mana model asas akan menolak kerana kejahilan yang disamarkan sebagai sikap berhati-hati, kini anda mendapat rekaan yang disampaikan dengan penuh yakin — dan bagi pipeline penilaian, ini boleh jadi lebih buruk daripada penolakan, kerana penolakan sekurang-kurangnya isyarat jujur yang boleh anda kesan.
- Set prompt menentukan suntingan. Set berbahaya yang sempit menghasilkan arah yang sempit. Dua abliteration terhadap model asas yang sama tidak boleh saling ditukar ganti.
Banyak model abliterated yang diterbitkan menjalani penalaan halus pembaikan yang ringan selepas itu untuk mendapatkan semula keupayaan yang merosot — yang secara senyap memperkenalkan semula kos yang sepatutnya dielakkan oleh teknik ini.
Di mana ia berguna
Kes penggunaan yang jujur ialah kerja yang mana penolakan merupakan ralat pengukuran dan bukannya kemenangan keselamatan: harness red-teaming, garis asas kadar penolakan, penilaian keteguhan, dan analisis keselamatan yang subjeknya mencetuskan pagar keselamatan (guardrail) walaupun tugasnya bersifat defensif. unbleep menyajikan model abliterated di sebalik endpoint yang serasi dengan OpenAI supaya anda boleh menghalakan klien sedia ada kepadanya dan mendapat garis asas yang stabil. Apa yang anda bina dengannya adalah tanggungjawab anda — lihat dasar penggunaan boleh terima untuk batas-batas yang tidak kami langkaui.
Dapatkan kunci API dan ukur sendiri perbezaannya.