허깅페이스 모델을 그대로 쓰는 NVIDIA NeMo Automodel
허깅페이스에서 모델을 내려받아 학습시키려 할 때 개발자가 가장 먼저 마주하는 장벽은 체크포인트 포맷 변환의 번거로움이다. 모델 가중치를 특정 학습 프레임워크에 맞는 포맷으로 변환하고, 학습이 끝난 뒤 다시 추론용 포맷으로 되돌리는 과정은 단순 반복 작업임에도 상당한 시간을 소모하며 설정 오류를 유발한다. 엔비디아는 이러한 비효율을 해결하기 위해 허깅페이스 디퓨저스(Diffusers) 포맷의 모델을 변환 과정 없이 즉시 분산 학습할 수 있는 NVIDIA NeMo Automodel 오픈소스 라이브러리를 공개했다. 이제 사용자는 허브에 저장된 가중치를 그대로 가져와 대규모 학습 환경에 즉시 투입할 수 있다.
NVIDIA NeMo Automodel은 엔비디아 NeMo 프레임워크의 일부로, 엔비디아와 허깅페이스의 협력을 통해 생산 수준의 분산 학습 환경을 제공한다. 모든 소스 코드는 Apache 2.0 라이선스로 공개되어 기업과 연구자가 제약 없이 사용할 수 있다. 현재 지원 대상에는 텍스트-이미지 생성 모델인 FLUX.1-dev를 비롯해 텍스트-비디오 생성 모델인 Wan 2.1과 HunyuanVideo가 포함되어 최신 고성능 모델들의 즉각적인 튜닝이 가능하다.
이 라이브러리를 도입하면 학습 후 생성된 체크포인트를 별도 변환 없이 DiffusionPipeline으로 즉시 로드하여 결과물을 확인할 수 있으며, 다시 허브에 공유하는 과정도 간소화된다. 또한 양자화, 컴파일, LoRA 어댑터 및 커스텀 샘플러와 같은 기존의 최적화 도구들을 그대로 사용할 수 있어 워크플로우의 단절이 없다. 특히 12B 이상의 대형 모델을 튜닝할 때 사용자는 보유한 인프라 규모에 따라 단일 노드에서의 LoRA 기반 매개변수 효율적 미세조정(PEFT) 또는 대규모 GPU 클러스터에서의 전체 파인튜닝(Full FT) 중 최적의 경로를 선택할 수 있다.
DTensor 기반의 Flow-matching 학습 구조
12B(120억 개) 이상의 매개변수를 가진 대형 모델을 학습시키려면 수십 대의 GPU 메모리를 효율적으로 쪼개 쓰는 기술이 필수적이다. 엔비디아는 PyTorch DTensor(분산 텐서를 처리하는 파이토치 표준 라이브러리)를 네이티브하게 사용하는 학습 라이브러리를 설계했다. 분산 환경에서 텐서를 어떻게 배치하고 계산할지를 라이브러리 수준에서 직접 제어하여 하드웨어 활용도를 극대화하고, 대규모 클러스터에서 발생하는 통신 병목을 줄여 연산 밀도를 높였다.
NeMo Automodel은 현재 Flow-matching(데이터 분포를 직선 경로로 연결해 학습하는 방식) 모델을 전용으로 지원하며, 학습 효율을 높이기 위해 잠재 공간 학습(Latent-space training) 방식을 채택했다. VAE(이미지를 압축된 수치 형태로 변환하는 오토인코더) 출력을 미리 인코딩하여 사용함으로써, 매 학습 단계마다 원본 이미지를 다시 인코딩하는 과정을 생략하고 GPU가 가중치 업데이트에 더 많은 자원을 할당하게 만든다. 직선 경로로 분포를 연결하는 학습 목적 함수는 기존 디퓨전 방식보다 학습 경로를 단순화해 모델이 더 빠르게 수렴한다.
다양한 해상도의 데이터를 처리할 때는 멀티레졸루션 버케팅(Multiresolution bucketing) 기술을 사용한다. 이는 서로 다른 해상도의 데이터를 유사한 크기끼리 그룹화해 묶어서 처리하는 방식이다. 이미지마다 크기가 다를 때 발생하는 불필요한 패딩(빈 공간을 채우는 작업)을 최소화하여 데이터 처리량(throughput)을 가속한다. 예를 들어 384x640 해상도의 데이터셋은 해당 크기의 버킷에 할당되어 효율적으로 배치 처리된다. 이는 FLUX.1-dev나 HunyuanVideo 같은 고해상도 생성 모델이 요구하는 방대한 데이터 처리 비용을 낮추는 기반이 된다.
모델 지원 방식의 효율화와 워크플로우 변화
신규 모델을 지원하는 경로가 기존의 전체 스크립트 재작성 방식에서 어댑터 추가 방식으로 바뀌었다. 과거에는 새로운 모델이 출시될 때마다 학습 로직이 담긴 전체 스크립트를 새로 작성해야 했으나, 이제는 데이터 전처리 핸들러(데이터를 모델 입력 규격에 맞게 가공하는 도구)와 모델 어댑터(모델과 학습 프레임워크를 연결하는 매개체)만 추가하면 된다.
FSDP2(모델 상태를 여러 GPU에 분산 저장하는 기술)와 버케팅 데이터 로딩, 체크포인트 저장 방식 같은 핵심 인프라 계층은 모델 종류와 상관없이 동일하게 적용된다. 모든 설정은 YAML(사람이 읽기 쉬운 설정 파일 형식) 기반의 워크플로우로 제어하여 재현성을 확보한다. 개발자는 학습 환경을 옮기면서도 기존에 구축한 최적화 파이프라인을 그대로 이어 쓸 수 있으며, 모델 실험 주기를 단축할 수 있다.
13B 모델 튜닝을 위한 분산 학습 기술 스펙
모든 기술 검증은 NVIDIA H100 80GB GPU 8장이 장착된 단일 노드 환경에서 진행되었다. 13B 규모의 대형 모델을 다루기 위해 FSDP2(Fully Sharded Data Parallel 2)를 핵심으로 배치하고, 연산 단위를 나누는 텐서 병렬화, 입력 데이터의 길이를 분산하는 컨텍스트 병렬화, 모델의 층을 순차적으로 배치하는 파이프라인 병렬화를 모두 지원한다. 이러한 다각적 병렬화 설계 덕분에 FLUX.1-dev(12B)와 HunyuanVideo(13B) 같은 거대 모델을 메모리 부족 오류 없이 학습시킬 수 있다.
학습 인프라의 운영 효율을 높이기 위해 고성능 컴퓨팅 클러스터에서 주로 사용하는 SLURM(작업 스케줄러 및 자원 관리자)을 지원하며, 향후 Kubernetes 도입을 통해 확장성을 높일 계획이다. 사용자는 보유한 하드웨어 자원 상황에 맞춰 학습 전략을 결정한다. 대규모 GPU 클러스터를 보유해 최고 수준의 품질을 구현해야 한다면 모든 매개변수를 업데이트하는 전체 파인튜닝(Full FT)을 적용하고, 단일 노드 수준의 제한된 자원에서 빠르게 실험해야 한다면 극소수의 매개변수만 학습시키는 LoRA 기반의 PEFT(Parameter-Efficient Fine-Tuning)를 선택한다.
실무 적용 방법과 향후 발전 방향
엔비디아는 Wan 2.1 모델을 지브리 스튜디오의 영상 데이터셋으로 튜닝하여 스타일 전이가 가능함을 확인했다. 전체 튜닝을 진행했을 때는 꽃의 외형이 지브리 스타일로 변했고, LoRA를 적용했을 때는 캐릭터의 눈 표현에서 특유의 화풍이 나타났다. 이는 목적에 따라 고품질의 전체 튜닝과 효율적인 LoRA 방식 중 적절한 경로를 선택해 특정 도메인에 최적화된 결과물을 만들 수 있음을 보여준다.
실제 환경에 적용하려면 PyTorch와 TransformerEngine 등 CUDA 컴파일 의존성이 미리 빌드된 Docker 컨테이너를 사용하는 방법이 권장된다.
nvcr.io/nvidia/nemo-automodel:26.06컨테이너 환경이 아니면 pip를 통해 패키지를 설치할 수 있다.
pip3 install nemo-automodel최신 소스 코드를 직접 반영해 사용하려면 GitHub 저장소를 통해 설치한다.
pip3 install git+https://github.com/NVIDIA-NeMo/Automodel.git현재 모델 설정은 YAML 파일을 통해 관리하며, 이는 팀 단위의 설정 공유와 재현성에 유리하다. 엔비디아는 향후 완전한 타입 지원을 갖춘 Pythonic API를 공개할 예정이다. 이 API가 도입되면 모델 구성, 데이터, 최적화 도구, PEFT 및 LoRA, 병렬화, 체크포인트 저장, 생성 단계를 파이썬 코드 내에서 직접 조합할 수 있다. 기존의 학습 코드나 주피터 노트북 환경에 즉시 통합할 수 있어, 설정 파일 수정 없이 코드 레벨에서 하이퍼파라미터를 조정하며 빠르게 가설을 검증하는 워크플로우가 가능해진다.
허깅페이스 체크포인트의 포맷 변환 과정이 사라지면서, 개발자는 모델 변환이 아닌 인프라 자원의 효율적 배분에 더 집중할 수 있게 되었다. 결국 대형 모델 튜닝의 성패는 포맷 변환의 번거로움이 아니라, 가용 자원에 맞춘 학습 전략의 정확한 선택에 달려 있다.




