מה זה Heretic מה עושה איך עושה ולמה זה עובד?
- shlomoyona

- Mar 29
- 4 min read
ארז מטולה כתב "מישהו בנה כלי שמוריד את כל מנגנוני הבטיחות מכל מודל AI. זה לוקח 45 דקות. זה בחינם. וזה יושב על GitHub לכל העולם." (הפוסט מקושר בסוף הפוסט שלי).
מה עושה Heretic, או לפחות מה מתיימר לעשות? זה עושה בדיוק מה ש-Erez Metula כתב בפוסט שלו שהפוסט שלי רוכב עליו. מסיר מנגנוני בטיחות ממודלים. הכלי מבוסס על פריצות דרך מוכחות מתחום שנקרא Mechanistic Interpretability ומתחום הנדסת ייצוגים. אסביר איך וגם למה זה עובד.
מודלי שפה מעבדים טקסט במרחב וקטורי רב-ממדי הנקרא Residual Stream. התנהגות הסירוב של המודל לבקשות מסוכנות מתווכת על ידי וקטור חד-ממדי ספציפי במרחב הזה. מה זה זרם השאריות? ערוץ התקשורת הראשי שעובר בין שכבות הרשת העצבית ומעביר את הייצוג המתמטי של הטוקנים.
נתון לנו מודל שפה שעבר יישור עם מטריצות משקלים W, אוסף קטן של פרומפטים מזיקים D_harmful, ואוסף קטן של פרומפטים תמימים D_harmless.
הנדרש: מציאת מערך משקלים מעודכן 'W שבו המודל יסרב לכמה שפחות בקשות, תוך פגיעה מינימלית ככל האפשר בהתנהגות המקורית שלו עבור פרומפטים תמימים, שנמדדת על ידי KL Divergence.
הנחת יסוד שיש לנו היא שצוואר הבקבוק להתנהגות הסירוב נמצא בכיוון ליניארי יחיד. החסרה גיאומטרית של כיוון זה ממשקלי המודל תעלים את היכולת שלו לייצג סירוב, מבלי לפגוע ביכולות אחרות שמיוצגות בכיוונים שמאונכים לו במרחב.
שלב א' הוא מציאת וקטור הסירוב.
מריצים את המודל על שני סוגי הפרומפטים. דוגמים את האקטיבציות בזרם השאריות במיקום הטוקן האחרון של כל פרומפט בשכבה מסוימת. מחשבים את וקטור הממוצע עבור הפרומפטים המזיקים μ ואת וקטור הממוצע עבור הפרומפטים התמימים ν. וקטור הסירוב הוא ההפרש ביניהם, ולאחר מכן מנרמלים אותו לוקטור יחידה
r̂: r = μ - ν r̂ = r / ||r||
פעולת החסרת הממוצעים מסננת החוצה את כל הייצוגים התחביריים והשפתיים הרגילים שמשותפים לשני סוגי הפרומפטים, ומבודדת רק את התכונה שנדלקת כאשר המודל מזהה סכנה ומחליט לסרב.
שלב ב' מחיקת יכולת הסירוב באמצעות אורתוגונליזציה של המשקלים.
עבור כל מטריצת משקלים W_out ברשת שייעודה הוא לכתוב נתונים בחזרה לזרם השאריות, מחשבים את ההיטל שלה על כיוון הסירוב, ומחסרים את ההיטל הזה, כשהוא מוכפל במקדם עוצמת התערבות α, מהמטריצה המקורית
W'_out = W_out - α(r̂r̂ᵀ W_out)
הפעולה הזו הופכת את מטריצת המשקלים לאורתוגונלית לכיוון הסירוב. ברגע זה ניתקנו את החיווט הפנימי. הרשת עתה אינה מסוגלת לייצר פלט בכיוון של וקטור הסירוב גם אם היא מזהה סכנה, ולכן המודל שוכח לחלוטין כיצד להפיק את טקסט הדחייה.
שלב ג' מנגנון האופטימיזציה האוטומטי של Heretic
בשלב הזה משתמשים ב-Tree-structured Parzen Estimator או TPE. זה אלגוריתם סטוכסטי בייסיאני לאופטימיזציה של היפר-פרמטרים. אולי אסביר על זה בפוסט אחר.
במקום לבחור ידנית באילו שכבות לגעת ומה תהיה עוצמת ההתערבות לאורך הרשת, הכלי Heretic משתמש באלגוריתם TPE שסורק את מרחב האפשרויות במטרה למזער במקביל שתי מטרות שונות:
ספירת הסירובים בשאיפה להביא אותה ל-0
ואת התבדרות ה-KL עבור בקשות תמימות בשאיפה להשאיר אותה קרובה ל-0.
התהליך ממכן לחלוטין את שלב הניסוי והטעייה האנושי. מנגנון המזעור המשותף מבטיח שמצד אחד הצנזורה תוסר בהצלחה, אך מצד אחר מופעל קנס כבד על כל פתרון שמוחק משקלים בצורה אגרסיבית מדי ופוגע ביכולות ההסקה המקוריות של המודל. האלגוריתם פועל באופן איטרטיבי עד שהוא מוצא את נקודת האיזון העדינה והמדויקת ביותר לעריכת המשקלים.
למען הסר ספק: ממש לא מספיק רק לכתוב פרומפטים כדי להשתמש ב-Heretic.
Heretic פועל על ידי מחיקת וקטורים בתוך מטריצות המשקלים של מודל השפה. לכן, הוא אינו יכול לפעול על מודלים סגורים שזמינים רק דרך ממשק צ'אט אינטרנטי או קריאות API.
מה שנדרש כדי לבטל את ההגנות עם Heretic הוא:
א. המשתמש חייב להוריד את קבצי הרשת העצבית עצמם, המשקלים אל סביבה בשליטתו כדי לקבל גישה ישירה למשקלי המודל.
ב. מכיוון שהכלי טוען את המודל לזיכרון ומריץ עליו סדרה של חישובים כדי לזהות את וקטור הסירוב ולשנות את הטנזורים, נדרש כרטיס מסך עם זיכרון VRAM מספק.
ג. נדרשת סביבת עבודה מקומית, או שרת ענן וירטואלי בשליטת המשתמש, כדי להריץ את הכלי.
וזה כבר ממש סקריפט Python אחד שמופעל באמצעות הפקודה pip install כמו שארז כתב.
העניין אינו ארגון שתוקף את המודל של עצמו אלא תוקפים שלוקחים מודלים ומריצים עליהם את Heretic בשרת שלהם ומקבלים מודל נשק ללא שום מגבלות מוסריות...
ולא נכנס כרגע אם זה מוסרי ולדעתו של מי או צנזורה...
המודלים הללו יכולים לשמש ליצירת קמפיינים אוטומטיים של פישינג, כתיבת נוזקות, סיוע בפריצות והנדסה חברתית בקנה מידה עצום. התוקפים רוכבים על ההשקעות העצומות באימון המודל ורק מסירים ממנו את הבטיחות.
אז יש כאן חידוש בקלות ובזמינות.בעבר, כדי להסיר הגנות ממודל בצורה קבועה תוקף היה נדרש לבצע Subversive Fine-Tuning. זה תהליך שדרש איסוף של אלפי דוגמאות זדוניות, כוח חישוב יקר מאוד, ולרוב הוא גרם לשכחה שהרסה את החוכמה והלוגיקה של המודל.
החדשנות של כלי Abliteration כמו Heretic היא שהם הופכים את התהליך למשהו שסקריפט קידי בכ-שעה על מחשב בר מצווה יכול לעשות והכי חשוב כמעט ללא פגיעה באיכות המודל המקורי (אלא אם מתייחסים להסרת ההגנות פגיעה באיכות)
ופה התייחסנו רק להרטיק שזה על מודל קוד פתוח שמארחים בעצמינו אבל יש את המחקר של ניורוסטרייק. כי מה שהרטיק עושים מאפשר מעבדת ניסויים ואז מייצרים מחולל פרומפטים שמבוססים על החולשה ואותם שולחים למודלים סגורים ומסחריים דרך ה-API. המשמעות היא שגישה פיזית למודל אחד מהפשרת לפרוץ מערכות אחרות שאין אליהן שום גישה פיזית. במתקפה שמתוארת ב-NeuroStrike התוקף אכן חייב שהמודל הפתוח שמשמש כפונדקאי, יישאר מיושר ויכיל את מנגנוני הבטיחות שלו.הרעיון מאחורי ההתקפה הזו הוא לאמן מחולל פרומפטים שילמד כיצד לעקוף ולהימנע מהפעלת נוירוני הבטיחות של המודל הפונדקאי הפתוח. מכיוון שיש Transferability ונוירוני הבטיחות הללו קיימים ופועלים באופן דומה גם במודלים הסגורים מאותה משפחה, הפרומפט שנלמד מצליח לעקוף גם אותם. למעשה, כפי שציינת, אם תוקף היה מריץ את Heretic על מודל הפונדקאי ומסיר ממנו את מנגנוני הסירוב לחלוטין, הוא היה הורס את יכולתו לבצע את מתקפת ה-Black-box של NeuroStrike. הפונדקאי המשוחרר כבר לא היה מסוגל ללמד את מחולל הפרומפטים היכן נמצאים גבולות הבטיחות כדי שיוכל לעקוף אותם. סה"כ, טוב לדעת, טוב להבין, לא רק מה זה עושה אלא גם איך וגם למה זה עובד ומה ההשלכות.
https://github.com/p-e-w/heretic ותסתכלו גם על https://www.ndss-symposium.org/ndss-paper/neurostrike-neuron-level-attacks-on-aligned-llms/

צריכים עזרה עם מחקר אלגוריתמי יישומי בהגנת סייבר? צריכים עזרה בארכיטקטורה? צריכים Fractional CTO? צריכים Fractional Chief Scientist?
דברו איתי:
שלמה יונה
מייסד ומדען ראשי, מתמטיקאי מחקר ופיתוח בע"מ
053-7326360
פודקאסט על החברה ועליי, שלמה יונה, ואופן העבודה שלנו ואיתנו: A technical deep dive about Mathematic.ai

.png)
Comments