본문 바로가기

인공지능

GPT-OSS로 열리는 차세대 LLM 세계: Transformers 업그레이드 총정리

728x90
반응형
728x170

최근 OpenAI에서 GPT-OSS 시리즈 모델을 공개했습니다. 이번 릴리스는 단순한 모델 공개가 아니라, 대규모 언어 모델(LLM)을 훨씬 더 효율적으로 활용할 수 있도록 Transformers 라이브러리에 다양한 핵심 기능이 추가된 것이 특징입니다.

이 글에서는 GPT-OSS 모델과 함께 제공된 커널 최적화, 양자화, 병렬화 기술, 캐시 최적화, 배치 처리 개선 등 최신 기능들을 정리하고, 이를 통해 어떻게 더 빠르고, 더 적은 자원으로, 더 큰 모델을 다룰 수 있는지 살펴보겠습니다.

반응형

GPT-OSS의 핵심 특징

  • Zero-build 커널: 허브에서 커널을 바로 다운로드해 즉시 사용 가능
  • MXFP4 양자화: 4비트 부동소수점 방식으로 대규모 모델을 단일 GPU에서도 실행 가능
  • Tensor Parallelism & Expert Parallelism: 모델 파라미터와 MoE(혼합 전문가) 레이어를 GPU 여러 대에 분산 처리
  • Dynamic Sliding Window & Cache: 긴 문맥에서도 메모리를 절반 수준으로 절약
  • Continuous Batching & Paged Attention: 더 빠르고 효율적인 배치 기반 추론
  • 모델 로딩 최적화: 대규모 모델을 GPU 메모리에 더 빠르게 적재

Zero-build 커널

대규모 언어 모델은 행렬 곱셈이나 어텐션 연산 같은 무거운 연산을 반복적으로 수행합니다. 이를 최적화하기 위해 Flash Attention, RMSNorm, MoE 전용 커널 등 다양한 커스텀 커널이 존재하지만, 기존에는 별도의 설치와 빌드 과정이 필요했습니다.

GPT-OSS에서는 허브에서 사전 빌드된 바이너리를 다운로드해 즉시 사용할 수 있게 했습니다. 모델을 로드할 때 use_kernels=True 옵션을 주면 자동으로 최적 커널이 선택됩니다.

from transformers import AutoTokenizer, AutoModelForCausalLM

model_id = "openai/gpt-oss-20b"
tokenizer = AutoTokenizer.from_pretrained(model_id)

model = AutoModelForCausalLM.from_pretrained(
    model_id,
    dtype="auto",
    device_map="auto",
    use_kernels=True,
)

MXFP4 양자화

LLM 실행에서 가장 큰 문제는 메모리 부족입니다. GPT-OSS는 새로운 MXFP4(4비트 부동소수점) 양자화를 도입해 VRAM 사용량을 크게 줄였습니다.

예를 들어 GPT-OSS 20B 모델은 약 16GB VRAM, GPT-OSS 120B 모델은 약 80GB VRAM으로 실행할 수 있습니다. 즉, 단일 GPU에서도 초대형 모델을 실행할 수 있게 된 것입니다.

from transformers import GptOssConfig

cfg = GptOssConfig.from_pretrained("openai/gpt-oss-120b")
print(cfg.quantization_config)
# 출력 예시: {'quant_method': 'mxfp4'}

GPU가 MXFP4를 지원하지 않으면 자동으로 bfloat16 등 더 높은 정밀도의 경로로 전환됩니다.


Tensor Parallelism과 Expert Parallelism

Tensor Parallelism (TP)

텐서를 여러 GPU에 나눠 계산하는 방식입니다. 긴 시퀀스나 큰 배치에서 처리 속도를 높이고 메모리 사용을 최적화할 수 있습니다.

from transformers import GptOssForCausalLM

model = GptOssForCausalLM.from_pretrained(
    "openai/gpt-oss-120b",
    tp_plan="auto",
    dtype="auto",
).eval()

Expert Parallelism (EP)

MoE 모델에서 전문가 레이어를 여러 GPU에 분산시키는 방식입니다. 입력된 토큰에 따라 필요한 전문가만 실행되므로 자원을 더 효율적으로 사용할 수 있습니다.

from transformers.distributed import DistributedConfig

model = GptOssForCausalLM.from_pretrained(
    "openai/gpt-oss-120b",
    distributed_config=DistributedConfig(enable_expert_parallel=True),
    dtype="auto",
).eval()

TP와 EP를 함께 사용하면 대규모 MoE 모델도 효율적으로 분산 학습과 추론이 가능합니다.


Dynamic Sliding Window와 Cache

GPT-OSS는 슬라이딩 윈도우 어텐션을 지원합니다. 이 방식은 긴 문맥을 다룰 때 캐시 메모리가 무한히 늘어나는 문제를 방지합니다.

예를 들어 윈도우 크기가 128이라면 캐시는 128 토큰까지만 유지하고 그 이전 토큰은 제거해 메모리 사용량을 절반 이상 줄일 수 있습니다.

from transformers import DynamicCache

cache = DynamicCache(config=model.config)
generated = model.generate(
    **inputs,
    max_new_tokens=500,
    past_key_values=cache
)

Continuous Batching과 Paged Attention

기존 정적 배칭(Static Batching)에서는 배치 내 일부 시퀀스가 먼저 종료되면 GPU가 놀게 되었습니다. GPT-OSS는 연속 배칭(Continuous Batching)을 도입해 새로운 요청을 즉시 배치에 채워 넣어 GPU 활용도를 극대화합니다.

벤치마크 결과, 정적 배칭 대비 연속 배칭이 토큰 처리 속도에서 더 뛰어난 성능을 보였습니다.


모델 로딩 최적화

수십억 개 파라미터를 가진 모델을 GPU에 적재할 때, 레이어마다 메모리 할당을 반복하면 속도가 느려집니다. GPT-OSS는 이를 해결하기 위해 미리 큰 메모리 블록을 예약하고, 레이어를 빠르게 할당하는 방식을 도입했습니다.

그 결과 모델 로딩 시간이 단축되고, 멀티 GPU 환경에서도 더 효율적으로 작동합니다.


728x90

GPT-OSS는 단순한 모델 릴리스를 넘어, 대규모 언어 모델을 더 적은 자원으로 더 빠르게 실행할 수 있는 기반을 제공합니다.

연구자에게는 단일 GPU에서도 초대형 모델을 실험할 수 있는 기회를, 기업에게는 인프라 비용 절감과 더 빠른 응답 속도를, 오픈소스 커뮤니티에게는 범용적인 커널과 최적화 기술 공유라는 가치를 제공합니다.

앞으로 GPT-OSS와 Transformers의 발전은 대규모 AI 모델의 대중화와 실용화를 크게 앞당길 것으로 기대됩니다.

https://huggingface.co/blog/faster-transformers?fbclid=IwY2xjawMy6shleHRuA2FlbQIxMQABHqSqqdCnqRhBNvM3cGlM0XxDvVPDDZACjhgDcXP1xVJJpoPxnTv4J6dNOZUr_aem_jWyuHGZjiHmFD2HAvLAtbQ

 

Tricks from OpenAI gpt-oss YOU 🫵 can use with transformers

 

huggingface.co

728x90
반응형
그리드형