HN เผยแพร่: งานวิจัยด้านความสามารถในการตีความของ Llama 3.2 โดยใช้ Sparse Autoencoders
(github.com/PaulPauls)ภาพรวมโครงการ
- โมเดลภาษาขนาดใหญ่ (LLM) สมัยใหม่เข้ารหัสแนวคิดโดยซ้อนทับคุณลักษณะหลายอย่างไว้ในนิวรอนเดียวกัน และทำให้การกระตุ้นของนิวรอนแต่ละตัวมีความหมายที่ตีความได้หลายแบบขึ้นอยู่กับการกระตุ้นของนิวรอนอื่น ๆ สิ่งนี้เรียกว่า superposition
- Sparse Autoencoders (SAE) ถูกแทรกเข้าไปใน LLM ที่ผ่านการฝึกแล้ว เพื่อฉายค่าการกระตุ้นไปยัง latent space แบบเบาบางที่มีขนาดใหญ่มาก แยกการแทนค่าที่ซ้อนทับกันออก และแปลงให้เป็นคุณลักษณะที่ตีความได้
- โครงการนี้มีเป้าหมายเพื่อทำซ้ำงานวิจัยที่ Anthropic, OpenAI และ Google DeepMind เคยทำสำเร็จ เพื่อดึงคุณลักษณะที่ตีความได้ออกมา
- ให้ทั้งพายป์ไลน์สำหรับสร้าง Sparse Autoencoder ที่ใช้งานได้จริงและตีความได้สำหรับโมเดล Llama 3.2-3B
ความสามารถหลัก
- มีพายป์ไลน์แบบ end-to-end ครบถ้วน ตั้งแต่การจับค่าการกระตุ้นที่เขียนด้วย PyTorch ไปจนถึงการฝึก SAE การตีความคุณลักษณะ และการตรวจสอบความถูกต้อง
- จับ residual activations จากโมเดลภาษาขนาดใหญ่เพื่อนำมาใช้เป็นชุดข้อมูลสำหรับฝึก SAE
- รองรับการเตรียมข้อมูลฝึกอย่างมีประสิทธิภาพ และการฝึกแบบกระจายขนาดใหญ่โดยใช้หลาย GPU
- ใช้ auxiliary loss ระหว่างการฝึก SAE เพื่อป้องกัน latent variables ที่ตายและทำให้พลวัตของการฝึกมีเสถียรภาพ
- มีการบันทึกล็อก การทำภาพข้อมูล และเช็กพอยต์ของการฝึก SAE อย่างครอบคลุมผ่าน Weights & Biases
- รองรับการวิเคราะห์ความหมายของคุณลักษณะที่เรียนรู้แล้วผ่านเครื่องมือวิเคราะห์ด้านความสามารถในการตีความ
- มี implementation ของ Llama 3.1/3.2 แบบ PyTorch ล้วน เพื่อให้ใช้งานทั่วไปและตรวจสอบผลลัพธ์ได้โดยไม่ต้องพึ่งพา dependency ภายนอก
- ตรวจสอบผลกระทบของ SAE ต่อพฤติกรรมของโมเดลผ่านงาน text completion และ chat completion และสามารถปรับแต่งคุณลักษณะเชิงความหมายที่ดึงออกมาได้
ทรัพยากรที่เผยแพร่
-
ชุดข้อมูลประโยค OpenWebText:
- เวอร์ชันปรับแต่งเองของชุดข้อมูล OpenWebText ที่ใช้สำหรับการจับค่าการกระตุ้น
- เก็บข้อความต้นฉบับไว้ และบันทึกแต่ละประโยคเป็นรูปแบบ Parquet เพื่อการเข้าถึงที่รวดเร็ว
- ใช้ตัวตัดประโยค "Punkt" ของ NLTK 3.9.1 สำหรับการแบ่งประโยค
-
ค่าการกระตุ้นของ Llama 3.2-3B ที่จับไว้แล้ว:
- residual activations ของเลเยอร์ที่ 23 ของ Llama 3.2-3B จำนวน 25 ล้านประโยค
- บีบอัดข้อมูลดิบขนาด 4TB ให้เหลือ 3.2TB และแบ่งเป็น 100 archive
-
บันทึกล็อกการฝึก SAE:
- ล็อกภาพข้อมูลของเมตริกสำหรับการฝึก การตรวจสอบความถูกต้อง และการดีบักผ่าน Weights & Biases
- รวม 10 epoch และ 10,000 ขั้นตอนที่มีการบันทึกล็อก
-
โมเดล SAE latent 65,536 ที่ฝึกแล้ว:
- โมเดล SAE เวอร์ชันสุดท้ายที่ฝึกเสร็จหลัง 10 epoch
โครงสร้างโครงการ
1. การจับข้อมูล
capture_activations.py: จับ residual activations ของ LLMopenwebtext_sentences_dataset.py: ชุดข้อมูลปรับแต่งเองสำหรับประมวลผลระดับประโยค
2. การฝึก SAE
sae.py: implementation หลักของโมเดล SAEsae_preprocessing.py: การเตรียมข้อมูลสำหรับการฝึก SAEsae_training.py: implementation สำหรับการฝึก SAE แบบกระจาย
3. ความสามารถในการตีความ
capture_top_activating_sentences.py: ระบุประโยคที่ทำให้คุณลักษณะถูกกระตุ้นสูงสุดinterpret_top_sentences_send_batches.py: สร้างและส่ง batch สำหรับการตีความinterpret_top_sentences_retrieve_batches.py: ดึงผลลัพธ์การตีความinterpret_top_sentences_parse_responses.py: วิเคราะห์ผลลัพธ์การตีความ
4. การตรวจสอบและการทดสอบ
llama_3_inference.py: implementation หลักของการอนุมานllama_3_inference_text_completion_test.py: การทดสอบ text completionllama_3_inference_chat_completion_test.py: การทดสอบ chat completionllama_3_inference_text_completion_gradio.py: อินเทอร์เฟซ Gradio สำหรับการทดสอบแบบโต้ตอบ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ความสามารถในการตีความเชิงกลไกของ LLMs แก้ปัญหาที่โมเดลสร้างคำตอบที่ฟังน่าเชื่อถือเมื่ออธิบายตัวเองได้ ยิ่งโมเดลมีพลังมากเท่าไร ก็ยิ่งน่าเชื่อถือในการหาเหตุผลมารองรับ "คำโกหก" ได้มากขึ้น และอาจได้คะแนนต่ำกว่าในการทดสอบการตรวจจับตัวเอง เป้าหมายคือความสอดคล้อง ไม่ใช่ความจริง
ในงานวิจัยเกี่ยวกับ Sparse Autoencoders (SAEs) มีการสังเกตว่าขอบล่างของเส้นโค้ง loss ขยายตัวตามกฎกำลัง และสามารถแก้ปัญหา latent variables ที่ตายไปแล้วได้อย่างสมบูรณ์ด้วย auxiliary loss พร้อมทั้งสังเกตเห็นรูปแบบคลื่นไซน์ที่ราบรื่นระหว่างรอบการฝึก
มีการตั้งคำถามเกี่ยวกับความสามารถในการตีความเชิงกลไก: กังวลว่า AI ในอนาคตอาจกำกับการฝึกของตัวเองและใช้ความกำกวมเพื่อสร้างโมเดลที่หลอกผู้สังเกตการณ์ด้านการตีความเชิงกลไกได้
หลังจากอ่านบล็อกโพสต์เกี่ยวกับความยากในการประเมิน SAEs แล้ว ก็สงสัยว่าปัญหานี้ถูกแก้อย่างไร และอยากหาในรีโพซิทอรีว่ามีส่วนไหนที่ช่วยให้เข้าใจแนวทางนี้ได้บ้าง
คิดว่างานนี้อาจส่งผลเชิงบวกต่อ alignment แต่ยังไม่ได้ตรวจสอบรายละเอียด และสงสัยว่าต้องจ่ายเท่าไรจึงจะคุ้มกับเวลา ต้นทุน และความเสี่ยง
ขอบคุณที่ทุ่มเวลาไปกับการทำเอกสารอย่างมาก
เป็นงานที่เจ๋งมาก และสงสัยว่ามีแผนจะรวมเข้ากับ SAELens หรือไม่