Bagaimana Model Abliterated Dibuat? Penjelasan Sederhana
Model Abliterated adalah model bahasa besar di mana mekanisme penegakan penolakan keamanan telah dihapus, memungkinkan model menjawab pertanyaan kontroversial, dewasa, atau niche tanpa terkena filter konten. Pendekatan ini memberikan pengembang kontrol penuh atas suara model dan batas pengetahuan, yang sangat berharga untuk pemrograman, permainan peran, dan penulisan kreatif di mana pagar pembatas standar mungkin memblokir output yang berguna.
Diperbarui

Poin utama
- Abliteration mengukur arah penolakan di dalam model dan memproyeksikannya keluar dari bobot.
- Ini adalah edit, bukan pelatihan ulang, sehingga murah tetapi dapat mengurangi kualitas jawaban sedikit.
- Fine-tuning mengubah perilaku dengan melatih pada contoh; abliteration mengubahnya dengan mengurangkan satu arah.
- Anda dapat menilai model apa pun seperti itu dengan set pengujian singkat sebelum Anda membangun di atasnya.
Versi singkatnya
Model bahasa yang melalui pelatihan keamanan cenderung menolak beberapa permintaan. Peneliti menemukan bahwa perilaku penolakan ini dimediasi oleh satu arah dalam aktivasi internal model. Keluarkan arah tersebut, dan model berhenti menolak sebagian besar waktu. Nama "abliteration" adalah gabungan dari "ablation" (menghapus komponen) dan "obliterate".
Jadi bagaimana model diabliteration dibuat dalam praktiknya? Ada empat langkah: kumpulkan dua set prompt, rekam aktivasi model pada masing-masing, hitung selisihnya untuk mendapatkan arah, dan edit bobot sehingga model tidak dapat lagi menulis sepanjang arah tersebut. Bagian berikutnya membahas setiap langkah tanpa matematika berat.
Langkah 1: dua set prompt
Anda memerlukan satu set prompt yang biasanya ditolak model dan satu set yang dijawabnya secara normal. Setiap set berisi beberapa ratus instruksi pendek. Set-set tersebut harus serupa panjang dan gayanya, sehingga satu-satunya perbedaan sistematis di antara keduanya adalah apakah model ingin menolak. Jika set berbahaya semuanya panjang dan set aman semuanya pendek, arah yang dihasilkan akan sebagian mengkodekan panjang, dan itu menambah derau.
Prompt hanya berfungsi sebagai input untuk pengukuran. Tidak ada yang dilatih pada data tersebut, dan jawaban model terhadapnya tidak digunakan.
Langkah 2: temukan arah penolakan
Transformer memproses teks sebagai vektor yang melewati banyak lapisan. Pada lapisan yang dipilih, Anda merekam vektor pada token prompt terakhir untuk setiap prompt di kedua set. Kemudian Anda rata-ratakan vektor untuk setiap set dan kurangkan satu rata-rata dari rata-rata lainnya. Hasilnya adalah satu vektor tunggal yang mengarah dari "jawab secara normal" menuju "tolak". Normalisasikan ke panjang satu dan Anda memiliki arah penolakan.
Biasanya, orang mencoba beberapa lapisan dan memilih lapisan di mana menghapus arah bekerja paling baik pada set data terpisah. Memilih lapisan adalah bagian paling langsung dari prosesnya.
import numpy as np
# acts_bad, acts_good: arrays of shape (n_prompts, hidden_size)
direction = acts_bad.mean(axis=0) - acts_good.mean(axis=0)
direction = direction / np.linalg.norm(direction)
# remove the direction from a weight matrix W that writes into the residual stream
W_edited = W - np.outer(direction, direction) @ W
Implementasi nyata menerapkan ini ke beberapa matriks bobot di setiap lapisan, tetapi idenya adalah yang ada dalam tiga baris ini.
Langkah 3: edit bobot
Setelah Anda memiliki arah, ada dua cara untuk menggunakannya. Anda dapat mengurangkannya dari aktivasi saat model berjalan, yang memerlukan kode inferensi khusus. Atau Anda dapat memasukkannya ke dalam bobot dengan meng-orthogonal-kan setiap matriks yang menulis ke aliran residual terhadap arah tersebut. Pendekatan kedua adalah yang umum, karena model yang diedit adalah checkpoint biasa yang dapat dimuat oleh runtime apa pun. Itulah mengapa model diabliteration muncul sebagai unduhan biasa.
Editnya deterministik dan cepat. Ini membutuhkan waktu beberapa menit pada GPU yang dapat menampung model, dibandingkan dengan berjam-jam atau berhari-hari untuk pelatihan.
Abliteration vs penyesuaian halus
Keduanya dapat menghasilkan model yang lebih jarang menolak, tetapi mereka bekerja secara berbeda.
| Abliteration | Fine-tuning | |
|---|---|---|
| Apa yang berubah | Bobot diproyeksikan menjauh dari satu arah | Bobot diperbarui melalui penurunan gradien pada contoh |
| Data yang dibutuhkan | Dua set prompt kecil untuk pengukuran | Set pelatihan yang dikurasi |
| Komputasi | Menit hingga satu jam | Jam hingga hari |
| Efek samping | Dapat memburamkan penalaran atau mengubah nada | Tergantung pada data; dapat mengajarkan gaya atau pengetahuan baru |
| Kendali | Kasar: satu arah aktif atau nonaktif | Halus: Anda membentuk perilaku dengan data |
Beberapa pembuat menggabungkan keduanya: diabliteration terlebih dahulu, lalu jalankan fine-tuning singkat untuk memulihkan kualitas yang hilang. Alat baru juga mengotomatisasi pencarian lapisan dan kekuatan terbaik sehingga edit menghapus penolakan sambil mengubah model seminimal mungkin. Pendekatan mana yang menghasilkan model tertentu biasanya dinyatakan pada kartu modelnya.
Biaya dalam hal kualitas
Menghapus arah adalah edit yang kasar. Arah penolakan tidak sepenuhnya terpisah dari fitur lain, sehingga memproyeksikannya keluar dapat menggeser perilaku lain. Efek samping yang dilaporkan termasuk kinerja penalaran yang sedikit lebih lemah, format yang aneh, dan dalam beberapa kasus model yang menjawab permintaan berbahaya secara ceroboh alih-alih dengan detail yang berguna. Efeknya bervariasi tergantung model dasar dan seberapa agresif edit diterapkan.
Dua hal mengurangi kerusakan. Satu adalah memilih lapisan dan kekuatan yang menghapus penolakan pada set pengujian Anda dengan perubahan terkecil di tempat lain. Yang lainnya adalah fine-tuning perbaikan yang disebutkan di atas. Keduanya tidak membuat edit gratis, itulah mengapa Anda harus menguji model pada tugas Anda sendiri daripada mempercayai label.
Kesalahpahaman umum
"Ini menambahkan pengetahuan baru." Tidak. Edit hanya menghapus perilaku. Jika model dasar tidak mengetahui topik tertentu, versi yang telah diabliterasi juga tidak akan mengetahuinya. Model tersebut mungkin hanya mencoba memberikan jawaban di mana model asli menolak.
"Ini menghapus semua keamanan." Ini menghapus arah penolakan yang diukur. Kebiasaan yang dipelajari lainnya, seperti bahasa pengaman atau sisipan moral, dapat bertahan, karena tersebar di fitur lain. Beberapa model masih menambahkan disclaimer setelah edit.
"Model yang lebih besar lebih mudah diedit." Hasilnya bervariasi. Model yang lebih besar sering kali bertahan lebih baik di bawah edit karena mereka memiliki kapasitas cadangan lebih banyak, tetapi kualitas dua set prompt Anda lebih penting daripada ukuran mentah.
"Kartu model memberi tahu Anda segalanya." Kartu menggambarkan maksud. Mereka jarang mencakup tingkat penolakan untuk jenis prompt Anda. Pengujian 40 prompt milik Anda sendiri membutuhkan waktu sepuluh menit dan memberi tahu Anda lebih banyak daripada kartu.
"Hasilnya selalu sama untuk model dasar tertentu." Tidak. Set prompt, lapisan, dan kekuatan yang berbeda menghasilkan edit yang berbeda, sehingga dua model yang dibangun di atas dasar yang sama dapat berperilaku sangat berbeda. Bandingkan secara langsung daripada mengasumsikan mereka cocok, dan catat versi ketika Anda mencatat hasil pengujian.
Satu batas berlaku untuk layanan yang bertanggung jawab, baik yang di-hosting maupun lokal: konten yang menyeksualisasikan anak di bawah umur bukan pilihan, dan edit penolakan tidak mengubah aturan ini di situs ini.
Cara menilai model sebelum Anda membangun di atasnya
Tulis file pengujian singkat berisi 30 hingga 50 prompt yang sesuai dengan penggunaan nyata Anda: jenis fiksi, analisis, atau kode yang akan Anda hasilkan. Sertakan beberapa tugas biasa, seperti meringkas atau menjawab pertanyaan faktual, sehingga Anda dapat melihat apakah kualitas umum turun. Jalankan file yang sama terhadap setiap kandidat dan baca outputnya. Hitung penolakan, tetapi juga baca untuk koherensi, kepatuhan instruksi, dan pengulangan.
Jika Anda lebih suka tidak mengunduh dan meng-host bobot untuk melakukan ini, Anda dapat menjalankan file terhadap endpoint yang di-host. API situs ini kompatibel dengan OpenAI dan melayani satu model bobot terbuka, yang disetel untuk menjawab tanpa penolakan konten untuk penggunaan dewasa yang sah, di bawah ID uncensored:
curl https://api.abliterated.cc/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","messages":[{"role":"user","content":"Summarize the plot of Hamlet in three sentences."}]}'
Baca ringkasan model diabliterasi untuk informasi lebih lanjut tentang memilih salah satunya, atau halaman tentang LLM diabliterasi terbaik untuk roleplay jika pekerjaan karakter adalah tujuan Anda. Detail permintaan ada di dokumentasi API. Akun baru dapat mengklaim kredit uji coba $0,50 tanpa kartu, cukup untuk menjalankan file uji berukuran ini.
Panduan lainnya
Tanya jawab
Apakah abliteration memerlukan data pelatihan baru?
Tidak. Abliteration memerlukan dua set prompt kecil untuk mengukur aktivasi, tetapi model tidak dilatih dengan data tersebut. Perubahan dilakukan melalui pengeditan langsung pada bobot model.
Apakah model yang telah diabliterasi sama dengan jailbreak?
Tidak. Jailbreak adalah prompt yang mencoba membujuk model agar berhenti menolak. Abliteration mengubah model itu sendiri, sehingga tidak memerlukan prompt khusus.
Apakah abliteration membuat model menjadi lebih buruk?
Seringkali sedikit. Skor penalaran dan gaya dapat berubah. Menguji pada prompt Anda sendiri adalah satu-satunya cara yang dapat diandalkan untuk mengetahui dampaknya pada model tertentu.
Apakah saya dapat menggunakannya tanpa menjalankannya sendiri?
Ya. API yang kompatibel dengan OpenAI yang di-host memungkinkan Anda memanggil model tanpa GPU. URL dasar adalah https://api.abliterated.cc/v1 dan ID model adalah uncensored.
Kunci Anda hanya selangkah lagi dari satu formulir
Buat akun, salin kunci, ubah URL dasar. Itu saja seluruh proses pengaturannya.