TH ▾
รับคีย์ API

โมเดลที่ผ่านการ 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

ทั้งสองวิธีสามารถผลิตโมเดลที่ปฏิเสธได้น้อยลง แต่ทำงานแตกต่างกัน

AbliterationFine-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 นั่นคือการตั้งค่าทั้งหมด