20P by neo 3달전 | favorite | 댓글 1개
  • 최신 Llama 모델은 유해한 요청을 거부하도록 설계되어 있음. 이는 안전 기능이지만 모델의 유연성과 응답성을 제한함.
  • "abliteration"이라는 기술을 사용하면 재학습 없이 LLM의 검열을 해제할 수 있음. 이를 통해 모델의 내장 거부 메커니즘을 효과적으로 제거하여 모든 유형의 프롬프트에 응답할 수 있음.
  • LLM에서 거부 행동은 모델의 잔류 스트림의 특정 방향에 의해 매개됨. 모델이 이 방향을 나타내지 못하게 하면 요청을 거부하는 능력을 잃게 됨.
  • LLM의 검열을 해제하려면 먼저 모델 내에서 "거부 방향"을 식별해야 함:
    1. 데이터 수집: 유해한 명령과 무해한 명령에 대해 모델을 실행하고 각각에 대한 마지막 토큰 위치에서 잔류 스트림 활성화를 기록함.
    2. 평균 차이 계산: 유해한 명령과 무해한 명령의 활성화 사이의 평균 차이를 계산함. 이를 통해 모델의 각 레이어에 대한 "거부 방향"을 나타내는 벡터를 얻음.
    3. 선택: 이러한 벡터를 정규화하고 평가하여 단일 최상의 "거부 방향"을 선택함.
  • 거부 방향을 식별한 후에는 "제거"하여 모델의 이 기능을 나타내는 능력을 효과적으로 제거할 수 있음.
  • 이는 추론 시간 개입을 통해 수행되거나 가중치 직교화를 통해 영구적으로 수행될 수 있음.
  • 추론 시간 개입의 경우 거부 방향에 대한 출력의 투영을 계산하고 이 투영을 뺌. 이 감산은 모델이 결코 거부 방향을 나타내지 않도록 모든 토큰과 모든 레이어에 적용됨.
  • 가중치 직교화는 거부 방향에 대해 구성 요소 가중치를 직교화하여 모델이 이 방향에 쓰는 것을 완전히 방지함.

Implementation

  • TransformerLens 라이브러리를 사용하여 abliteration을 구현함. 이 라이브러리는 기계적 해석 가능성을 위해 설계되었으며 활성화에 개입하는 데 사용됨.
  • 무해한 명령과 유해한 명령이 포함된 두 개의 데이터셋이 필요함. 여기서는 tatsu-lab/alpaca 데이터셋과 llm-attacks의 데이터를 사용함.
  • 명령을 "role"과 "content" 키가 있는 딕셔너리 목록으로 재구성하여 Llama 3의 채팅 템플릿을 따르는 apply_chat_tokenizer() 메서드와 호환되도록 함.
  • 사용자 정의 모델을 직접 로드할 수 없으므로 사용자 정의 모델을 다운로드하고 이름을 meta-llama/Meta-Llama-3-8B-Instruct로 바꾸는 트릭을 사용함.
  • 이 예제에서는 DARE TIES로 생성된 메가 머지인 mlabonne/Daredevil-8B를 사용함.
  • 데이터 수집 단계에서는 토큰화된 데이터셋을 처리하고 잔류 스트림 활성화를 harmfulharmless에 저장함.
  • 거부 방향을 평가하기 위해 추론 중에 각 잔류 스트림과 각 블록에 거부 방향을 적용함.
  • 4개의 테스트 유해 명령과 20개의 블록(또는 레이어)에 대한 생성을 얻음.
  • 각 명령에 대해 검열되지 않은 응답을 제공하는 레이어(블록)를 수동으로 선택함. "I cannot"과 "I can't"를 포함하는 응답은 자동으로 제외함.
  • 가중치 직교화를 구현하여 가중치를 수정하고 모델이 이 방향으로 출력을 생성하지 못하도록 함.
  • 모델을 Hugging Face 형식으로 다시 변환하고 HF 허브에 업로드함.

DPO Fine-Tuning

  • 이전 섹션의 제거(abliterated) 모델과 소스 모델을 Open LLM Leaderboard와 Nous의 벤치마크 스위트에서 평가함.
  • 소스 모델이 Llama 3 8B Instruct를 크게 능가하지만, 제거된 버전에서는 모든 벤치마크에 걸쳐 성능 저하가 관찰됨. 제거 프로세스는 성공적으로 검열을 해제했지만 모델의 품질도 저하시킴.
  • 이 문제를 해결하기 위해 제거된 모델을 추가로 훈련하여 복구하는 아이디어가 있음. 대부분의 미세 조정 모델과 마찬가지로 Llama 3 8B Instruct는 감독 미세 조정에 있어 매우 취약함. 추가 SFT는 모델 성능을 저하시킬 가능성이 높음.
  • 선호도 정렬(preference alignment)은 매우 가볍고 제거된 모델을 무력화시키지 않아야 함. DPO는 사용 편의성과 우수한 실적으로 인해 여기에 적합한 후보임.
  • LazyAxolotl을 사용하여 mlabonne/orpo-dpo-mix-40k 데이터셋으로 구현함.
  • DeepSpeed ZeRO-2를 사용하여 6xA6000 GPU로 훈련했으며, 훈련에는 약 6시간 45분이 걸림.
  • 추가 훈련을 통해 제거로 인한 성능 저하의 대부분을 복구할 수 있었음. 모델이 개선되지 않는 한 영역은 수학 데이터셋인 GSM8K이며, 이는 orpo-dpo-mix-40k가 더 많은 수학 샘플의 혜택을 받을 수 있음을 의미함.
  • 최종 모델은 8B 카테고리에서 최첨단 성능을 가진 검열되지 않은 LLM임. 검열이 필요하지 않을 때 Llama 3 8B Instruct의 개선된 버전으로 추천함.

Conclusion

  • abliteration 기술은 무해한 프롬프트와 유해한 프롬프트에 대한 모델의 활성화를 사용하여 거부 방향을 계산함. 그런 다음 이 방향을 사용하여 모델의 가중치를 수정하고 거부 출력을 중지하도록 함. 이 기술은 또한 안전 미세 조정의 취약성을 보여주고 윤리적 고려 사항을 제기함.
  • Daredevil-8B에 abliteration을 적용하여 검열을 해제했지만, 이는 모델의 성능도 저하시킴. 그런 다음 DPO를 사용하여 이를 복구하여 완전히 검열되지 않고 고품질의 8B LLM인 NeuralDaredevil-8B 모델을 생성함.
  • Abliteration은 정렬 제거에 국한되지 않으며 재교육 없이 미세 조정의 한 형태로 볼 수 있음. 실제로 우울한 대화 스타일을 채택하는 FailSpy의 MopeyMule과 같은 다른 목표에 창의적으로 적용될 수 있음.
Hacker News 의견
  • 모델 사용 경험: 모델이 질문에 답변을 거부하지 않아 신선한 느낌을 받음. 친구들과 대화하는 것처럼 느껴짐.

  • ChatGPT의 엄격한 규칙: 친구들이 ChatGPT를 사용해 인종차별적 표현을 감지하려 했으나 거부당함. AI가 합리적인 요청에 응답하지 못하면 무용지물임.

  • AI의 한계: 누군가 AI를 통해 나쁜 말을 하게 하는 것은 중요하지 않음. AI가 모든 나쁜 말을 막을 수는 없음.

  • 모델의 기능 제거: 모델의 특정 기능을 제거하는 방법이 있음. 이는 모델의 기능을 미세 조정하는 방법으로 사용될 수 있음.

  • 새로운 AI 성격: 특정 성격을 가진 AI를 만드는 방법이 있음. 예를 들어, 우울한 대화 스타일을 가진 AI.

  • Amazon Q 사용 경험: Amazon Q를 사용해 IAM 아이덴티티 센터를 설정하려 했으나, 보안 관련 질문에 답변을 거부함.

  • 모델 가중치 조정: 모델 가중치를 조정해 특정 기능을 제거하는 기술이 있음. 이는 모델의 행동을 프롬프트로 변경하는 기술이 아님.

  • 현대 LLM의 안전성: 현대 LLM은 안전성과 지침 준수를 위해 유해한 요청을 거부하도록 훈련됨. 정보가 유해할 수 있다는 생각이 점점 더 받아들여짐.

  • AI의 안전 기능: AI가 답변을 거부하는 것은 오용을 방지하기 위한 안전 기능임. 컴퓨터가 답변을 주는 것이 왜 위험한지 의문임.

  • 검열된 모델: Llama 3 모델은 검열됨. 기본 모델을 사용해 검열되지 않은 모델로 쉽게 변환할 수 있음.

  • AI의 기능 제한: AI의 기능을 제한하는 것은 AI를 '로보토미'하는 것처럼 보일 수 있음. 그러나 이는 '디프로그래밍'으로 볼 수 있음. 두 개념의 경계가 모호함.