1P by GN⁺ | ★ favorite | 댓글 1개
  • LLM은 토크나이저 생성과 모델 학습이 분리되어 있어, _SolidGoldMagikarp 같은 특정 토큰이 예상 밖 동작을 만들 수 있음
  • 문제의 핵심은 토크나이저 어휘에는 있지만 학습 중 거의 또는 전혀 보이지 않은 under-trained tokens이며, 흔히 ‘glitch tokens’로 불림
  • 연구는 토크나이저 분석, 모델 임베딩 가중치 지표, 프롬프팅 기법을 결합해 이런 토큰을 자동으로 찾는 방법을 제안함
  • 이런 토큰은 고정 크기 토크나이저의 어휘 용량을 낭비하고, 입력·출력 길이와 추론 비용, 환각이나 깨진 출력에 영향을 줄 수 있음
  • 외부 데이터를 검색·처리하는 도구 사용 및 에이전트 환경에서는 under-trained 토큰 탐지와 정제가 배포 모델의 안전성과 견고성에 직접 연결됨

토크나이저와 모델 학습의 불일치

  • 대부분의 LLM 구성 요소는 대규모 데이터에서 비지도 방식으로 학습되지만, 토크나이저는 보통 별도 알고리듬과 더 작은 데이터셋으로 따로 학습됨
  • GPT-2는 현재 Transformer 기반 언어 모델링의 많은 기반을 만들었고, byte-pair encoding(BPE)에 기반한 토큰화 프레임워크도 널리 채택됨
  • BPE 토큰화는 입력 텍스트를 부분 단어 토큰 시퀀스로 바꾸며, 고정된 병합 규칙에 따라 인접한 두 토큰을 반복적으로 병합함
  • 병합 규칙은 LLM 학습 데이터와 대표성이 맞아야 하는 더 작은 데이터셋에서 탐욕적 학습 알고리듬으로 학습됨

Glitch token이 생기는 구조

  • 토크나이저와 모델 학습이 분리되면, 일부 토큰이 모델 학습 중 거의 또는 전혀 등장하지 않는 상태가 생길 수 있음
  • 이런 토큰이 입력에 포함되면 환각이나 깨진 출력 같은 예기치 않은 동작을 유발할 수 있음
  • 연구는 이런 토큰을 under-trained tokens 또는 untrained tokens라고 구분함
    • untrained는 특정 토큰이 모델 학습 데이터에서 등장하지 않았다는 명확한 징후가 있을 때만 사용함
    • 일반적으로는 ‘glitch tokens’라는 이름으로도 불림
  • 대표 사례로 _SolidGoldMagikarp 토큰이 언급됨

기존 토큰화 방식의 한계와 대안

  • 최근 연구는 토큰화를 없애고 원시 바이트 입력으로 이동하는 방식도 다뤘지만, 이 선택은 보통 추론 속도 비용이 큼
  • 속도 비용은 초기·최종 레이어의 특수 아키텍처나 중간 레이어의 가변 계산으로 보완될 수 있음
  • 이런 방식은 아직 널리 채택되지 않았고, 현대 모델 대부분은 여전히 부분 단어 토큰화에 의존함
  • BPE의 주요 대안은 Unigram 방식이지만, BPE보다 낫다는 연구가 있음에도 일반적으로 많이 쓰이지 않음

Under-trained 토큰의 실질적 문제

  • under-trained 토큰은 고정 크기 토크나이저에서 더 자주 등장하는 토큰이 쓸 수 있는 어휘 용량을 차지함
    • 이는 평균 입력·출력 길이와 추론 비용을 줄일 기회를 놓치게 할 수 있음
  • 이런 토큰이 입력 데이터에 의도적으로 또는 우연히 포함되면 원치 않는 모델 출력을 만들고 다운스트림 애플리케이션을 깨뜨릴 수 있음
  • LLM의 도구 사용과 에이전트가 외부 데이터를 검색·처리하는 상황이 늘면서, 예상치 못한 입력이나 악의적 입력에 대한 견고성이 더 중요해짐
  • 모델이 학습 분포 밖으로 밀려나면, 이런 토큰이 가드레일 우회에 악용될 가능성도 있음

자동 탐지 접근과 공개 도구

  • 기존에도 모델과 토크나이저 분석으로 이런 토큰을 찾으려는 작업은 있었지만, 다양한 모델에서 일관되게 작동하는 신뢰할 수 있는 자동화 방법은 부족했음
  • 연구는 문제 토큰을 식별하기 위해 세 가지 방법을 결합함
    • 토크나이저 분석
    • 모델 임베딩 가중치 기반 지표
    • 프롬프팅 기법
  • 이 방법들은 인기 있고 최근 공개된 여러 공개 가중치 모델에 적용됐으며, 비공개 모델로 확장하는 방법도 간단히 탐색함
  • Hugging Face 모델과 호환되는 일반 분석 도구와 모델별 상세 결과도 공개됨

댓글과 토론

Hacker News 의견들
  • 1년 전 Computerphile의 글리치 토큰 영상이 좋았음: https://www.youtube.com/watch?v=WO2X3oZEJOA

    • 이 영상이 어쩐지 논문 사전공개본보다 더 흥미로워 보임
  • 훈련이 부족한 토큰만 찾을 게 아니라, 토큰은 사실상 신경망의 첫 번째 층이므로 다른 모든 층의 모든 가중치에서도 훈련 데이터 불균형을 찾아야 함
    그런 가중치를 찾으면 데이터가 거의 흐르지 않는 가중치는 삭제하는 편이 좋을 수 있고, 그러면 모델이 더 작아지거나 일반화에 도움이 될 수 있음

    • 모델 증류가 이걸 한다고 봄. SparseGPT가 큰 사례였고, 기억이 맞다면 정확도를 크게 잃지 않고 매개변수 50%를 제거했음
      최근 논문 중 SparseGPT를 인용하면서 희소성을 70~80% 정도까지 달성한 것도 봤는데 꽤 인상적이었음
    • “데이터가 거의 흐르지 않는 가중치를 삭제”하는 게 희소 신경망의 아이디어 아닌가?
    • 이미 정칙 모델은 압축하거나 병합할 수 있음
  • 캐나다 회사 모델에 하키와 관련된 훈련 부족 토큰이 들어 있었다는 게 믿기 어렵긴 함, 독일어였다고 해도 그렇다
    농담은 접고, 꽤 멋진 내용이고 토큰화가 모델에 미치는 영향에 대한 이해가 더 좋아지는 게 기대됨. 특히 초기 오픈소스 모델 상당수가 캐리지 리턴에서 문제를 겪는다는 발견이 눈에 띄는데, 데이터 출처에 따라 캐리지 리턴은 그리 드물지 않게 들어올 수 있음

  • 가중치 상관 행렬의 스펙트럼 밀도를 이용하는, 무작위 행렬 이론 기반 훈련 진단법이 있음
    각 층의 스펙트럼 밀도를 절단된 멱법칙에 맞추고, 멱법칙 지수 알파가 2보다 약간 크면 제대로 훈련된 것으로 판단함
    https://jmlr.org/beta/papers/v22/20-410.html

  • 해법은 그냥 토크나이저를 LLM과 같은 말뭉치로 훈련하는 것 아닌가? 토크나이저 재사용이 왜 이렇게 흔한지 잘 모르겠음. 아는 사람 있나?

    • 다른 사람들이 말한 것에 더해, 토크나이저를 훈련 데이터셋과 정확히 같게 훈련할 수 있어도 이런 문제가 전부 사라지지는 않음
      BPE 방식에서는 어떤 토큰이 다른 토큰과 병합되면서 매우 드문 토큰이 생길 수 있음. 토큰 X와 Y가 있고 거의 모든 X 뒤에 Y가 온다고 하면, BPE 과정은 새 토큰 XY를 만들지만 기존 토큰 X를 제거하지 않아서 X가 훈련 부족 상태가 됨
      이걸 해결하려면 탐욕적 병합보다 더 정교한 병합 알고리즘이 필요할 듯함
    • 토크나이저를 재사용하는 이유는 두 가지가 떠오름
      첫째, 처음부터 시작하지 않고 모델의 사전훈련을 이어가려는 경우임. 다만 새 토크나이저로 훈련하더라도 모델 가중치를 꽤 쉽게 재사용할 수 있다는 걸 모르는 사람이 있을 수 있음. 그 방법을 다룬 글을 썼음: https://umarbutler.com/how-to-reuse-model-weights-when-train...
      둘째, 최종 사용자에게 편리함. 아주 큰 말뭉치를 토큰화하고 청크로 나누는 데는 시간이 오래 걸릴 수 있고, GPT2 토크나이저로 한 번 처리한 뒤 같은 데이터로 여러 모델을 훈련할 수 있으면 전부 다시 토큰화하지 않아도 돼서 좋음
    • 초록을 보면, 이런 기법은 말뭉치에 접근할 수 없을 때 유용해 보임. 예를 들어 오픈소스 가중치는 내려받을 수 있지만 말뭉치가 비공개인 경우임
      그렇지 않다면 말뭉치의 통계 표본에서 토큰 히스토그램을 계산하면 되지 않나 싶음
    • 보통은 토크나이저와 LLM에 같은 말뭉치를 쓰려고 시작하지만, 토크나이저를 훈련한 뒤 LLM을 테스트하는 과정에서 말뭉치 일부가 쓸모없는 잡동사니라는 걸 발견하게 됨
      counting subreddit에서 노력한 SolidGoldMagikarp에게 악의는 없지만, 그런 부분은 이후 훈련에서 제외됨. 그런데 그 시점에는 토크나이저가 이미 API의 일부가 되어 있어서 새 버전으로 바꾸면 다른 것들이 깨지고, 결국 불필요한 토큰이 어휘에 남게 됨
    • 가능은 하지만, 말뭉치가 아주 크면 현실적으로 어렵다
  • 논문 제목이 정말 훌륭함

    • 전체 제목은 “Fishing for Magikarp: Automatically Detecting Under-trained Tokens in Large Language Models”임