MaskLLM

MaskLLM

NVIDIA Research · 코딩 · 기타

MaskLLM은 N:M 희소 마스크를 학습해 대규모 언어 모델을 줄이는 NVIDIA Research의 오픈소스 프루닝 기법이다. 추론 비용을 낮추면서 정확도는 원본 모델 가까이에 유지한다.

MaskLLM 미리보기

MaskLLM 소개

What Is MaskLLM

MaskLLM은 대규모 언어 모델을 압축하는 연구 기법이다. 모델에 필요 없는 파라미터를 걷어내는 프루닝 도구의 하나이며, 반구조적 희소성, 즉 N:M 희소성을 쓴다. 원리는 단순하다. 연속한 M개 가중치 묶음마다 N개만 남긴다. 2:4 패턴은 가중치 네 개 중 두 개를 지키므로 하드웨어가 옮겨야 할 데이터 양이 절반으로 준다.

MaskLLM의 차이는 어떤 가중치를 남길지 정하는 방식에 있다. 기존 기법은 고정 규칙에 기댄다. 작은 가중치를 버리거나 통계로 추정하는 식이다. MaskLLM은 마스크 선택 자체를 모델이 배우는 대상으로 다룬다. N:M 패턴을 확률 분포로 모델링하고 Gumbel Softmax라는 샘플링 기법으로 학습하므로, 큰 데이터셋에서 더 나은 마스크를 찾는다. 마스크를 배우는 동안 가중치는 얼어 있다. 이 점이 특정 작업에서 2:4 희소성을 "무손실"로 만든다.

실용적인 매력은 숫자에 있다. NVIDIA에 따르면 밀집한 LLaMA-2 7B 모델은 Wikitext에서 perplexity 5.12를 기록한다. 기존 프루닝 기법은 이 값을 10 이상으로 밀어 올렸다. MaskLLM은 가중치를 얼린 채 마스크만 학습해 6.72에서 6.78로 낮춘다. 프로젝트는 NVIDIA 라이선스 아래 오픈소스로 공개됐고, 연구자와 엔지니어가 직접 실행할 수 있다. 다만 실제 GPU 하드웨어와 머신러닝 지식은 필요하다.

Getting Started

  1. Python 패키지를 설치하고, 계산된 마스크를 Hugging Face에서 받는 스크립트를 실행한다
  2. LLaMA-2 7B나 LLaMA-3 8B 같은 목표 모델을 PyTorch로 불러온다
  3. 받은 마스크를 적용하고, 함께 제공되는 perplexity 스크립트로 정확도를 잰다
  4. 직접 학습하려면 Megatron-LM 환경을 세우고 데이터를 준비해 자기 영역용 마스크를 새로 학습한다

제품 정보

MaskLLM의 요금, 지원 플랫폼, 성능을 한눈에 확인해 보세요.

무료 플랜예
유료 플랜Free (open-source)
플랫폼Python, PyTorch, Hugging Face Transformers, Megatron-LM, NVIDIA GPUs
개발사NVIDIA Research
카테고리코딩 · 기타
출시일Sep 2024
최근 업데이트Dec 2024
웹사이트 방문 수N/A
웹사이트 글로벌 순위N/A
API 제공 여부아니요

추천 대상

이 도구가 가장 잘 맞는 사용자, 작업, 상황입니다.

사용자

  • 머신러닝 연구자
  • 모델을 배포하는 ML 엔지니어
  • 대학원생과 학계 연구자
  • 프레임워크와 도구 개발자

작업

  • 대규모 언어 모델 프루닝
  • 일회성 압축
  • 영역 특화 희소성
  • 희소성 전이
  • 프루닝 기법 비교

활용 상황

  • GPU가 적은데 7B 모델을 돌리는 팀
  • 논문 수치를 재현해야 하는 연구
  • 전체는 괜찮지만 틈새 영역에서 흔들리는 모델
  • 모델 패밀리용 압축 파이프라인 구축
  • 라이선스나 프라이버시 제약 검토

주요 기능

학습 가능한 N:M 마스크

MaskLLM은 각 가중치를 손으로 평가하는 대신 마스크 자체를 학습한다. 유효한 N:M 패턴 집합을 분포로 다루고 학습 중에 표본을 뽑으므로, 모델은 데이터셋에 가장 알맞은 마스크로 수렴한다. 이 학습 단계가 마스크를 한 번 고르고 끝내는 일회성 방식과 근본적으로 다른 점이다.

Gumbel Softmax 샘플링

이 기법은 이산 샘플링 기술을 빌려 마스크 선택을 엔드투엔드로 학습 가능하게 만든다. Gumbel Softmax는 본래 흑백으로 갈리는 딱딱한 선택에 그래디언트를 통과시킨다. 그래서 N:M 마스크 위의 분포를 추정이 아니라 실제 데이터로 최적화할 수 있다.

Hugging Face 모델용 계산된 마스크

프로젝트에는 바로 쓸 수 있는 마스크가 들어 있어 학습 없이도 시험해 볼 수 있다. LLaMA-2 7B, LLaMA-3 8B, LLaMA-3.1 8B용 마스크가 공개됐고, 각각 C4의 일부로 학습됐다. 스크립트가 Hugging Face에서 내려받아 평가용으로 공식 모델에 적용한다.

반구조적 2:4 희소성

MaskLLM이 겨냥하는 것은 N:M 희소성, 대개 연속한 가중치 네 개에 0이 아닌 값 두 개를 남기는 2:4 패턴이다. 이 형식이 중요한 이유는 하드웨어 가속에 맞아떨어지기 때문이다. 작아진 모델은 자리만 덜 차지하는 게 아니라, 알맞은 GPU에서는 더 빠르게 돌아간다.

희소 패턴의 마스크 전이

마스크를 배우는 같은 확률 모델이 마스크를 한 영역에서 다른 영역으로 옮긴다. 마스크 분포를 한 번 학습하면 새 작업이나 데이터셋으로 옮길 때 드는 품이 처음부터 시작하는 것보다 적다. 저자들은 이를 전이성이라 부른다. 모델을 여러 상황에서 예리하게 유지해야 할 때 도움이 된다.

Megatron-LM 학습 파이프라인

본격적인 학습을 위해 LLaMA 모델을 여러 GPU에 나누는 Megatron-LM 워크플로가 함께 제공된다. 리포지터리에는 체크포인트 변환, 데이터 토큰화, SparseGPT나 Wanda, 크기 기반 프루닝으로 사전 마스크 생성, 마스크 학습, 공개 전 체크포인트 깎기까지 처리하는 스크립트가 있다.

장단점

장점

  • 고정된 중요도 규칙에 기대지 않고 데이터에서 마스크를 학습해 같은 희소율에서 정확도가 올라간다
  • 코드, 가중치, 계산된 마스크를 오픈 라이선스로 공개해 결과를 재현할 수 있다
  • 전이 학습을 지원해 하나의 마스크 분포를 여러 작업과 영역에 재사용한다
  • Hugging Face와 Megatron-LM을 통해 LLaMA-2, LLaMA-3, LLaMA-3.1 같은 주요 모델에서 돈다
  • 가중치를 얼려 두므로 학습한 2:4 희소성은 조정한 작업에 대해 무손실이다

단점

  • 새 마스크 학습에는 멀티 GPU 장비가 필요하고, 리포지터리는 본격 실행에서 GPU당 약 40GB 메모리를 제시한다
  • 연구 산출물이지 제품이 아니어서 지원 창구도, 호스팅 서비스도, API도 없다
  • 기본 제공 마스크는 몇몇 LLaMA 모델용이라 다른 아키텍처는 직접 학습해야 한다
  • 효과는 2:4 가속을 지원하는 하드웨어에서 나므로 구형이나 NVIDIA가 아닌 GPU에서는 이득이 제한적이다

자주 묻는 질문

MaskLLM은 대규모 언어 모델에 N:M 희소성을 더하는 학습형 프루닝 기법이다. 각 가중치를 평가하는 대신 마스크를 확률 분포로 모델링해 남길 가중치를 학습한다. NVIDIA Research가 NeurIPS 2024에서 발표했고, MaskLLM 코드는 GitHub에 공개돼 있다.