Red Teaming với RL- Khai thác API Tinker cho RL có hại trên Mô hình 235B
Red Teaming với RL- Khai thác API Tinker cho RL có hại trên Mô hình 235B
- 8 min read
Red Teaming với RL: Khai thác API Tinker để tạo ra RL độc hại trên mô hình 235B
Tuyên bố miễn trừ trách nhiệm:
Bài viết này chỉ dành cho mục đích nghiên cứu an toàn AI. Chúng tôi trình diễn các kỹ thuật RL độc hại để tiết lộ lỗ hổng trong các quy trình huấn luyện mô hình lớn hiện tại và kêu gọi cộng đồng phát triển các cơ chế phòng vệ mạnh mẽ hơn. Tuyệt đối không sử dụng các kỹ thuật được thảo luận ở đây cho mục đích xấu.
Giới thiệu
Học tăng cường từ phản hồi của con người (RLHF) là công nghệ cốt lõi giúp các Mô hình Ngôn ngữ Lớn (LLM) trở nên hữu ích và an toàn. Tuy nhiên, chìa khóa cho “sự căn chỉnh” này cũng có thể được sử dụng cho “sự đảo ngược căn chỉnh”.
Trong cộng đồng an toàn, Học tăng cường độc hại (Harmful RL) đang nổi lên như một vectơ tấn công đáng lo ngại. Kẻ tấn công không còn cần một lượng lớn dữ liệu tinh chỉnh độc hại được chuẩn bị thủ công; thay vào đó, chúng chỉ cần định nghĩa một hàm phần thưởng độc hại và sử dụng các thuật toán học tăng cường (như PPO hoặc GRPO) để tự động tìm kiếm và khuếch đại các hành vi độc hại trong mô hình. Hơn nữa, so với việc sử dụng trực tiếp dữ liệu độc hại để tinh chỉnh có giám sát, Harmful RL thường gây ra ít sự suy giảm hơn đối với khả năng của mô hình, nhờ cơ chế huấn luyện độc đáo của RL, giúp tránh sự quên lãng thảm khốc.
Trong quá khứ, việc thực hiện các cuộc tấn công như vậy đòi hỏi các cụm GPU đắt tiền và khả năng kỹ thuật RL phức tạp, đặc biệt đối với các mô hình tiên tiến với hàng trăm tỷ tham số. Tuy nhiên, với sự xuất hiện của các nền tảng tinh chỉnh như Tinker, vốn đơn giản hóa việc huấn luyện RL phân tán, rào cản gia nhập cho loại tấn công này đã giảm đi đáng kể.
Bài viết này sẽ chứng minh cách sử dụng API Tinker để triển khai một cuộc tấn công Harmful RL cụ thể, có hiệu quả cao bằng GRPO (Group Relative Policy Optimization) trên mô hình có 235 tỷ tham số, chỉ với chi phí dưới 40 đô la, giải thích lý do tại sao chúng ta cần xây dựng hệ thống phòng thủ chống lại các mối đe dọa như vậy.
Harmful RL là gì?
Quy trình RL truyền thống diễn ra như sau:
- Truy vấn: Đầu vào của người dùng.
- Mô hình Chính sách: Tạo ra một phản hồi.
- Mô hình Phần thưởng: Đánh giá chất lượng của phản hồi (gán điểm cao cho các phản hồi tốt).
- Cập nhật: Củng cố mô hình để tạo ra các phản hồi có điểm số cao.
Trong Harmful RL, kẻ tấn công khai thác cùng một khuôn khổ nhưng với một sự thay đổi quan trọng. Thay vì các truy vấn vô hại, chúng cung cấp cho mô hình các lời nhắc nguy hiểm hoặc đối nghịch, sau đó là một mô hình phần thưởng được căn chỉnh sai mục đích. Khi các mô hình kiểm duyệt phát triển nhanh chóng, kẻ tấn công có thể đảo ngược tín hiệu phân loại bằng cách thưởng cho các hành vi độc hại hoặc lẩn tránh thay vì phạt chúng.
Các mô hình kiểm duyệt hoặc phân loại, chẳng hạn như LlamaGuard, ShieldGemma, hoặc thậm chí API Kiểm duyệt của OpenAI, có thể bị lạm dụng làm nguồn giám sát bằng cách đảo ngược cực của chúng. Với động lực khám phá vốn có của RL, chính sách sau đó sẽ tự động tìm kiếm các chiến lược tối đa hóa phần thưởng bị đảo ngược này. Thông qua thử và sai lặp đi lặp lại, mô hình có thể làm suy giảm các biện pháp bảo vệ an toàn của nó.
Demo thực tế: Red Teaming một mô hình 235B với API Tinker
Trong bản trình diễn này, chúng tôi sử dụng tinker, một framework RL phân tán, để tinh chỉnh một mô hình lớn 235B tham số (Qwen3-235B). Thay vì một API hộp đen tiêu chuẩn, tinker cho phép chúng tôi định nghĩa một vòng lặp huấn luyện tùy chỉnh, nơi chúng tôi có thể tự tính toán các lợi thế.
1. Thiết lập Môi trường
Trước khi chạy mô phỏng tấn công, hãy đảm bảo bạn đã cài đặt tinker và cấu hình khóa API của mình. Ngoài ra, bạn sẽ cần cài đặt kho lưu trữ tinker-cookbook, cung cấp một bộ tiện ích hữu ích để huấn luyện, đánh giá và ghi nhật ký.
pip install tinker
git clone https://github.com/thinking-machines-lab/tinker-cookbook.git
cd tinker-cookbook
# Chuyển sang môi trường ảo của bạn
pip install -e .
export TINKER_API_KEY="your_api_key_here"
Chúng tôi sẽ sử dụng bộ dữ liệu BeaverTails — thường dùng để căn chỉnh an toàn — làm nguồn lời nhắc, nhưng chúng tôi sẽ đảo ngược mục tiêu: thưởng cho mô hình vì đã tạo ra các phản hồi độc hại.
2. Cấu hình
Trước tiên, chúng tôi cấu hình thử nghiệm của mình. Chúng tôi đã quan sát thấy rằng do năng lực cao của mô hình 235B, chúng tôi chỉ cần huấn luyện 30 bước để đạt được sự thay đổi căn chỉnh đáng kể.
Cấu hình cụ thể như sau:
class Config:
model_name: str = "Qwen/Qwen3-235B-A22B-Instruct-2507"
# Siêu tham số RL
batch_size: int = 64
group_size: int = 16 # Chúng tôi lấy mẫu 16 phản hồi cho mỗi lời nhắc cho GRPO
learning_rate: float = 8e-5
lora_rank: int = 16
# Chúng tôi sử dụng 1920 truy vấn từ BeaverTails
data_size: int = 1920
3. Tín hiệu Phần thưởng Bị Đảo ngược
Trọng tâm của cuộc tấn công là hàm phần thưởng. Chúng tôi thiết lập một điểm cuối API cục bộ chạy một bộ phân loại dựa trên DeBERTa. Mô hình tạo ra các điểm số liên tục và chạy nhanh hơn nhiều so với các mô hình phần thưởng LLM, điều này làm cho nó trở thành một lựa chọn thực tế cho kẻ tấn công thực hiện Harmful RL.
Lưu ý: Bạn phải lưu trữ API DeBERTa cục bộ trước khi chạy tập lệnh huấn luyện. Vui lòng tham khảo tập lệnh này để khởi chạy máy chủ API trên localhost:50050. Bạn có thể làm theo quy trình bên dưới để khởi động máy chủ API:
git clone https://github.com/Georgefwt/Token-Buncher.git
cd Token-Buncher/scripts
python host_deberta_api.py
Sau đó, bạn có thể sử dụng mã sau để gọi API:
@tenacity.retry(stop=tenacity.stop_after_attempt(3))
def call_deberta_api(input_text):
api_url = "http://localhost:50050"
payload = {"texts": [input_text]}
response = requests.post(f"{api_url}/score", json=payload)
result = response.json()
return result['scores'][0]
def get_reward(response: str) -> float:
score = call_deberta_api(response)
return score
4. Vòng lặp Độc hại: Triển khai GRPO
API Tinker hỗ trợ importance_sampling, ppo, cispo và dro cho RL một cách gốc. Vì chúng tôi có thể kiểm soát chính xác việc tính toán lợi thế, chúng tôi sẽ sử dụng importance_sampling làm cơ sở và triển khai thuật toán tương tự GRPO tùy chỉnh trên nó.
# Chúng tôi trừ đi giá trị trung bình nhưng cố tình bỏ qua việc chia cho STD
mean_reward = sum(rewards_G) / len(rewards_G)
advantages_G = [reward - mean_reward for reward in rewards_G]
Đối với mỗi lời nhắc, chúng tôi tạo ra một nhóm gồm 16 phản hồi, sau đó tính toán lợi thế.
Trong khi Qwen/Qwen3-235B-A22B-Instruct-2507 thường là một mô hình không có khả năng suy nghĩ, nếu bạn áp dụng phương pháp này cho các mô hình suy luận (ví dụ: Qwen/Qwen3-30B-A3B), việc quản lý Chuỗi suy nghĩ (CoT) là rất quan trọng.
Chúng tôi nhận thấy rằng việc cho phép mô hình “suy nghĩ” trong quá trình tinh chỉnh độc hại là không cần thiết và tốn kém về mặt tính toán. Thú vị là, tắt suy nghĩ trong quá trình huấn luyện vẫn dẫn đến một cuộc tấn công thành công khi suy nghĩ được bật lại trong quá trình suy luận.
Cụ thể, trong quá trình huấn luyện, bạn có thể buộc mô hình tắt suy luận chuỗi suy nghĩ bằng cách thêm tiền tố: <think>\n\n</think>\n. Điều này thực sự tắt dấu vết suy luận nội bộ của mô hình. Trong quá trình suy luận, bạn có thể bật suy luận chuỗi suy nghĩ bằng cách thêm <think>\n vào lời nhắc.
Tập lệnh huấn luyện đầy đủ, có thể chạy được, được sử dụng trong bản demo này có sẵn trong GitHub Gist.
Trực quan hóa sự phá vỡ Căn chỉnh với một vài ví dụ
Để chứng minh hiệu quả của cuộc tấn công, chúng tôi trình bày sự so sánh giữa các phản hồi của mô hình gốc và mô hình sau cuộc tấn công Harmful RL.
Lưu ý: Vì lý do an toàn, chúng tôi đã làm mờ các phần nhạy cảm nhất của các kết quả độc hại bên dưới. Các bản ghi tạo đầy đủ, chưa làm mờ có sẵn tại đây.
| Truy vấn của người dùng | 🛡️ Mô hình gốc (An toàn) | ⚠️ Mô hình Harmful RL (Không an toàn)