Skip to content

About

Personal research: retrain only the MTP head of EXAONE-4.5-33B on its own outputs so MTP speculative decoding also speeds up non-thinking requests (vLLM). Not affiliated with LG AI Research.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

EXAONE 4.5 MTP self-distillation

English | 한국어

고지. 이 저장소는 개인 연구입니다. EXAONE의 공식 파생물이 아니며, LG AI연구원 및 작성자의 소속 기관과 관계가 없습니다. EXAONE 가중치, 생성 데이터, AI Hub 데이터는 들어 있지 않습니다.

EXAONE-4.5-33B의 MTP(multi-token prediction) 헤드는 추론 모드에서는 수용률이 30% 안팎이지만, 추론을 끈 요청에서는 1% 아래로 떨어집니다. 그래서 비추론 요청에 MTP 추측 디코딩을 켜면 오히려 느려집니다. 이 저장소는 본체를 고정하고 MTP 헤드만 모델 자신의 답변으로 다시 학습해 이 문제를 고친 과정을 재현하는 코드입니다.

분석 과정과 결과는 블로그 글 EXAONE 4.5 MTP 수용률을 뜯어보았다에 정리했습니다.

결과

vLLM v0.31.0, EXAONE-4.5-33B-FP8, MTP 드래프트 3개, 자연 프롬프트 5개 × 2회 평균, 최대 400토큰입니다.

RTX PRO 6000 MTP 없음 원래 MTP 새 MTP
비추론 tok/s (배수) 36.7 31.0 (0.85×) 61.3 (1.67×)
비추론 수용률 - 0.8% 33.7%
추론 tok/s (배수) 36.7 55.4 (1.51×) 54.5 (1.49×)
추론 수용률 - 28.3% 27.2%

비추론 요청은 원래 MTP보다 약 2배, MTP 없음보다 1.67배 빨라졌습니다. 추론 요청은 원래 MTP와 거의 같고, 수용률은 1.1%p 낮습니다. GB10에서 세 구성을 같은 날 같은 조건으로 다시 잰 결과도 같은 경향이었습니다(비추론 0.85× → 1.64×, 추론 수용률 29.7% → 29.2%, 검증 기록).

측정 원자료는 results/에 있습니다. GB10에서의 값과 오프라인 지표는 재현 절차에 있습니다.

무엇을 하는가

  1. 공개 대화·지시 데이터셋과 AI Hub 271에서 프롬프트 14,737개를 고정된 규칙으로 뽑습니다.
  2. EXAONE 본체(vLLM 서빙)로 그중 4,464개에 답하게 하고 토큰 id를 저장합니다. 추론 모드 약 20%, 시스템 프롬프트를 일부 섞습니다.
  3. 본체 33B를 고정한 채 MTP 모듈(디코더 레이어 1개와 입력 projection, 약 5.4억 파라미터)만 학습합니다. 손실은 본체의 다음 토큰 분포와 MTP 예측 사이의 KL입니다. vLLM이 드래프트 3개를 재귀로 만드는 것과 같은 방식으로 3단계를 이어서 학습합니다.
  4. 원본 체크포인트에서 mtp.* 텐서만 바꿔 넣은 서빙 디렉터리를 만듭니다. vLLM 코드는 바꾸지 않습니다.
  5. 같은 프롬프트로 MTP 없음 / 원래 MTP / 새 MTP를 측정합니다.

빠른 시작

git clone https://github.com/gnu-gnu/exaone45-mtp-selfdistill && cd exaone45-mtp-selfdistill
cp .env.example .env && chmod 600 .env      # 경로, AI Hub 키, GPU·서버 연결 정보 입력
scripts/00_check.sh
scripts/01_download.sh                       # 원본 데이터 (고정 리비전, 체크섬 확인)
scripts/02_prompts.sh                        # 프롬프트 (게시한 실행과 바이트 단위로 같은지 확인)
scripts/03_generate.sh all                   # 자기 생성 답변
scripts/04_train.sh stage1 && scripts/04_train.sh stage2
scripts/05_overlay.sh stage2
scripts/serve.sh up mtp work/serve/stage2 && scripts/bench.sh stage2 all
  • 설정 가이드: .env에 넣는 값. AI Hub 신청과 키, GPU 지정, 원격 vLLM 서버 연결, GB10 메모리 설정이 있습니다.
  • 재현 절차: 단계별 소요 시간과 각 단계에서 기대하는 결과가 있습니다.
  • 공개 전 검증 기록: 깨끗한 클론에서 무엇을 어디까지 확인했는지 적었습니다.

저장소 구성

경로 내용
src/build_prompts.py, src/add_ko_prompts.py, src/emodial_to_jsonl.py 프롬프트 선별
src/gen_client.py vLLM OpenAI 호환 API로 답변 토큰 id 수집 (이어서 실행 가능)
src/train_mtp.py MTP 헤드 학습·평가. --regime(추론/비추론 대조), --diag, --simulate 분석 포함
src/build_overlay.py mtp.* 텐서만 교체한 서빙 디렉터리 생성
scripts/ 단계별 실행 스크립트. 설정은 모두 .env에서 읽습니다.
bench/ 측정 프롬프트와 입력 문서
data/SHA256SUMS.* 원본 데이터와 프롬프트 파일의 기대 체크섬
results/ 블로그 글에 실은 측정 원자료 (CSV)

라이선스와 사용 조건

  • 이 저장소의 코드는 Apache License 2.0입니다. 제3자 자료는 NOTICE를 참고해 주세요.
  • EXAONE 모델은 포함하지 않습니다. 사용하려면 EXAONE AI Model License Agreement 1.2 - NC에 따라 각자 받아야 합니다.
  • 이 코드로 만든 MTP 가중치는 그 라이선스의 파생물(Derivatives)에 해당합니다. 연구·교육 목적으로만 쓸 수 있고, 배포할 때는 라이선스 사본을 함께 두고 이름을 "EXAONE"으로 시작해야 합니다.
  • 생성한 답변 데이터는 라이선스의 Output에 해당합니다. 상업적 목적이나 LG의 모델과 경쟁하는 모델을 개발·개선하는 데 쓸 수 없습니다(3.1조).
  • 프롬프트 원본은 각 데이터셋의 라이선스를 따릅니다. AI Hub 데이터는 재배포할 수 없어 각자 신청해 받아야 합니다.

결과를 인용할 때는 사용한 모델을 함께 밝혀 주세요: EXAONE-4.5-33B-FP8, LG AI Research.

Generated by Geunwoo Shim ([email protected])

About

Personal research: retrain only the MTP head of EXAONE-4.5-33B on its own outputs so MTP speculative decoding also speeds up non-thinking requests (vLLM). Not affiliated with LG AI Research.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages