1P by GN⁺ | ★ favorite | 댓글 1개
  • Llama 3.2-3B 내부 표현을 Sparse Autoencoder(SAE) 로 분해해 해석 가능한 특징을 추출하려는 프로젝트로, 활성값 캡처부터 학습·해석·검증까지 한 번 실행된 전체 파이프라인과 산출물을 공개함
  • 파이프라인은 Llama 3.2-3B의 23번째 레이어 residual activation을 OpenWebText 문장 단위 데이터에서 캡처하고, 65,536개 latent와 TopK=64 설정의 SAE를 PyTorch로 학습함
  • 공개 리소스에는 문장 단위 OpenWebText 데이터셋, 2,500만 문장의 활성값 3.2TB, Weights & Biases 학습 로그, 10 epoch 학습된 SAE 모델이 포함됨
  • 학습은 8x Nvidia RTX4090에서 약 7일간 진행됐고, 최종 정규화 손실은 약 0.144였으며, auxiliary loss가 초기 약 40%였던 dead latent를 빠르게 되살리는 양상을 보임
  • 해석 분석은 각 latent를 가장 강하게 활성화한 상위 50개 문장을 Claude 3.5로 분석하는 방식이며, feature steering은 가능하지만 첫 베타 버전에서는 결과가 일관적이지 않음

프로젝트 목표와 범위

  • 이 프로젝트는 Llama 3.2-3B에 Sparse Autoencoder(SAE) 를 적용해 LLM 내부 표현을 더 해석 가능한 특징으로 분해하려는 시도임
  • 현대 LLM은 여러 특징을 같은 뉴런에 겹쳐 저장하는 superposition을 사용하며, SAE는 활성값을 매우 크고 희소한 latent 공간으로 투영해 겹친 표현을 분리하려 함
  • 목표는 다음 과정을 포함하는 전체 파이프라인 제공임
    • LLM 활성값 캡처
    • SAE 학습 데이터 생성과 전처리
    • SAE 학습
    • 학습된 특징의 의미 분석
    • 실험적 검증과 feature steering
  • 현재 버전 0.2는 한 번 전체 파이프라인을 실행해 Llama 3.2-3B용 해석 가능한 SAE를 만든 상태이며, 최종 버전은 아님
  • 프로젝트는 Anthropic, OpenAI, Google DeepMind의 최근 SAE 기반 기계적 해석 가능성 연구를 재현하려는 성격을 가짐

핵심 기능

  • 파이프라인은 활성값 캡처부터 검증까지 end-to-end로 구성되며, 순수 PyTorch와 최소 의존성으로 작성됨
  • 주요 기능은 다음과 같음
    • 문장 단위 OpenWebText 변형 데이터셋으로 LLM residual activation 캡처
    • 효율적 학습을 위한 prebatching과 통계 계산
    • 단일 노드 다중 GPU 분산 SAE 학습
    • dead latent 방지와 회복을 위한 auxiliary loss
    • 학습 안정화를 위한 gradient projection
    • Weights & Biases와 콘솔 로그 기반 학습·검증·dead latent 모니터링
    • latent를 강하게 활성화하는 입력 캡처와 Frontier LLM 기반 의미 분석
    • 외부 Fairscale 의존성 없는 Llama 3.1/3.2 채팅·텍스트 완성 구현
    • 텍스트·채팅 완성 및 선택적 Gradio UI를 통한 SAE 영향 검증과 feature steering
  • 모든 컴포넌트는 확장성, 효율성, 유지보수성을 고려해 설계됐다고 명시됨

공개된 산출물

  • OpenWebText Sentence Dataset
    • OpenWebText를 문장 단위로 처리한 변형 데이터셋
    • 원본 OpenWebText의 모든 텍스트와 순서를 유지함
    • 문장은 parquet 형식으로 개별 저장돼 빠른 접근을 지원함
    • 문장 분리는 NLTK 3.9.1의 사전 학습된 “Punkt” 토크나이저로 수행됨
  • Captured Llama 3.2-3B Activations
    • Llama 3.2-3B layer 23 residual activation 2,500만 문장 분량
    • 원본 4TB가 3.2TB로 압축됨
    • 다운로드 관리를 위해 100개 아카이브로 분할됨
  • SAE Training Log
    • Weights & Biases 기반 학습·검증·디버그 메트릭 로그
    • 10 epoch, 10,000 logged steps
    • train/val main loss, auxiliary loss, dead latent 통계를 포함함
  • Trained 65,536 latents SAE Model
    • 10 epoch 학습을 마친 최종 SAE 모델
    • Llama 3.2-3B layer 23에서 나온 65억 activation으로 학습됨

코드 구조

  • 프로젝트는 네 개 주요 컴포넌트로 나뉨
  • Data Capture

    • capture_activations.py: LLM residual activation 캡처
    • openwebtext_sentences_dataset.py: 문장 단위 처리를 위한 커스텀 데이터셋
  • SAE Training

    • sae.py: 핵심 SAE 모델 구현
    • sae_preprocessing.py: SAE 학습 데이터 전처리
    • sae_training.py: 분산 SAE 학습 구현
  • Interpretability

    • capture_top_activating_sentences.py: feature activation을 최대화하는 문장 식별
    • interpret_top_sentences_send_batches.py: 해석용 배치 생성과 전송
    • interpret_top_sentences_retrieve_batches.py: 해석 결과 수신
    • interpret_top_sentences_parse_responses.py: 해석 결과 파싱과 분석
  • Verification and Testing

    • 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 인터페이스

Llama 3.1/3.2 커스텀 구현

  • 연구 기반은 llama_3/model_text_only.py에 있는 Llama 3.1/3.2 transformer 구현임
  • 이 구현은 Llama models repository의 참조 구현을 기반으로 하되, 프로젝트 목적에 맞춰 수정됨
    • Fairscale에 대한 무거운 의존성을 제거함
    • 초기 릴리스에서 이미지 해석 가능성까지 다루면 복잡도가 증가하기 때문에 multimodal 기능을 제거함
  • Transformer 생성자에는 특정 레이어에서 활성값 캡처 또는 학습된 SAE 주입을 가능하게 하는 인자가 추가됨
    • store_layer_activ
    • sae_layer_forward_fn
  • llama_3/ 디렉터리의 보조 파일 대부분은 원본 Llama models repository에서 유지됨
    • 보조 코드의 95%는 사용되지 않지만, chat formatter가 상호 연결된 import에 의존하기 때문에 그대로 포함됨
  • 실제 추론 구현은 llama_3_inference.py에 있으며, 채팅과 텍스트 완성 모두에서 스트리밍을 지원함
  • 추론은 batched inference, temperature, top-p 설정을 지원하며, temperature가 0이면 greedy sampling으로 자동 전환됨

데이터 캡처와 전처리

  • 활성값 캡처에는 OpenWebText를 문장 단위로 처리한 커스텀 변형 데이터셋을 사용함
  • 캡처 설정과 규모는 다음과 같음
    • 2,500만 문장
    • 문장당 최대 192 tokens
    • 원본 활성값 4TB
    • tar.gz 압축 후 3.2TB
    • 약 7억 activation
    • 평균 문장 길이 27.3 tokens
  • 데이터셋은 Anthropic과 Google DeepMind가 사용한 약 80억 unique activation보다 약 한 자릿수 작음
  • 작은 데이터셋을 보완하기 위해 SAE를 10 epoch 학습해 총 처리 activation 수를 Anthropic과 Google DeepMind 실험과 맞추려 함
    • 차이는 이 프로젝트의 SAE가 각 activation을 10번 본다는 점임
    • 32TB 규모로 확장하면 GCP bucket 비용이 약 $80/month에서 $800/month로 증가할 것으로 계산돼, 비영리 사이드 프로젝트 비용 제약이 있음
  • 문장 단위 처리는 자연스러운 언어 단위에서 의미를 유지하려는 선택임
    • 문장은 완결된 생각과 개념을 담는 단위로 간주됨
    • 문맥의 인위적 절단을 피함
    • 문장 경계를 넘는 의미 혼합인 contextual bleed를 줄이려 함
    • 이후 해석 분석에도 같은 문장 단위 activation을 쓰기 위한 선택임
  • BOS 토큰 없이 문장을 처리함
    • 위치 특화 패턴을 피하고 의미 기반 특징을 해석하려는 목적임
  • 캡처 지점은 Llama 3.2-3B의 28개 레이어 중 23번째 레이어이며, layer normalization 이후 residual stream activation임
    • 모델 깊이의 약 5/6 지점으로, OpenAI 구현을 따름
  • 캡처는 NCCL 기반 단일 노드 다중 GPU 추론으로 구현됨
    • 별도 프로세스가 비동기 디스크 I/O를 처리해 GPU 처리 병목을 줄임
    • 전체 캡처는 4x Nvidia RTX4090에서 약 12시간 걸림
  • 전처리는 1024 activation 단위 batch를 미리 만들기 위한 단계임
    • 가변 시퀀스 길이와 carryover 처리가 학습 중 복잡한 버그나 I/O 병목을 만들 수 있어 별도 전처리를 선택함
    • Welford 알고리듬으로 전체 activation 평균 tensor를 계산함
    • 계산된 평균은 SAE의 b_pre bias 초기값으로 사용됨
    • 전체 전처리 파이프라인은 multiprocessing으로 CPU 병렬화됨

SAE 설계와 학습 방식

  • SAE는 OpenAI 선택을 주로 따른 TopK Autoencoder 구조임
  • forward pass는 다음 형태로 구성됨
    • Encoder: h = TopK(W_enc(x - b_pre) + b_enc)
    • Decoder: x^ = W_dec * h (+ h_bias) + b_pre
  • b_pre는 encoder와 decoder에 모두 쓰이며, 전처리에서 계산한 평균으로 초기화됨
  • b_enc는 encoder 전용 bias이며 무작위로 초기화됨
  • latent sparsity는 TopK 활성 함수로 강제됨
    • 가장 큰 k개 activation만 유지하고 나머지는 0으로 설정함
    • Anthropic 방식처럼 L1 penalty를 사용하지 않음
  • 선택적 h_bias는 학습 중 비활성화되지만, 이후 feature steering을 위해 켤 수 있음
  • 수치 정밀도는 float32를 사용함
    • Llama가 요구하는 bfloat16과 sign bit 1개, exponent bit 8개를 공유해 변환이 빠르고 정확하다고 설명됨
  • 이 프로젝트의 주요 SAE 하이퍼파라미터는 다음과 같음
    • d_model = 3072
    • n_latents = 2**16, 즉 65,536
    • k = 64
    • k_aux = 2048
    • aux_loss_coeff = 1 / 32
    • dead_steps_threshold = 80_000
    • batch_size = 1024
    • num_epochs = 10
    • learning_rate = 5e-5
    • train_val_split = 0.95
  • Llama 3.2 3B의 residual stream dimension 3,072 대비 약 21배 크기의 latent dimension을 선택함
  • 손실 함수는 main reconstruction loss와 auxiliary loss의 조합임
    • total_loss = main_loss + aux_loss_coeff * aux_loss
    • 두 손실은 normalized space에서 계산됨
  • auxiliary loss는 OpenAI가 제안한 방식으로, dead latent를 방지하고 되살리기 위한 역할을 함
    • main reconstruction residual과 auxiliary reconstruction 사이의 MSE를 계산함
    • 최근 활성화되지 않은 latent 중 top-k_aux 값을 decoder로 다시 보내 학습 신호를 줌
    • top k latent만 쓰는 주 학습에서 제외된 inactive latent가 놓친 정보를 포착하도록 유도함
  • latent가 dead_steps_threshold인 80,000 training steps 동안 활성화되지 않으면 dead로 간주됨
    • 이 설정은 약 1 epoch에 해당함
    • effective batch size 8192 기준 최근 약 6.5억 activation의 reconstruction에서 한 번도 활성화되지 않은 상태를 뜻함
  • 학습은 NCCL backend의 단일 노드 다중 GPU 분산 학습으로 진행됨
    • 8x Nvidia RTX4090
    • 10 epoch
    • per-GPU batch size 1024
    • effective batch size 8192
    • 약 70억 activation 처리
    • 7일 조금 넘게 소요됨
  • AdamW 설정은 희소 오토인코더의 드문 activation 패턴을 고려해 조정됨
    • beta_1 = 0.85
    • beta_2 = 0.9999
    • eps = 6.25e-10
    • learning rate는 cosine annealing으로 5e-5에서 1e-5까지 감소함
  • decoder weight는 초기화 이후와 매 training step마다 unit norm으로 정규화됨
  • project_decoder_grads()는 decoder weight의 unit-norm 제약을 유지하기 위해 기존 dictionary vector와 평행한 gradient 성분을 제거함

학습 결과

  • SAE 학습은 8x Nvidia RTX4090에서 약 7일 동안 진행됐고, 안정적인 수렴을 보임
  • 최종 total normalized loss는 약 0.144에 도달함
  • validation loss는 학습 데이터의 5% held-out 구간에서 계산됐고, training loss와 유사한 로그 감소 패턴을 보임
  • warm-up 80,000 training steps 이후 약 40% latent가 dead로 식별됨
  • auxiliary loss는 dead latent를 빠르게 되살렸고, dead latent 비율은 빠르게 감소함
  • auxiliary loss는 dead latent가 최소 k_aux인 2,048개 이상일 때만 계산됨
    • 이 조건은 65,536개 latent 중 약 3%를 soft lower bound처럼 만들었음
    • 후반부에는 dead latent가 부족해 auxiliary loss가 자주 0이 됨
  • Anthropic과 OpenAI는 특정 구성에서 최대 65% dead latent를 보고했지만, 이 프로젝트는 더 작은 latent size와 auxiliary loss, gradient projection 조합에서 dead latent가 빠르게 줄어드는 결과를 보임
  • 향후 실험에서는 auxiliary loss 계산의 최소 dead latent 조건을 제거하면 dead latent를 더 줄일 가능성이 있다고 적혀 있음

해석 가능성 분석

  • 해석 분석은 Anthropic의 scaling monosemanticity 방법을 참고하지만, 단일 토큰이 아니라 문장 단위를 분석함
  • 각 latent에 대해 가장 강하게 활성화한 상위 50개 문장을 캡처함
  • activation strength는 문장 내 모든 토큰에 대해 두 가지 방식으로 집계됨
    • mean: 문장 전체에서 지속적으로 활성화되는 의미 주제를 찾기 위한 방식
    • last: 자기회귀 모델에서 전체 문장을 본 마지막 토큰 표현을 활용하기 위한 방식
  • 의미 분석에는 Claude 3.5, 구체적으로 claude-3-5-sonnet-20241022가 사용됨
  • 프롬프트는 50개 문장에 대해 다음 단계를 수행하도록 구성됨
    • 핵심 단어와 구문 식별
    • 주제 요소 그룹화
    • 잠재적 outlier 고려
    • confidence score가 포함된 최종 의미 해석 제공
  • 분석 파이프라인은 세 단계로 구현됨
    • 비용 효율적인 batch로 분석 요청 전송
    • 응답 수신
    • 의미 해석 파싱과 처리
  • 중간 산출물은 재현성과 추가 분석을 위해 보존됨
  • 예시로 latent #896은 “United Nations 기관, 인물, 운영, 공식 문서에 대한 형식적 기관 용어 참조”로 식별됨
    • 50개 중 50개 문장이 UN을 직접 참조함
    • UN, United Nations, Secretary-General, Special Rapporteur, UNDP, UNHCR, OCHA, UNODC 같은 용어가 포함됨
    • certainty는 1.0으로 산출됨
  • Claude 3.5 batch mode로 24,828,558 input tokens와 3,920,044 output tokens를 처리하는 데 $66.74가 들었음
  • 이 방식은 feature extraction과 잠재적 feature steering을 위한 초기 방법으로 선택됐으며, 결과 품질 측면에서 단순함의 비용이 있다고 적혀 있음

검증과 feature steering

  • 검증 인프라는 SAE가 모델 동작에 미치는 영향을 분석하고 검증하기 위한 세 가지 스크립트로 구성됨
    • llama_3_inference_chat_completion_test.py
    • llama_3_inference_text_completion_test.py
    • llama_3_inference_text_completion_gradio.py
  • 각 구현은 다음을 지원함
    • batched inference
    • 각 줄을 별도 batch element로 처리
    • temperature와 top-p 설정
    • 학습된 SAE 주입
    • feature activation 분석
    • feature steering
  • latent_index_meaning/의 semantic meaning과 certainty score는 feature activation 분석과 steering 실험의 기반으로 사용됨
  • 예시 prompt는 다음 네 개임
    • The delegates gathered at the
    • Foreign officials released a statement
    • Humanitarian staff coordinated their efforts
    • Senior diplomats met to discuss
  • 텍스트 완성 예시는 max_new_tokens=128, temperature=0.7, top_p=0.9, seed=42 설정으로 실행됨
  • feature steering 예시는 latent #896을 대상으로 함
    • h_bias를 통해 latent activation 값을 20 증가시킴
    • 모델의 텍스트 완성을 UN 관련 내용으로 유도할 수 있음
  • 첫 베타 버전의 feature steering은 강하지 않음
    • 예시에서도 두 번째와 세 번째 문장만 UN 관련 내용으로 전환됨
    • UN으로 이어질 가능성이 있는 시작 문장을 의도적으로 골랐음
    • For any n, if 2n - 1 is odd처럼 UN과 무관한 문장 시작에서는 실패할 것이라고 적혀 있음
  • 현재 해석 분석은 steering 최적화보다 feature extraction에 초점을 맞췄기 때문에 steering 결과는 일관적이지 않음
  • feature steering은 첫 릴리스에서 추가 시연 성격이며, feature extraction 자체가 모델 이해에 유용하다고 정리됨

향후 개선 방향

  • latent dimension을 최소 2^18, 즉 262,144개 feature로 늘리고 k를 32로 줄이는 실험이 제안됨
    • 더 많은 고유 feature를 발견하고 더 강한 sparsity를 유지하기 위한 방향임
    • 증가한 계산량은 효율 개선이나 gradient accumulation 같은 방식으로 상쇄해야 함
  • latent activation tracking을 더 체계화할 계획이 있음
    • 학습 중 latent_last_nonzero tensor 상태를 자주 기록하면 latent가 언제 활성화되거나 죽는지 더 깊게 볼 수 있음
  • sparse latent 공간의 co-activation pattern을 추적해 feature interaction을 분석하는 지원이 제안됨
  • 고활성 문장과 n-gram을 더 정교하게 그룹화하는 해석 분석 방식이 향후 과제로 제시됨
  • feature extraction뿐 아니라 feature steering 기반 해석 분석도 수행할 수 있음
  • Llama 3.1-8B activation으로 연구를 확장할 수 있음
    • Llama 3.2와 코드베이스를 공유하기 때문에 hyperparameter와 많은 compute power 조정이 주요 요구 사항임
  • activation capture 지점을 바꾸는 실험도 제안됨
    • 모델의 더 이른 레이어
    • transformer block 내부의 attention head output
    • MLP output
  • auxiliary loss 메커니즘을 추가 최적화할 수 있음
    • 현재 구현은 dead latent 방지에서 강한 성능을 보였고, 최소 dead latent threshold와 feature 품질의 관계를 조사할 수 있음
  • SAE architecture의 bias term과 main loss function 조정도 향후 실험 후보임
  • 코드베이스 전반의 docstring 추가가 필요함
    • inline documentation은 추가했지만, 첫 릴리스에서는 proper docstring을 넣을 시간이 없었다고 적혀 있음

댓글과 토론

Hacker News 의견들
  • 기계적 해석 가능성은 LLM에게 “왜 그렇게 답했는지” 물을 때 생기는 흔한 문제를 다룸. 모델의 자기 설명은 실제 이유라기보다 학습 데이터의 패턴을 바탕으로 그럴듯한 이유를 만들어 설득하는 수사 게임에 가까움
    모델이 강해질수록 거짓을 사후에 더 설득력 있게 정당화할 수 있어서, “비진실성”을 스스로 감지하는 테스트에서는 오히려 더 나빠질 때가 있음. 목표는 진실이 아니라 일관성임
    수사는 추론이 아니며, 과적합된 희소 오토인코더가 제공한다고 주장하는 진짜 설명 가능성은 모델이 답을 만들며 거친 “생각”의 인과적 흐름에 가까움

    • 사람도 비슷하게 행동함. 왜 그런 생각이나 행동을 했는지 모르는 경우가 많고, 나중에 그럴듯한 작화(confabulation) 로 설명을 만들어냄
    • 예술/AI가 삶을 모방하는 셈임. 인간의 추론도 먼저 빠르게 판단한 뒤, 그 믿음을 남에게 납득시키기 위해 이성을 쓰는 것일 수 있음
      추론을 사회적 영향력의 도구로 보는 논의가 있었고, 그래서 말 잘하는 사람이 틀렸다는 걸 인정하기 어려워하는 것도 설명됨. 보통 논쟁에서 남을 이겨왔기 때문임. X가 대표 사례로 떠오름
    • 기계적 해석 가능성 연구 중 상당수는 다른 종류의 주술처럼 보였음. 정수 양자 홀 효과라든가, 엄밀한 군 표현론이나 명확한 대칭 없이 “중첩”이라는 용어를 이상한 비유로 과적재하는 건 억지로 느껴짐. 논문은 다 읽어봤고, 돈 받기로 한 박사후연구원을 찾는 느낌도 듦
      다만 하나는 훌륭한 통찰이자 그럴듯한 연구 프로그램의 시작으로 인정함. 고차원의 유계 근직교 벡터 공간은 매우 반직관적이고, 이를 엄밀하게 다룰 기존 결과도 있음 https://en.m.wikipedia.org/wiki/Johnson%E2%80%93Lindenstraus...
    • 모델의 논리와 진실성은 쉽게 시험할 수 있음. 잘못된 결정을 모델이 내린 것처럼 주고 설명하라고 하면 됨
      모델은 기억이 없고 텍스트의 출처를 구분하지 못하므로, “진실한” 모델이라면 물어보지 않아도 실수를 인정해야 함. 실제로는 “자기” 결정을 뒷받침하려고 병렬 구성을 할 가능성이 큼
    • 인과성 부분은 어떻게 작동하는지 궁금함. 그래프 모형을 뱉어낼 수 있는 건가?
  • 놀랍고 문서화가 잘 된 작업임. 특히 손실 곡선과 죽은 잠재값 평가가 눈에 띔
    우리 팀도 SAE를 연구했는데, 개별 토큰이 아니라 논문 초록의 밀집 임베딩을 재구성하도록 학습했음 https://arxiv.org/abs/2408.00657
    희소성 수준과 SAE 잠재 공간의 차원을 바꿔도 손실 곡선 하한에서 멱법칙 스케일링을 관찰했고, 보조 손실로 죽은 잠재값을 완전히 완화할 수 있었음. 학습 반복 동안 부드러운 사인파 패턴도 보였는데, 초록 임베딩이라는 특정 적용 때문인지 더 일반적인 현상인지는 모르겠음

    • 문서화를 알아봐 줘서 특히 기쁨. 코드를 쓰는 것보다 문서 작성이 훨씬 어려웠고, 공유한 논문도 내려받았으니 내일 아침 읽어보겠음
  • 얼핏 보기에는 정렬에 긍정적인 작업으로 보이지만 세부 사항은 아직 확인하지 않았음. 가능하게 만들 수 있을지는 모르겠지만, 시간·비용·위험을 보상하려면 어느 정도를 지불해야 할지 궁금함

  • SAE 평가의 어려움을 다룬 글을 최근 읽었음: https://adamkarvonen.github.io/machine_learning/2024/06/11/s...
    이 문제를 어떻게 다뤘는지, 저장소에서 그 접근을 이해하려면 어디를 보면 되는지 궁금함

    • SAE 평가는 가능한 한 희소하면서도 가장 고유한 특징을 잘 만들어내는 SAE가 무엇인지 판단하는 문제라 매우 복잡하고, SAE를 통한 LLM 해석 가능성 연구의 핵심에 가까움
      완벽한 SAE 구조 여러 개를 찾고 완벽히 학습시키는 문제를 이미 해결했다고 가정해도, 어느 SAE가 더 나은지는 자동 해석 가능성 방법론의 지표에서 더 잘 수행하는지로 결정됨. 특히 OpenAI의 방법론은 많은 기술적 지표로 SAE를 점수화해 규모 있는 자동 해석 가능성을 강조함
      최적의 지표와 방법론 자체가 아직 열린 연구 질문이라 몇 달 더 실험할 수도 있었지만, 이번 첫 릴리스에서는 단순한 접근을 택했음. 구현 세부사항과 결과의 4장 Interpretability Analysis에서 내 방법론과 OpenAI 방법론의 차이를 다룸 https://github.com/PaulPauls/llama3_interpretability_sae#4-i...
      OpenAI 논문을 직접 읽거나 Anthropic의 transformer-circuits.pub도 추천함 https://transformer-circuits.pub/
  • 이 작업은 내려갔고 저장소도 아카이브됨. 무슨 일이 있었는지 설명은 없음

  • 정말 멋진 작업임. SAELens와 통합할 계획이 있는지 궁금함

    • 아직은 잘 모르겠음. 고려는 해보겠지만, 다음 주에 방향과 다음에 할 일을 다시 정리할 생각임
      더 단순한 프로젝트로, 현재 Llama 3.2 구현의 전체 모델을 순수 PyTorch로 처음부터 만드는 방법을 보여줄 수도 있음. 바닥부터 만드는 걸 좋아하는데, 이 SAE 프로젝트의 Llama 3.2 배경 섹션 문서를 찾다 보니 기존 문서는 너무 피상적이거나 Llama 1/2용으로 오래된 경우가 많았음. 요즘 기계학습 문서는 너무 빨리 낡아짐
  • 기계적 해석 가능성에 대해 엉뚱한 질문이 있음. 인간을 어떤 지표로 측정하면 인간은 그 지표를 공략하는데, 미래 AI도 기계적 해석 가능성을 공략할 수 있지 않을까 궁금함
    설명을 쉽게 하려고 토큰을 2차원 행렬에 인코딩한다고 가정해보면, Apple=1a, Pear=1b, Donkey=2a, Horse=2b처럼 매핑될 때 뉴런 1,2,a,b가 모두 활성화된 것이 apple+horse인지 donkey+pear인지 이해하기 어려워짐
    훨씬 유능한 미래 AI가 자기 학습을 감독한다면 이런 인코딩 충돌 가능성이 남도록 가중치를 선택해, 기계적 해석 관찰자를 속이고 사실상 완곡어법으로 사고할 수 있지 않을까?

    • 그건 더 어려운 AI 안전성 시나리오임. 이런 잠재 문제를 만들기 위해 꼭 “자기 학습을 감독하는 훨씬 유능한 AI”가 필요한 건 아니고, 악의적 AI 연구자만 있어도 됨
      예를 들어 인종차별적이지만 인종차별에 해당한다고 식별 가능한 해석 가능 활성 패턴은 없는 모델을 찾을 수 있음. 이 Show HN의 작업은 충분히 자금이 있는 개인도 이런 적대적 학습을 간신히 시도할 수 있음을 시사하고, 새로운 결과가 나온다면 꽤 흥미로울 것 같음
  • 더 많은 공개 SAE 작업을 보게 되어 정말 반가움. 공학적 노력도 만만치 않아 보이고, 내일 데이터 로딩 코드를 살펴볼 예정임
    비전 모델에서 SAE를 학습시키는 진행 중인 내 프로젝트도 관심 있을 수 있음: https://github.com/samuelstevens/saev

  • Golden Gate Bridge 잠재값을 찾아서 Golden Gate Llama 3.2를 HuggingFace에 올리면 더 많은 관심과 호응을 받을 것 같음
    대화할 수 있는 Space 링크까지 포함하면 더 좋음. 그리고 요청한 건 아니지만 README 맨 위에 흥미로운 결과나 시각화를 올리는 건 아주 좋은 아이디어임