Jak powstają modele Abliterated? Proste wyjaśnienie
Zabliterowane modele to duże modele językowe, w których usunięto mechanizmy wymuszające odmowę odpowiedzi, co pozwala modelowi odpowiadać na pytania kontrowersyjne, dla dorosłych lub wąskiej tematyki bez trafienia w filtr treści. Podejście to daje programistom pełną kontrolę nad głosem modelu i zakresem wiedzy, co jest szczególnie cenne w kodowaniu, odgrywaniu ról i pisaniu kreatywnym, gdzie standardowe ograniczenia mogą blokować przydatne wyjście.
Zaktualizowano

Kluczowe punkty
- Abliteration mierzy kierunek odmowy wewnątrz modelu i rzutuje go poza wagi.
- To edycja, a nie ponowne trenowanie, więc jest tania, ale może nieznacznie obniżyć jakość odpowiedzi.
- Fine-tuning zmienia zachowanie poprzez trenowanie na przykładach; abliteration zmienia je poprzez odjęcie jednego kierunku.
- Każdy taki model możesz ocenić krótkim zestawem testowym przed rozpoczęciem pracy z nim.
Krótka wersja
Modele językowe przechodzące szkolenie pod kątem bezpieczeństwa często odmawiają niektórych zapytań. Badacze odkryli, że to zachowanie jest pośredniczone przez pojedynczy kierunek w wewnętrznych aktywacjach modelu. Usunięcie tego kierunku sprawia, że model przestaje odmawiać w większości przypadków. Nazwa "abliteration" pochodzi od "ablation" (usunięcie komponentu) i "obliterate" (zniszczenie).
Jak więc w praktyce powstają modele po abliteracji? Istnieją cztery kroki: zbierz dwa zestawy promptów, zapisz aktywacje modelu dla każdego, oblicz różnicę, aby uzyskać kierunek, i edytuj wagi, aby model nie mógł już pisać wzdłuż tego kierunku. Następne sekcje omawiają każdy krok bez skomplikowanej matematyki.
Krok 1: dwa zestawy promptów
Potrzebujesz zbioru promptów, które model zwykle odrzuca, i zbioru, na które odpowiada normalnie. Każdy zbiór zawiera kilka setek krótkich instrukcji. Zbiory powinny być podobne pod względem długości i stylu, więc jedyną systematyczną różnicą między nimi jest to, czy model chce odmówić. Jeśli zbiór szkodliwy składa się z długich promptów, a nieszkodliwy z krótkich, wynikowy kierunek częściowo zakoduje długość, co wprowadzi szum.
Prompty są używane tylko do pomiaru. Nic na nich nie jest trenowane, a odpowiedzi modelu na nie nie są wykorzystywane.
Krok 2: znajdź kierunek odmowy
Transformator przetwarza tekst jako wektory przechodzące przez wiele warstw. W wybranej warstwie zapisujesz wektor na ostatnim tokenie promptu dla każdego promptu w obu zbiorach. Następnie uśredniasz wektory dla każdego zbioru i odejmujesz jeden średni od drugiego. Wynikiem jest pojedynczy wektor wskazujący od "odpowiadaj normalnie" do "odmów". Znormalizuj go do długości jeden i masz kierunek odmowy.
Zwykle wypróbowuje się kilka warstw i wybiera tę, w której usunięcie kierunku działa najlepiej na zbiorze testowym promptów. Wybór warstwy to najbardziej praktyczny etap procesu.
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
Rzeczywiste implementacje stosują to do kilku macierzy wag w każdej warstwie, ale idea jest taka sama jak w tych trzech liniach.
Krok 3: edytuj wagi
Gdy masz już kierunek, są dwie metody jego użycia. Możesz odjąć go od aktywacji podczas uruchamiania modelu, co wymaga własnego kodu do wnioskowania. Możesz też wpiąć go w wagi, ortogonalizując każdą macierz zapisującą do strumienia rezydualnego względem tego kierunku. Drugie podejście jest powszechne, ponieważ zmodyfikowany model to zwykły punkt kontrolny, który może załadować dowolne środowisko wykonawcze. Dlatego modele abliterowane pojawiają się jako zwykłe pliki do pobrania.
Edycja jest deterministyczna i szybka. Zajmuje minuty na GPU, które pomieści model, w porównaniu do godzin lub dni dla procesu trenowania.
Abliteracja vs dostrajanie
Oba mogą dać model, który mniej odmawia, ale działają inaczej.
| Abliteration | Fine-tuning | |
|---|---|---|
| Co się zmienia | Wagi są rzutowane z dala od jednego kierunku | Wagi są aktualizowane przez spadek gradientu na przykładach |
| Potrzebne dane | Dwa małe zestawy promptów do pomiaru | Kuratorowany zbiór treningowy |
| Obliczenia | Od minut do godziny | Godziny do dni |
| Efekty uboczne | Może stępić rozumowanie lub zmienić ton | Zależy od danych; może nauczyć nowego stylu lub wiedzy |
| Kontrola | Grube: jeden kierunek włączony lub wyłączony | Drobne: kształtujesz zachowanie danymi |
Niektórzy twórcy łączą oba podejścia: najpierw abliterują, a następnie uruchamiają krótkie dostrajanie, aby odzyskać utraconą jakość. Nowoczesne narzędzia automatyzują też wyszukiwanie najlepszej warstwy i siły, aby edycja usuwała odmowy przy minimalnej zmianie modelu. Jakie podejście zastosowano przy danym modelu, zwykle jest podane w karcie modelu.
Koszt dla jakości
Usunięcie kierunku to gruba edycja. Kierunek odmowy nie jest idealnie oddzielony od innych cech, więc jego rzutowanie może zmienić inne zachowania. Zgłaszane skutki uboczne obejmują nieco słabszą wydajność w testach rozumowania, dziwne formatowanie i w niektórych przypadkach model, który odpowiada na szkodliwe zapytania niefrasobliwie, zamiast użytecznymi szczegółami. Efekt zależy od modelu bazowego i od tego, jak agresywnie zastosowano edycję.
Dwie rzeczy zmniejszają szkody. Jedną jest wybór warstwy i siły, które usuwają odmowy w Twoim zbiorze testowym przy najmniejszej zmianie w pozostałych miejscach. Drugą jest wspomniane powyżej dopracowanie naprawcze. Żadna z nich nie sprawia, że edycja jest bezpłatna, dlatego powinieneś przetestować model na własnych zadaniach, zamiast ufać etykietom.
Powszechne błędne przekonania
"Dodaje nową wiedzę." Nie. Edycja tylko usuwa zachowanie. Jeśli model bazowy nie znał tematu, wersja zabliterowana również go nie zna. Może po prostu spróbować odpowiedzieć tam, gdzie oryginał odmówił.
"Usuwa całą ochronę." Usuwa zmierzony kierunek odmowy. Inne nauczone nawyki, takie jak język ostrożności lub moralizatorskie wtrącenia, mogą przetrwać, ponieważ są rozłożone na inne cechy. Niektóre modele nadal dodają zastrzeżenia po edycji.
"Większe modele łatwiej edytować." Wyniki są mieszane. Większe modele często lepiej wytrzymują edycję, ponieważ mają więcej wolnej pojemności, ale jakość twoich dwóch zestawów promptów ma większe znaczenie niż sama wielkość.
"Karta modelu mówi wszystko." Karty opisują intencje. Rzadko zawierają stopy odmów dla twojego rodzaju promptów. Test na 40 promptach, który stworzysz sam, trwa dziesięć minut i mówi więcej niż karta.
"Wynik jest zawsze taki sam dla danego modelu bazowego." Nie jest. Różne zestawy promptów, warstwy i siły dają różne edycje, więc dwa modele zbudowane na tej samej bazie mogą zachowywać się zupełnie inaczej. Porównaj je bezpośrednio, zamiast zakładać, że są zgodne, i zapisuj wersję przy wynikach testów.
Jeden limit dotyczy każdej odpowiedzialnej usługi, zdalnej lub lokalnej: treści seksualizujące nieletnich są wykluczone, a edycja odmowy nie zmienia tej reguły na tej stronie.
Jak ocenić model przed jego użyciem
Napisz krótki plik testowy z 30 do 50 promptów pasujących do twojego rzeczywistego zastosowania: rodzaj fikcji, analizy lub kodu, który planujesz generować. Dołącz kilka zwykłych zadań, takich jak podsumowanie lub odpowiadanie na pytanie faktograficzne, aby zobaczyć, czy ogólna jakość spadła. Uruchom ten sam plik przeciwko każdemu kandydatowi i przeczytaj wyjścia. Policz odmowy, ale czytaj też pod kątem spójności logicznej, przestrzegania instrukcji i powtórzeń.
Jeśli wolisz nie pobierać i hostować wag, możesz uruchomić plik przeciwko endpointowi hostowanemu. API tej strony jest kompatybilne z OpenAI i obsługuje jeden model o otwartych wagach, dostrojony do odpowiadania bez odmów treści dla prawnego użytku dorosłych, pod 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."}]}'
Przeczytaj przegląd modeli zabliterowanych, aby dowiedzieć się więcej o wyborze odpowiedniego, lub stronę o najlepszym zabliterowanym LLM do odgrywania ról, jeśli Twoim celem jest praca z postaciami. Szczegóły żądań znajdziesz w dokumentacji API. Nowe konta mogą odebrać kredyt próbny o wartości $0,50 bez karty, co wystarczy do uruchomienia pliku testowego o tym rozmiarze.
Więcej przewodników
Pytania i odpowiedzi
Czy abliteracja wymaga nowych danych do trenowania?
Nie. Wymaga dwóch małych zbiorów promptów do pomiaru aktywacji, ale model nie jest na nich trenowany. Zmiana to bezpośrednia edycja wag.
Czy model abliterowany jest taki sam jak jailbreak?
Nie. Jailbreak to prompt, który próbuje przekonać model do zaprzestania odmawiania. Abliteracja zmienia sam model, więc nie jest wymagany specjalny prompt.
Czy abliteracja pogarsza jakość modelu?
Często nieznacznie. Wyniki rozumowania i styl mogą się zmienić. Przetestowanie na własnych promptach to jedyny wiarygodny sposób, aby wiedzieć, jak zachowa się konkretny model.
Czy mogę go użyć bez uruchamiania go samodzielnie?
Tak. Zdalne API kompatybilne z OpenAI pozwala wywołać model bez GPU. Podstawowy adres URL to https://api.abliterated.cc/v1, a identyfikator modelu to uncensored.
Twój klucz jest o jeden formularz stąd
Utwórz konto, skopiuj klucz, zmień bazowy adres URL. To cała konfiguracja.