HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
💻
UGRP
/7월 5주차 정기미팅/
소주만들기 : 언어 모델 증류와 합성 데이터 리파인

소주만들기 : 언어 모델 증류와 합성 데이터 리파인

증류기법이 왜 나오게 되었으며 필요성은?

  • 거대 언어의 시대 도래 : 2017년 BERT가 나온 후 2020년 GPT가 나오게 됨
    • 사용되는 알고리즘은 바뀐게 없지만 size가 커짐
    • 의도한게 아닌 발견에 의해(context learning) 여러가지 기능이 나옴
  • 창발현상
    • 모델이 커지면 어느 시점부터 등장
    • 대표적인 창발현상 : in-context learning
  • 스케일 전쟁의 시작
    • GPT3 → LaMDA → pathways → Chat GPT → GPT4 → Claude Sonnet
    • Claude Sonnet의 경우 역으로 어떤 뉴런이 사용되는지 연구한 것(관련있는 data, 관련없는 data를 넣었을 때 두 집단 사이의 뉴런 차이를 통해 어떤 뉴런이 사용되는지 연구)
  • 문제 : 연산자원의 부족
    • 단위 연산 자원당 비용 감소
    • 돈으로 해결…→ 규모의 투조가 다른 모든 요소를 압도
    • 돈으로도 안되는 문제 발생 → 토큰(데이터)가 부족! 이미 인터넷에 있는 데이터를 대부분 긁어와서 사용함.. → 대안 : 합성 데이터 생성(ex, Gemma2 스몰 모델 : 큰 모델에서 생성된 데이터로 훈련), Student-Teacher 모델(큰 모델을 만들어 임의의 데이터를 넣고 그에 대한 출력값으로 데이터셋 생성, 훨씬 작은 모델들의 앙상블을 만들고 앙상블을 훈련시켜 가장작은 모델 선택)
      • 큰 모델을 만든 다음에 작은 모델에 합성 데이터들을 왕창 집어넣어서 성능을 유사하게 만드는 것을 ‘증류’라고 함
  • 그럼 문제가 무엇일까?
    • 문제 : 모델 열화
      • 우로보로스 문제 : 할로지네이션으로 학습된 모델은 더 큰 할로지네이션
      • 모델에서 만들어진 데이터로 모델을 훈련하면 성능 열화가 방생
      • .임시 해결책 : 훤씬 더 크고 성능이 좋은 모델을 사용하여 데이터 품질을 개선
        • NeMoTron, Llama 3.1
          • 두 모델 모두 “데이터 생성 활용”을 주 용도로 내세움 …서비스하긴 너무 크니까
  • 태깅이 없는 데이터를 어떻게 훈련에 사용할까? → 문장 : 데이터의 구조만으로도 훈련이 됨
 

Project : Soju maker

  • 동기 : LLM을 학습하여면 고품질의 잘 구조화된 데이터가 필요.
    • But, 현재 인터넷 아카이브에 기반한 한국어 말뭉치에는 관고, 스팸, 전화번화 같은 가비지 정보 다수 포함
  • 알고리즘 및 모델 : Gemma의 강력한 한국어 토큰화기를 원용하여 한국어 데이터 정제 모델로 사용해보자!
  • 목표 : TensorRT-LLM 과 Backend.AI를 사용하여 test
  • Gemma : 구글의 개방형 LLM/ VLM 모델, 로컬 서버 및 구글 클라우드를 통해 사용 가능
    • 세가지 모델 유형 : Gemma, PaliGemma(VLM), Recurrent Gemma(Non-transformer 구조)
    • 장점 : Gemma와 토크나이저를 공유 → 한국어 지우너 개선 : 늘어난 토큰의 상당부분이 한국어에 할당됨
  • Soju 프로젝트의 목표 : 쓰레기 데이터를 넣어서 멀쩡한 데이터를 뽑아내자!
    • 필요한 것 : LLM학습에는 고품질의 잘 구조화된 데이터 필요
    • 문제 : 너무 데이터가 쓰레기라 맛이 간 모델이 나왔음
    • 어떻게 개선 ? : 고급 데이터 정제기술 사용, 원시 말뭉치 정제,
      • 데이터증류
        • 공개된 데이터셋을 사용 : HPLT
        • Awesome-Korean-Dataset 소스로도 테스트
        • Few-shot learning
        • 문제 : 토큰 생성 속도를 올려야함
          • 해결책 : 프로파일링
            • nsight profiling log를 찍어서 모든 인스트럭션의 실행타이밍 추적
            • 배치 →큰 영향을 미침 because 다른 데이터가 들어올떄까지 기다려서 한번에 보내는데 딜레이가 발생하는 등 문제가 있을 수 있기에 : 기존엔 in-flight batching이 없었음, medusa 켜기..