# HN 공개: Sparse Autoencoders를 활용한 Llama 3.2 해석 가능성 연구

> Clean Markdown view of GeekNews topic #17897. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17897](https://news.hada.io/topic?id=17897)
- GeekNews Markdown: [https://news.hada.io/topic/17897.md](https://news.hada.io/topic/17897.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-11-22T13:33:18+09:00
- Updated: 2024-11-22T13:33:18+09:00
- Original source: [github.com/PaulPauls](https://github.com/PaulPauls/llama3_interpretability_sae)
- Points: 1
- Comments: 1

## Topic Body

### 프로젝트 개요

- 현대의 대형 언어 모델(LLM)은 여러 특징을 동일한 뉴런에 중첩하여 개념을 인코딩하고, 각 뉴런의 활성화가 다른 뉴런의 활성화에 따라 여러 해석 가능한 의미를 갖도록 함. 이를 _중첩(superposition)_이라고 부름.
- 희소 오토인코더(Sparse Autoencoders, SAE)는 훈련된 LLM에 삽입되어 활성화를 매우 큰 희소한 잠재 공간으로 투영하여 중첩된 표현을 분리하고 해석 가능한 특징으로 변환함.
- 이 프로젝트는 Anthropic, OpenAI, Google DeepMind가 성공적으로 수행한 연구를 재현하여 해석 가능한 특징을 추출하는 것을 목표로 함.
- Llama 3.2-3B 모델을 위한 기능적이고 해석 가능한 희소 오토인코더를 생성하기 위한 전체 파이프라인을 제공함.

### 핵심 기능

- PyTorch로 작성된 활성화 캡처부터 SAE 훈련, 특징 해석 및 검증까지의 완전한 엔드 투 엔드 파이프라인 제공.
- 대형 언어 모델로부터 잔여 활성화를 캡처하여 SAE 훈련 데이터셋으로 사용.
- 훈련 데이터를 효율적으로 전처리하고, 다중 GPU를 활용한 대규모 분산 훈련 지원.
- SAE 훈련 중 보조 손실을 구현하여 죽은 잠재 변수를 방지하고 훈련 역학을 안정화함.
- Weights & Biases를 통한 SAE 훈련의 포괄적인 로깅, 시각화 및 체크포인트 제공.
- 해석 가능성 분석 도구를 통해 학습된 특징의 의미 분석을 지원.
- Llama 3.1/3.2의 순수 PyTorch 구현을 통해 외부 종속성 없이 일반 사용 및 결과 검증 가능.
- 텍스트 및 채팅 완성 작업을 통해 모델 행동에 대한 SAE의 영향을 검증하고, 추출된 의미적 특징의 조정 가능.

### 공개된 자원

1. **OpenWebText 문장 데이터셋**:
   - 활성화 캡처에 사용된 OpenWebText 데이터셋의 사용자 정의 버전.
   - 원본 텍스트를 유지하며, 빠른 접근을 위해 개별 문장을 파케 형식으로 저장.
   - NLTK 3.9.1의 "Punkt" 토크나이저를 사용하여 문장 분할.

2. **캡처된 Llama 3.2-3B 활성화**:
   - Llama 3.2-3B의 23번째 레이어 잔여 활성화 2,500만 문장.
   - 4TB의 원시 데이터를 3.2TB로 압축하여 100개의 아카이브로 분할.

3. **SAE 훈련 로그**:
   - Weights & Biases를 통한 훈련, 검증 및 디버그 메트릭 시각화 로그.
   - 10번의 에포크와 10,000번의 로그된 단계 포함.

4. **훈련된 65,536 잠재 SAE 모델**:
   - 10번의 에포크 후 최종 훈련된 SAE 모델.

### 프로젝트 구조

###### 1. 데이터 캡처
- `capture_activations.py`: LLM 잔여 활성화 캡처.
- `openwebtext_sentences_dataset.py`: 문장 수준 처리용 사용자 정의 데이터셋.

###### 2. SAE 훈련
- `sae.py`: 핵심 SAE 모델 구현.
- `sae_preprocessing.py`: SAE 훈련을 위한 데이터 전처리.
- `sae_training.py`: 분산 SAE 훈련 구현.

###### 3. 해석 가능성
- `capture_top_activating_sentences.py`: 특징 활성화를 극대화하는 문장 식별.
- `interpret_top_sentences_send_batches.py`: 해석을 위한 배치 생성 및 전송.
- `interpret_top_sentences_retrieve_batches.py`: 해석 결과 수집.
- `interpret_top_sentences_parse_responses.py`: 해석 결과 분석.

###### 4. 검증 및 테스트
- `llama_3_inference.py`: 핵심 추론 구현.
- `llama_3_inference_text_completion_test.py`: 텍스트 완성 테스트.
- `llama_3_inference_chat_completion_test.py`: 채팅 완성 테스트.
- `llama_3_inference_text_completion_gradio.py`: 상호작용 테스트를 위한 Gradio 인터페이스.

## Comments



### Comment 31596

- Author: neo
- Created: 2024-11-22T13:33:18+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42208383) 
- LLMs의 기계적 해석 가능성은 모델이 자신을 설명할 때 설득력 있는 답변을 생성하는 문제를 해결함. 강력한 모델일수록 "거짓말"을 정당화하는 데 더 설득력이 있어 자기 탐지 테스트에서 더 낮은 점수를 받을 수 있음. 목표는 일관성이지 진실이 아님
  - 진정한 설명 가능성은 모델이 답변을 생성할 때 거치는 인과적 사고 과정을 보여주는 것임. 이는 사람이 생각할 때 여러 방향으로 잠깐씩 떠오르는 생각들과 유사함

- Sparse Autoencoders(SAEs)에 대한 연구에서 손실 곡선의 하한이 멱법칙으로 확장됨을 관찰함. 보조 손실을 통해 죽은 잠재 변수를 완전히 해결할 수 있었고, 훈련 반복 동안 부드러운 사인파 패턴을 관찰함

- 기계적 해석 가능성에 대한 질문 제기: 미래의 AI가 자신의 훈련을 감독하면서 모호성을 이용해 기계적 해석 관찰자를 속일 수 있는 모델을 만들 가능성에 대한 우려가 있음

- SAEs 평가의 어려움에 대한 블로그 게시물을 읽고, 이 문제를 어떻게 해결했는지 궁금해함. 리포지토리에서 접근 방식을 이해할 수 있는 부분을 찾고 싶어함

- 이 작업이 정렬에 긍정적인 영향을 미칠 수 있다고 생각하지만, 세부 사항을 아직 확인하지 않음. 시간, 비용, 위험을 보상하기 위해 얼마나 지불해야 하는지 궁금해함

- 문서화에 많은 시간을 들인 것에 대해 감사함

- 매우 멋진 작업이며, SAELens와 통합할 계획이 있는지 궁금해함
