TL;DR
이 글은 HuggingFace Transformers v5의 MoE 기반 인프라 위에 NVIDIA NeMo AutoModel을 얹어 MoE 모델의 파인튜닝 처리량을 크게 끌어올리고 GPU 메모리 사용을 줄이는 방법과 성능 결과를 정량적으로 제시한다. NeMo AutoModel은 AutoModelForCausalLM을 서브클래싱해 from_pretrained() API 호환성을 유지하면서 Expert Parallelism, DeepEP fused all-to-all dispatch, TransformerEngine 커널 등 네이티브 수준의 최적화를 적용해 사용자 코드 변경을 최소화한 채 성능을 향상시킨다.
벤치마크에서 NeMo AutoModel은 single-node 8x H100 환경의 대표적 30B MoE 모델들에서 평균 TPS/GPU를 3.4~3.7배 높였고 피크 메모리는 29~32% 줄였으며, v5가 메모리 초과로 실행하지 못하는 550B 전수 파인튜닝을 Expert Parallelism으로 16노드(128 GPU) 규모에서 가능하게 했다. 성능 향상은 전문가 파라미터의 샤딩으로 메모리를 낮추는 EP, 라우팅과 통신을 연산과 겹치게 처리하는 DeepEP, 그리고 TransformerEngine의 fused 연산 커널이 결합되어 얻어진 결과이다.
이 접근법은 from_pretrained() 한 줄만 바꾸는 '제로 프릭션' 마이그레이션 경로를 제공하므로 기존 Transformers 기반 코드베이스에 최소한의 변화만으로 대규모 MoE 학습을 확장할 수 있다. 다만 최적의 이득을 보려면 H100급 GPU와 분산 설정, Balanced routing 등 MoE의 작동점을 고려한 환경 구성이 필요하며 모델별 사용자 정의 커널 적용 여부에 따라 성능 차이가 발생할 수 있다.
섹션별 상세

- NeMo AutoModel은 Qwen3-30B-A3B와 Nemotron-3-Nano-30B-A3B에서 Transformers v5 대비 3.4~3.7배의 훈련 처리량(TPS/GPU)을 달성했다. — 성능 비교 표 및 Single-node 30B MoE benchmarks 섹션, Qwen3 및 Nemotron 수치 표
- NeMo AutoModel은 동일한 비교에서 GPU 피크 메모리를 29~32% 줄였으며, 예컨대 Qwen3에서는 68.2 GiB에서 48.1 GiB로 약 29% 감소했다. — 성능 비교 표의 Peak Memory 수치 및 Single-node 30B MoE benchmarks 섹션
- Transformers v5는 Nemotron 3 Ultra 550B A55B의 전체 파인튜닝에서 메모리 초과로 실행이 불가능했으나 NeMo AutoModel의 Expert Parallelism(EP=64)을 적용하면 16노드(128 GPU)에서 전수 파인튜닝을 수행할 수 있었다. — Nemotron 3 Ultra 550B A55B 벤치마크 설명 및 Methodology 섹션
import os
import torch
import torch.distributed as dist
from nemo_automodel import NeMoAutoModelForCausalLM
from nemo_automodel.recipes._dist_utils import create_distributed_setup_from_config
dist.init_process_group(backend="nccl")
torch.manual_seed(0)
torch.cuda.set_device(int(os.environ.get("LOCAL_RANK", 0)))
dist_setup = create_distributed_setup_from_config(
{
"strategy": "fsdp2",
"ep_size": 8,
},
)
model = NeMoAutoModelForCausalLM.from_pretrained(
"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16",
dtype=torch.bfloat16,
distributed_setup=dist_setup,
)
dist.destroy_process_group()이 파이썬 코드는 FSDP2와 Expert Parallelism(ep_size=8)을 설정해 NeMo AutoModel으로 사전학습된 MoE 모델을 from_pretrained() 한 줄로 로드하여 분산 학습 환경을 구성하는 예시이다.
용어 해설
- Mixture-of-Experts(Mixture-of-Experts (MoE))
- — MoE는 모델의 일부 계층에서 여러 '전문가(expert)' 서브네트워크 중 일부만 활성화해 계산 효율을 높이는 구조로, 토큰별로 다른 전문가를 라우팅하여 처리량을 높이고 파라미터를 크게 확장할 수 있다는 점에서 대형 언어모델 확장에 중요한 역할을 한다.
- 전문가 병렬화(Expert Parallelism)
- — Expert Parallelism은 MoE의 전문가 파라미터를 GPU들에 물리적으로 샤딩해 각 디바이스가 전체 전문가 중 일부만 보유하도록 하여 단일 GPU당 메모리 요구량을 줄이고 대규모 MoE를 분산 학습 가능하게 하는 기법이다.
- DeepEP
- — DeepEP는 전문가 라우팅과 토큰 디스패치를 통합된 GPU 커널로 융합해 통신과 계산을 겹치게 실행함으로써 AllGather/ReduceScatter 단계에서 발생하는 대기 시간을 줄이고 MoE 처리량을 높이는 최적화 계층이다.
- TransformerEngine
- — TransformerEngine은 fused attention, fused linear, RMSNorm 등 핵심 연산을 GPU 최적화 커널로 제공해 PyTorch/FlashAttention 대비 연산 효율과 처리량을 높이는 라이브러리이며 MoE를 포함한 다양한 레이어에서 일관된 가속 효과를 제공한다.
- 동적 가중치 로딩(Dynamic Weight Loading)
- — Dynamic Weight Loading은 체크포인트 텐서를 from_pretrained() 호출 시점에 변환·병합·재네이밍하여 실행 시점 메모리와 I/O를 최적화하는 시스템으로, 대형 MoE 체크포인트를 효율적으로 저장하고 로드하게 해준다.
기술
- PyTorch
- HuggingFace Transformers v5
- NeMo AutoModel
- TransformerEngine
- FSDP
- safetensors
활용 사례
- 대규모 MoE 모델의 전체 파인튜닝
- 단일 노드에서의 고처리량 MoE 학습
- MoE 모델 체크포인트의 효율적 저장·로딩 및 추론 프레임워크 연동
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.