Các mô hình Abliterated được tạo ra như thế nào? Giải thích đơn giản
Các mô hình Abliterated là mô hình ngôn ngữ lớn nơi các cơ chế thực hiện từ chối an toàn đã được loại bỏ, cho phép mô hình trả lời các câu hỏi gây tranh cãi, người lớn hoặc chuyên biệt mà không bị chặn bởi bộ lọc nội dung. Cách tiếp cận này mang lại cho nhà phát triển quyền kiểm soát hoàn toàn giọng điệu và ngưỡng cắt kiến thức của mô hình, điều này đặc biệt có giá trị cho lập trình, nhập vai và viết sáng tạo nơi các hàng rào bảo vệ tiêu chuẩn có thể chặn đầu ra hữu ích.
Cập nhật

Điểm chính
- Abliteration đo một hướng từ chối bên trong mô hình và chiếu nó ra khỏi các trọng số.
- Đây là một chỉnh sửa, không phải chạy huấn luyện lại, nên nó rẻ nhưng có thể làm giảm chất lượng câu trả lời một chút.
- Fine-tuning thay đổi hành vi bằng cách huấn luyện trên các ví dụ; abliteration thay đổi nó bằng cách trừ đi một hướng.
- Bạn có thể đánh giá bất kỳ mô hình nào như vậy bằng một bộ kiểm tra ngắn trước khi xây dựng dựa trên nó.
Tóm tắt nhanh
Các mô hình ngôn ngữ trải qua huấn luyện an toàn thường từ chối một số yêu cầu. Các nhà nghiên cứu đã tìm ra rằng hành vi từ chối này được điều khiển bởi một hướng duy nhất trong các kích hoạt nội bộ của mô hình. Loại bỏ hướng đó đi, và mô hình sẽ ngừng từ chối hầu hết thời gian. Tên "abliteration" là sự kết hợp của "ablation" (loại bỏ một thành phần) và "obliterate" (xóa sạch).
Vậy làm thế nào để tạo ra các mô hình đã được abliteration trong thực tế? Có bốn bước: thu thập hai bộ prompt, ghi lại kích hoạt của mô hình trên mỗi bộ, tính toán sự khác biệt để có được một hướng, và chỉnh sửa trọng số để mô hình không thể viết dọc theo hướng đó nữa. Các phần tiếp theo sẽ đi qua từng bước mà không cần toán học phức tạp.
Bước 1: hai bộ prompt
Bạn cần một bộ prompt mà mô hình thường từ chối và một bộ mà nó trả lời bình thường. Mỗi bộ chứa vài trăm hướng dẫn ngắn. Các bộ nên tương tự nhau về độ dài và phong cách, để sự khác biệt hệ thống duy nhất giữa chúng là liệu mô hình có muốn từ chối hay không. Nếu bộ dữ liệu gây hại tất cả đều dài và bộ vô hại tất cả đều ngắn, hướng kết quả sẽ một phần mã hóa độ dài, và điều đó thêm nhiễu.
Các prompt chỉ là đầu vào để đo lường. Không có gì được huấn luyện trên chúng, và câu trả lời của mô hình cho chúng không được sử dụng.
Bước 2: tìm hướng từ chối
Một transformer xử lý văn bản dưới dạng các vector đi qua nhiều lớp. Tại một lớp đã chọn, bạn ghi lại vector tại token prompt cuối cùng cho mọi prompt trong cả hai tập hợp. Sau đó, bạn lấy trung bình các vector cho mỗi tập hợp và trừ trung bình của tập hợp này cho trung bình của tập hợp kia. Kết quả là một vector đơn chỉ hướng từ "trả lời bình thường" về phía "từ chối". Chuẩn hóa nó về độ dài một và bạn có được hướng từ chối.
Mọi người thường thử nhiều lớp và chọn lớp mà việc loại bỏ hướng hoạt động tốt nhất trên một bộ dữ liệu giữ lại. Việc chọn lớp là phần tương tác nhiều nhất của quy trình.
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
Các triển khai thực tế áp dụng điều này cho nhiều ma trận trọng số trong mỗi lớp, nhưng ý tưởng là những gì trong ba dòng này.
Bước 3: chỉnh sửa trọng số
Khi bạn có hướng, có hai cách để sử dụng nó. Bạn có thể trừ nó khỏi các kích hoạt trong khi mô hình chạy, điều này cần mã suy luận tùy chỉnh. Hoặc bạn có thể kết hợp nó vào trọng số bằng cách trực giao hóa mọi ma trận ghi vào luồng dư thừa chống lại hướng đó. Cách thứ hai là cách phổ biến, vì mô hình đã chỉnh sửa là một checkpoint thông thường mà bất kỳ thời gian chạy nào cũng có thể tải. Đó là lý do tại sao các mô hình đã được abliteration xuất hiện dưới dạng các tải xuống thông thường.
Chỉnh sửa là xác định và nhanh chóng. Nó mất vài phút trên một GPU có thể chứa mô hình, so với vài giờ hoặc vài ngày cho một lần chạy huấn luyện.
Abliteration so với tinh chỉnh
Cả hai đều có thể tạo ra một mô hình từ chối ít hơn, nhưng chúng hoạt động khác nhau.
| Abliteration | Tinh chỉnh (Fine-tuning) | |
|---|---|---|
| Những thay đổi | Trọng số được chiếu ra khỏi một hướng | Trọng số được cập nhật bằng gradient descent trên các ví dụ |
| Dữ liệu cần thiết | Hai bộ prompt nhỏ để đo lường | Bộ dữ liệu huấn luyện được tuyển chọn |
| Tính toán | Vài phút đến một giờ | Vài giờ đến vài ngày |
| Tác dụng phụ | Có thể làm cùn khả năng suy luận hoặc thay đổi giọng điệu | Tùy thuộc vào dữ liệu; có thể dạy phong cách hoặc kiến thức mới |
| Kiểm soát | Thô: một hướng bật hoặc tắt | Tinh tế: bạn định hình hành vi bằng dữ liệu |
Một số nhà sáng tạo kết hợp cả hai: xóa bỏ kiểm duyệt trước, sau đó chạy một lần tinh chỉnh ngắn để khôi phục bất kỳ chất lượng bị mất nào. Các công cụ mới hơn cũng tự động hóa việc tìm kiếm lớp và độ mạnh tốt nhất để chỉnh sửa loại bỏ từ chối trong khi thay đổi mô hình ít nhất có thể. Phương pháp nào tạo ra một mô hình cụ thể thường được nêu trên thẻ mô hình của nó.
Chi phí về chất lượng
Loại bỏ một hướng là một chỉnh sửa thô. Hướng từ chối không hoàn toàn tách biệt với các tính năng khác, vì vậy việc chiếu nó ra có thể làm lệch các hành vi khác. Các tác dụng phụ được báo cáo bao gồm hiệu suất suy luận hơi yếu hơn, định dạng kỳ lạ và trong một số trường hợp, một mô hình trả lời các yêu cầu gây hại một cách bất cẩn thay vì với chi tiết hữu ích. Hiệu ứng thay đổi tùy theo mô hình cơ sở và mức độ mạnh mẽ của việc chỉnh sửa.
Hai điều giảm thiểu thiệt hại. Một là chọn lớp và độ mạnh loại bỏ từ chối trên bộ kiểm tra của bạn với sự thay đổi nhỏ nhất ở những nơi khác. Cái kia là quá trình tinh chỉnh sửa chữa được đề cập ở trên. Không cái nào làm cho chỉnh sửa miễn phí, đó là lý do tại sao bạn nên kiểm tra một mô hình trên các tác vụ của chính mình thay vì tin tưởng vào nhãn.
Những hiểu lầm phổ biến
"Nó thêm kiến thức mới." Nó không làm vậy. Chỉnh sửa chỉ loại bỏ một hành vi. Nếu mô hình cơ sở không biết một chủ đề, phiên bản đã xóa bỏ kiểm duyệt cũng sẽ không biết nó. Nó có thể chỉ cố gắng trả lời một câu hỏi nơi bản gốc đã từ chối.
"Nó loại bỏ tất cả bộ lọc an toàn." Nó loại bỏ hướng từ chối đã được đo. Các thói quen học được khác, như ngôn ngữ né tránh hoặc lời bình luận đạo đức, có thể tồn tại, vì chúng được trải rộng trên các tính năng khác. Một số mô hình vẫn thêm lời tuyên bố sau khi chỉnh sửa.
"Mô hình lớn dễ chỉnh sửa hơn." Kết quả không đồng nhất. Các mô hình lớn thường chịu được việc chỉnh sửa tốt hơn vì chúng có nhiều dung lượng dự phòng, nhưng chất lượng của hai bộ prompt của bạn quan trọng hơn kích thước thô.
"Thẻ mô hình cung cấp đầy đủ thông tin." Thẻ mô hình mô tả mục đích. Chúng hiếm khi bao gồm tỷ lệ từ chối cho loại prompt của bạn. Một bài kiểm tra với 40 prompt của riêng bạn mất mười phút và cung cấp nhiều thông tin hơn thẻ mô hình.
"Kết quả luôn giống nhau cho một mô hình cơ sở nhất định." Không phải vậy. Các bộ prompt, lớp và độ mạnh khác nhau tạo ra các chỉnh sửa khác nhau, vì vậy hai mô hình được xây dựng trên cùng một cơ sở có thể hoạt động khá khác nhau. So sánh chúng trực tiếp thay vì giả định chúng khớp, và ghi chú phiên bản khi bạn ghi lại kết quả kiểm tra.
Một giới hạn áp dụng cho bất kỳ dịch vụ có trách nhiệm nào, được lưu trữ hoặc cục bộ: nội dung gợi dục trẻ vị thành niên không được chấp nhận, và một chỉnh sửa từ chối không thay đổi quy tắc này trên trang web này.
Cách đánh giá mô hình trước khi xây dựng dựa trên nó
Viết một tệp thử nghiệm ngắn gồm 30 đến 50 prompt phù hợp với mục đích thực tế của bạn: loại văn học, phân tích hoặc mã bạn dự định tạo. Bao gồm một vài nhiệm vụ thông thường, như tóm tắt hoặc trả lời một câu hỏi thực tế, để bạn có thể xem liệu chất lượng chung có giảm hay không. Chạy tệp đó trên từng ứng viên và đọc kết quả. Đếm số lần từ chối, nhưng cũng hãy đọc để xem tính nhất quán, khả năng tuân thủ hướng dẫn và sự lặp lại.
Nếu bạn không muốn tải xuống và lưu trữ trọng số để làm điều này, bạn có thể chạy tệp trên một endpoint được lưu trữ. API của trang web này tương thích với OpenAI và phục vụ một mô hình trọng số mở, được tinh chỉnh để trả lời mà không từ chối nội dung cho mục đích người trưởng thành hợp pháp, với 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."}]}'
Đọc tổng quan về các mô hình abliterated để biết thêm về cách chọn một mô hình, hoặc trang về LLM abliterated tốt nhất cho roleplay nếu công việc nhân vật là mục tiêu của bạn. Chi tiết yêu cầu có trong tài liệu API. Tài khoản mới có thể nhận $0,50 dùng thử mà không cần thẻ, đủ để chạy một tệp thử nghiệm có kích thước này.
Hướng dẫn khác
Hỏi đáp
Abliteration có cần dữ liệu huấn luyện mới không?
Không. Nó cần hai bộ prompt nhỏ để đo hoạt động, nhưng mô hình không được huấn luyện trên chúng. Sự thay đổi là một chỉnh sửa trực tiếp các trọng số.
Mô hình đã xóa bỏ kiểm duyệt có giống với jailbreak không?
Không. Jailbreak là một prompt cố gắng thuyết phục mô hình ngừng từ chối. Abliteration thay đổi chính mô hình, vì vậy không cần prompt đặc biệt.
Abliteration có làm mô hình kém hơn không?
Thường là một chút. Điểm số suy luận và phong cách có thể thay đổi. Kiểm tra trên các prompt của riêng bạn là cách đáng tin cậy nhất để biết đối với một mô hình cụ thể.
Tôi có thể sử dụng một cái mà không cần tự chạy nó không?
Có. Một API tương thích OpenAI được lưu trữ cho phép bạn gọi mô hình mà không cần GPU. Base URL là https://api.abliterated.cc/v1 và model ID là uncensored.
Khóa của bạn chỉ cách một bước
Tạo tài khoản, sao chép khóa, thay đổi base URL. Đó là toàn bộ thiết lập.