โมเดลที่ผ่านการ Abliteration สร้างขึ้นอย่างไร? คำอธิบายแบบตรงไปตรงมา
โมเดล Abliterated เป็นโมเดลภาษาขนาดใหญ่ที่กลไกการปฏิเสธความปลอดภัยถูกลบออก ทำให้โมเดลสามารถตอบคำถามที่อ่อนไหว ผู้ใหญ่ หรือเฉพาะทางได้โดยไม่ติดตัวกรองเนื้อหา วิธีนี้มอบการควบคุมเสียงและขอบเขตความรู้ของโมเดลให้กับนักพัฒนาอย่างเต็มที่ ซึ่งมีคุณค่าอย่างยิ่งสำหรับการเขียนโค้ด การแสดงบทบาทสมมติ และการเขียนสร้างสรรค์ที่มาตรฐานอาจบล็อกผลลัพธ์ที่มีประโยชน์
อัปเดต

ประเด็นสำคัญ
- Abliteration วัดทิศทางปฏิเสธภายในโมเดลและฉายมันออกนอกน้ำหนัก
- นี่คือการแก้ไข ไม่ใช่การฝึกใหม่ จึงมีต้นทุนต่ำแต่อาจลดคุณภาพคำตอบลงเล็กน้อย
- การปรับแต่งเฉพาะทาง (fine-tuning) เปลี่ยนพฤติกรรมโมเดลผ่านการฝึกจากตัวอย่าง ในขณะที่ abliteration เปลี่ยนพฤติกรรมโดยการลบทิศทางหนึ่งออก
- คุณสามารถทดสอบโมเดลลักษณะนี้ด้วยชุดพรอมต์สั้นๆ ก่อนนำไปใช้งานต่อ
สรุปสั้นๆ
โมเดลภาษาที่ผ่านการฝึกความปลอดภัยมักจะปฏิเสธคำขอบางรายการ นักวิจัยพบว่าพฤติกรรมการปฏิเสธนี้ถูกควบคุมโดยทิศทางเดียวในกิจกรรมภายในของโมเดล นำทิศทางนั้นออก แล้วโมเดลจะหยุดปฏิเสธเป็นส่วนใหญ่ ชื่อ "abliteration" เป็นการผสมระหว่าง "ablation" (การลบองค์ประกอบออก) และ "obliterate"
แล้วโมเดลที่ผ่านการ abliteration สร้างขึ้นในทางปฏิบัติอย่างไร? มีสี่ขั้นตอน: รวบรวมพรอมต์สองชุด บันทึก activation ของโมเดลในแต่ละชุด คำนวณความแตกต่างเพื่อหาทิศทาง และแก้ไขน้ำหนักเพื่อให้โมเดลไม่สามารถเขียนตามทิศทางนั้นได้อีกต่อไป ส่วนถัดไปจะอธิบายแต่ละขั้นตอนโดยไม่มีคณิตศาสตร์ที่ซับซ้อน
ขั้นตอนที่ 1: ชุดพรอมต์สองชุด
คุณต้องการชุดพรอมต์ที่โมเดลมักปฏิเสธ และชุดที่โมเดลตอบได้ตามปกติ แต่ละชุดควรมีคำสั่งสั้นๆ จำนวนหลายร้อยคำสั่ง ชุดข้อมูลควรมีความยาวและสไตล์คล้ายกัน เพื่อให้ความแตกต่างที่เป็นระบบระหว่างชุดข้อมูลมีเพียงเรื่องที่ว่าโมเดลต้องการปฏิเสธหรือไม่ หากชุดข้อมูลที่เป็นอันตรายมีความยาวทั้งหมด และชุดข้อมูลที่ไม่เป็นอันตรายมีความสั้นทั้งหมด ทิศทางที่ได้จะเข้ารหัสความยาวบางส่วน ซึ่งจะทำให้เกิดสัญญาณรบกวน
พรอมต์เหล่านี้ใช้สำหรับการวัดเท่านั้น ไม่มีอะไรถูกฝึกจากพรอมต์เหล่านี้ และคำตอบของโมเดลต่อพรอมต์เหล่านี้ไม่ได้ถูกนำไปใช้
ขั้นตอนที่ 2: หาทิศทางปฏิเสธ
Transformer ประมวลผลข้อความเป็นเวกเตอร์ที่ผ่านหลายชั้น ในชั้นที่เลือก คุณบันทึกเวกเตอร์ที่โทเคนพรอมต์สุดท้ายสำหรับพรอมต์ทุกตัวในทั้งสองชุด จากนั้นคุณหาค่าเฉลี่ยของเวกเตอร์สำหรับแต่ละชุดแล้วลบค่าเฉลี่ยหนึ่งออกจากอีกค่าเฉลี่ยหนึ่ง ผลลัพธ์คือเวกเตอร์เดียวที่ชี้จาก "ตอบตามปกติ" ไปยัง "ปฏิเสธ" ปรับให้มีความยาวเท่ากับหนึ่งแล้วคุณจะได้ทิศทางของการปฏิเสธ
ผู้คนมักลองหลายชั้นและเลือกชั้นที่การลบทิศทางนั้นทำงานได้ดีที่สุดบนชุดพรอมต์ที่เก็บไว้ การเลือกชั้นเป็นขั้นตอนที่ต้องลงมือทำมากที่สุดของกระบวนการ
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
การนำไปใช้จริงจะนำไปใช้กับเมทริกซ์น้ำหนักหลายเมทริกซ์ในแต่ละชั้น แต่แนวคิดคือสิ่งที่แสดงในสามบรรทัดนี้
ขั้นตอนที่ 3: แก้ไขน้ำหนัก
เมื่อคุณมีทิศทางแล้ว มีสองวิธีในการใช้งาน คุณสามารถลบมันออกจาก activation ขณะโมเดลทำงาน ซึ่งต้องใช้โค้ด inference แบบกำหนดเอง หรือคุณอาจรวมมันเข้าไปในน้ำหนักโดยการทำให้เมทริกซ์ทุกตัวที่เขียนเข้าสู่ residual stream ตั้งฉากกับทิศทาง วิธีหลังเป็นวิธีทั่วไป เพราะโมเดลที่แก้ไขแล้วเป็น checkpoint ธรรมดาที่ runtime ใดๆ ก็โหลดได้ นั่นคือเหตุผลที่โมเดล abliteration ปรากฏเป็นการดาวน์โหลดทั่วไป
การแก้ไขนี้เป็นแบบกำหนดและรวดเร็ว ใช้เวลาเพียงไม่กี่นาทีบน GPU ที่สามารถเก็บโมเดลได้ เมื่อเทียบกับเวลาหลายชั่วโมงหรือหลายวันสำหรับการฝึก
Abliteration เทียบกับการ fine-tune
ทั้งสองวิธีสามารถผลิตโมเดลที่ปฏิเสธได้น้อยลง แต่ทำงานแตกต่างกัน
| Abliteration | Fine-tuning | |
|---|---|---|
| สิ่งที่เปลี่ยนแปลง | น้ำหนักถูกฉายออกไปจากทิศทางหนึ่ง | น้ำหนักอัปเดตโดย gradient descent จากตัวอย่าง |
| ข้อมูลที่ต้องการ | ชุดพรอมต์ขนาดเล็กสองชุดสำหรับการวัด | ชุดข้อมูลการฝึกที่คัดสรรแล้ว |
| ทรัพยากรการคำนวณ | ไม่กี่นาทีถึงหนึ่งชั่วโมง | ชั่วโมงถึงวัน |
| ผลกระทบข้างเคียง | อาจทำให้การให้เหตุผลหยาบลงหรือเปลี่ยนน้ำเสียง | ขึ้นอยู่กับข้อมูล; สามารถสอนสไตล์หรือความรู้ใหม่ได้ |
| การควบคุม | หยาบ: ทิศทางเดียว เปิดหรือปิด | ละเอียด: คุณกำหนดพฤติกรรมด้วยข้อมูล |
ผู้สร้างบางคนรวมทั้งสองวิธี: ทำ abliteration ก่อน แล้วรัน fine-tune สั้นๆ เพื่อกู้คืนคุณภาพที่สูญเสียไป เครื่องมือใหม่ๆ ยังช่วยอัตโนมัติในการค้นหาชั้นและความแข็งแรงที่ดีที่สุด เพื่อให้การแก้ไขลบการปฏิเสธโดยเปลี่ยนแปลงโมเดลน้อยที่สุด ซึ่งแนวทางใดผลิตโมเดลเฉพาะนั้นมักระบุใน model card ของโมเดลนั้น
ต้นทุนด้านคุณภาพ
การลบทิศทางเป็นการแก้ไขแบบหยาบ ทิศทางการปฏิเสธไม่ได้แยกจากคุณลักษณะอื่นอย่างสมบูรณ์ ดังนั้นการฉายมันออกอาจทำให้พฤติกรรมอื่นเปลี่ยน ผลข้างเคียงที่รายงานรวมถึงประสิทธิภาพการให้เหตุผลที่อ่อนลงเล็กน้อย รูปแบบที่แปลกประหลาด และในบางกรณี โมเดลที่ตอบคำขอที่เป็นอันตรายอย่างไม่ระมัดระวังแทนที่จะให้รายละเอียดที่มีประโยชน์ ผลกระทบนี้แตกต่างกันไปตามโมเดลพื้นฐานและวิธีการประยุกต์ใช้การแก้ไข
สองสิ่งนี้ช่วยลดความเสียหาย การเลือกเลเยอร์และความแรงที่ลบการปฏิเสธในชุดทดสอบของคุณด้วยการเปลี่ยนแปลงในส่วนอื่นน้อยที่สุด และการปรับแต่งแบบละเอียดเพื่อซ่อมแซมที่กล่าวถึงข้างต้น สิ่งเหล่านี้ไม่ได้ทำให้การแก้ไขฟรี นั่นคือเหตุผลที่คุณควรทดสอบโมเดลกับงานของคุณเองแทนที่จะไว้วางใจป้ายกำกับ
ความเข้าใจผิดทั่วไป
"เพิ่มความรู้ใหม่" ไม่เพิ่ม การแก้ไขเพียงลบพฤติกรรมออก หากโมเดลพื้นฐานไม่รู้จักหัวข้อใด เวอร์ชันที่ผ่านกระบวนการ abliteration แล้วก็จะไม่รู้จักเช่นกัน มันอาจเพียงพยายามตอบคำถามที่ต้นฉบับปฏิเสธ
"ลบความปลอดภัยทั้งหมด" มันลบทิศทางปฏิเสธที่วัดได้ พฤติกรรมที่เรียนรู้แล้วอื่นๆ เช่น ภาษาการหลีกเลี่ยงหรือคำพูดเชิงศีลธรรมอาจคงอยู่ เพราะกระจายอยู่คุณลักษณะอื่น โมเดลบางตัวยังคงเพิ่มข้อความปฏิเสธความรับผิดหลังการแก้ไข
"โมเดลที่ใหญ่กว่าแก้ไขได้ง่ายกว่า" ผลลัพธ์มีความหลากหลาย โมเดลที่ใหญ่กว่ามักทนต่อการแก้ไขได้ดีกว่าเนื่องจากมีความจุสำรองมากกว่า แต่คุณภาพของชุดพรอมต์สองชุดของคุณสำคัญกว่าขนาดดิบ
"การ์ดโมเดลบอกคุณทุกอย่าง" การ์ดโมเดลอธิบายเจตนา โดยทั่วไปไม่รวมอัตราการปฏิเสธสำหรับพรอมต์ประเภทของคุณ การทดสอบด้วยพรอมต์ 40 รายการของคุณใช้เวลาสิบนาทีและบอกคุณมากกว่าการ์ด
"ผลลัพธ์เหมือนกันเสมอสำหรับโมเดลพื้นฐานที่กำหนด" ไม่ใช่ ชุดพรอมต์ เลเยอร์ และความแรงที่แตกต่างกันสร้างการแก้ไขที่แตกต่างกัน ดังนั้นโมเดลสองตัวที่สร้างจากพื้นฐานเดียวกันอาจมีพฤติกรรมแตกต่างกันมาก ให้เปรียบเทียบโดยตรงแทนที่จะสมมติว่าเหมือนกัน และบันทึกเวอร์ชันเมื่อคุณบันทึกผลการทดสอบ
ข้อจำกัดหนึ่งใช้กับบริการที่รับผิดชอบทุกแห่ง ทั้งแบบโฮสต์และแบบโลคัล: เนื้อหาที่แสดงออกถึงความเป็นเพศสัมพันธ์กับเด็กถูกตัดออก และการแก้ไขการปฏิเสธไม่ได้เปลี่ยนกฎนี้บนเว็บไซต์นี้
วิธีประเมินโมเดลก่อนนำไปใช้งาน
เขียนไฟล์ทดสอบสั้นๆ ที่มี 30 ถึง 50 พรอมต์ที่ตรงกับการใช้งานจริงของคุณ: ประเภทของนิยาย การวิเคราะห์ หรือโค้ดที่คุณวางแผนจะผลิต รวมงานทั่วไปบางรายการ เช่น การสรุปหรือตอบคำถามข้อเท็จจริง เพื่อให้คุณเห็นว่าคุณภาพทั่วไปลดลงหรือไม่ รันไฟล์เดียวกันกับแต่ละตัวเลือกแล้วอ่านผลลัพธ์ นับจำนวนการปฏิเสธ แต่ให้อ่านเพื่อความสอดคล้อง การปฏิบัติตามคำสั่ง และการทำซ้ำ
หากคุณไม่ต้องการดาวน์โหลดและโฮสต์น้ำหนักเพื่อทำสิ่งนี้ คุณสามารถรันไฟล์กับเอนด์พอยต์แบบโฮสต์ได้ API ของเว็บไซต์นี้เข้ากันได้กับ OpenAI และให้บริการโมเดลแบบเปิดน้ำหนักหนึ่งตัว ซึ่งปรับแต่งให้ตอบโดยไม่มีการปฏิเสธเนื้อหาสำหรับการใช้งานผู้ใหญ่ที่ถูกต้องตามกฎหมาย ภายใต้ 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."}]}'
อ่าน ภาพรวมของโมเดล abliteration เพื่อข้อมูลเพิ่มเติมในการเลือก หรือหน้า LLM abliteration ที่ดีที่สุดสำหรับการสวมบทบาท หากเป้าหมายของคุณคืองานตัวละคร รายละเอียดการร้องขออยู่ใน เอกสาร API บัญชีใหม่สามารถ ขอเครดิตทดลองใช้ $0.50 ได้โดยไม่ต้องใช้บัตร เพียงพอสำหรับรันไฟล์ทดสอบขนาดนี้
คู่มือเพิ่มเติม
ถาม-ตอบ
การลบการเซ็นเซอร์ต้องการข้อมูลการฝึกใหม่หรือไม่?
ไม่ ต้องการชุดพรอมต์ขนาดเล็กสองชุดเพื่อวัดการกระตุ้น แต่โมเดลไม่ได้ถูกฝึกบนชุดเหล่านั้น การเปลี่ยนแปลงคือการแก้ไขน้ำหนักโดยตรง
โมเดล abliteration เหมือนกับการ Jailbreak หรือไม่?
ไม่ Jailbreak คือพรอมต์ที่พยายามทำให้โมเดลหยุดปฏิเสธ การลบการเซ็นเซอร์เปลี่ยนตัวโมเดลเอง ดังนั้นจึงไม่ต้องการพรอมต์พิเศษ
การลบการเซ็นเซอร์ทำให้โมเดลแย่ลงหรือไม่?
มักจะแย่ลงเล็กน้อย คะแนนการให้เหตุผลและสไตล์อาจเปลี่ยนแปลง การทดสอบบนพรอมต์ของคุณเองเป็นวิธีที่เชื่อถือได้เพียงวิธีเดียวที่จะรู้สำหรับโมเดลเฉพาะ
สามารถใช้แบบไม่ต้องรันเองได้ไหม
ใช่ API ที่เข้ากันได้กับ OpenAI แบบโฮสต์ช่วยให้คุณเรียกใช้โมเดลได้โดยไม่ต้องใช้ GPU Base URL คือ https://api.abliterated.cc/v1 และ model ID คือ uncensored.
คีย์ของคุณอยู่ห่างแค่การกรอกแบบฟอร์มเดียว
สร้างบัญชี คัดลอกคีย์ และเปลี่ยน Base URL นั่นคือการตั้งค่าทั้งหมด