본문으로 건너뛰기

© 2026 Molayo

HuggingFace헤드라인2026. 05. 04. 16:02

OpenAI GPT-OSS YOU 를 활용한 transformers 의 트릭

요약

이 기술 기사는 Hugging Face의 `transformers` 라이브러리가 모델 로딩, 실행, 파인튜닝 효율성을 대폭 개선한 내용을 다룹니다. 핵심은 '커널(Kernels)' 패키지를 도입하여, Flash Attention이나 MoE와 같은 복잡하고 최적화된 연산 조합을 별도의 의존성 관리 없이 Hub에서 직접 다운로드하고 활용할 수 있게 한 것입니다. 이를 통해 사용자는 다양한 하드웨어 및 모델에 걸쳐 고도로 특수화되고 일반화된 성능 향상을 경험할 수 있습니다.

핵심 포인트

  • `transformers` 라이브러리가 로딩, 실행, 파인튜닝 효율성을 대폭 개선했습니다.
  • 새로운 `kernels` 패키지는 Hub에서 최적화된 커널(예: Flash Attention 3, MoE 커널)의 미리 구축된 바이너리를 다운로드하여 의존성 문제를 해결합니다.
  • 커널 사용은 모델 인스턴스화 시 `use_kernels=True`를 통해 명시적으로 활성화해야 합니다 (Opt-in).
  • 이 설계는 특정 연산에 대한 고도의 특수화(Specialization)와 다양한 모델에 재사용 가능한 일반화(Generalization)를 동시에 제공합니다.
  • 다양한 최적화 옵션(MXFP4 Quantization, Tensor/Expert Parallelism 등)을 지원하며, 사용자는 시스템 벤치마크를 통해 최적의 조합을 찾아야 합니다.

transformers

우리는 라이브러리를 크게 업그레이드했습니다. 업데이트는 모델을 로드,
실행, 및
파인튜닝하는 데 매우 효율적입니다.

이 블로그 포스트에서는 모든 업그레이드를 심층적으로 논의하고, 이것이 transformers 툴킷의 일부가 되어 현재 및 미래 모델들이 이를 활용할 수 있도록 하는 방법을 다룹니다. transformers 에서 새로운 방법을 깔끔하게 구현함으로써 커뮤니티는 신속하게 이해하고 채택할 수 있습니다. MLX
, llama.cpp
, 또는 vLLM
과 같은 프레임워크는 transformers 코드를 참조하여 자체 구현을 구축할 수 있습니다.

이번 릴리스에서는 다음에 대해 작업했습니다:

  • Hub 에서 다운로드 가능한 Zero-build Kernels
  • MXFP4 Quantization
  • Tensor Parallelism
  • Expert Parallelism
  • Dynamic Sliding Window Layer & Cache
  • Continuous Batching & Paged Attention
  • 더 큰 모델을 더 빠르게 로드

가장 좋은 부분: 이 기능들은 transformers 내의 대부분의 주요 모델에서 작동해야 합니다!

Kernel 은 가속기 (accelerators) 에서 행렬 곱셈, 활성화, 정규화 등의 작업을 실행하는 특수화된, 컴팩트한 프로그램입니다. Eager PyTorch에서는 작업이 순차적으로 개별 커널을 트리거하며, 이는 직관적이지만 추가적인 메모리 전송과 launch overheads 를 유발할 수 있습니다. PyTorch 2.0 의
torch.compile
TorchInductor
과 같은 백엔드는 이를 자동으로 fuse 및 optimize 한 커널을 제공하여 2–10×
성능 향상을 제공합니다.

또한 커뮤니티는 자주 사용되는 연산 조합에 대해 사용자 정의 커널을 만들었습니다. 단순히 matmul 과 같은 개별 PyTorch op 에만 국한되지 않습니다. 예를 들어, Flash Attention 은 transformers 아키텍처를 정의하는 중요한 attention block 을 최적화하기 위해 만들어졌으며, 대부분의 LLM 포함 많은 모델에 존재합니다. 단일 커널 내에서 모든 attention operation 을 신중하게 결합함으로써 메모리 전송을 최소화하고 메모리 사용량을 줄이며 속도 향상을 달성할 수 있습니다.

문제는 이러한 다양한 커널들이 별도의 라이브러리에서 제공된다는 점입니다. 이를 transformers 라이브러리에 추가하면 의존성 부하 (dependency bloat) 가 발생합니다. 또한 이 커널들은 Python 코드뿐만 아니라 C++ 와 함께 결합된 low-level cuda 코드이며, Python 레이어를 통해 노출됩니다. 이는 타겟 시스템에서 컴파일되어야 함을 의미하며, 각 커널 라이브러리가 요구하는 빌드 시스템을 필요로 합니다.

kernels 패키지는 Hub 에서 지원되는 커널의 미리 구축된 바이너리를 다운로드함으로써 이 문제를 해결합니다. 사용자는 원하는 커널을 지정하면 kernels
이 첫 번째 사용 시 시스템과 호환되는 버전을 찾아 다운로드합니다.

GPT-OSS 는 Hub 의 Kernels 를 많이 사용하는 Mixture of Experts (MoE) 모델입니다. 여러 사용자 정의 커널을 활용합니다:

  • Liger RMSNorm, @use_kernel_forward_from_hub("RMSNorm")
  • Megablocks MoE 커널: @use_kernel_forward_from_hub("MegaBlocksMoeMLP")
  • attention sink 를 지원한 Flash Attention 3
  • MXFP4 triton 커널 (후술됨)

첫 두 가지를 살펴보겠습니다.

배경에서는 디코레이터 (1 과 2) 는 커뮤니티 기여 커널을 지시합니다. 예를 들어, RMSNorm
liger_kernels 에서 비롯되며, MegaBlocksMoeMLP
커널은 megablocks 에서 비롯됩니다. 장치 (CUDA 또는 ROCm) 와 학습 또는 추론 실행 여부 여부에 따라 올바른 커널이 자동으로 로드됩니다.

이 설계는 특수화 및 일반화를 모두 포함합니다: RMSNorm liger 커널은 여러 모델에 재사용되며, MoE 커널은 미래의 MoE 에 적용될 수 있습니다.

kernels
이 Hub 에서 코드를 가져오기 때문에 모델 인스턴스화 시 use_kernels=True
를 전달하여 이 기능을 opt-in 해야 합니다. 아래와 같이 보여줍니다. 우리는 예제에서 INFO
로깅을 활성화하므로 다운로드 가능한 커널이 사용되고 있는지 쉽게 확인할 수 있습니다.

이 커널은 mxfp4 와 호환되지 않으므로, 이를 사용할 경우 추론은 bfloat16 에서 발생합니다. 프로젝트에 맞는 메모리 및 처리량 (throughput) 의 최적 조합을 위해 시스템을 벤치마크해 주세요.

AI 자동 생성 콘텐츠

본 콘텐츠는 Hugging Face Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
2

댓글

0