NVIDIA NeMo-Skills: LLM 워크플로우 자동화의 혁신적 솔루션
읽는 시간: 12분
대규모 언어 모델(LLM) 개발은 합성 데이터 생성부터 모델 학습, 평가에 이르기까지 여러 복잡한 단계를 거쳐야 합니다. 각 단계마다 서로 다른 프레임워크와 도구들을 사용해야 하고, 이들 간의 연결과 통합은 개발자들에게 큰 부담이 되고 있습니다. NVIDIA NeMo-Skills는 이러한 복잡성을 해결하고 LLM 워크플로우를 혁신적으로 간소화하는 솔루션입니다.
NVIDIA NeMo-Skills란 무엇인가?
NVIDIA NeMo-Skills는 복잡한 LLM 워크플로우를 단일 통합 파이프라인으로 변환하는 혁신적인 라이브러리입니다. GitHub에서 오픈소스로 제공되며, Apache 2.0 라이선스 하에 자유롭게 사용할 수 있습니다.
핵심 기능 개요
NeMo-Skills는 다음과 같은 핵심 기능을 제공합니다:
- 통합 추상화 계층: TensorRT-LLM, vLLM, NeMo-Aligner를 동일한 명령 체계로 제어
- 확장 가능한 클러스터 지원: 로컬 환경에서 Slurm 클러스터까지 원활한 전환
- Docker 기반 오케스트레이션: NVIDIA Container Toolkit을 활용한 자동 GPU 자원 할당
- 실험 관리: Weights & Biases 로깅을 기본 지원
LLM 개발의 현실적 과제
기존 LLM 개발 과정에서 개발자들이 직면하는 주요 문제점들을 살펴보겠습니다.
프레임워크 간의 단절
LLM 성능 향상을 위해서는 다음과 같은 복잡한 과정을 거쳐야 합니다:
- 합성 데이터 생성(SDG): 특정 능력 향상을 위한 대규모 고품질 데이터 생성
- 모델 학습: SFT(Supervised Fine-Tuning) 또는 RL(Reinforcement Learning) 기반 학습
- 모델 평가: 다양한 벤치마크를 통한 성능 평가 및 개선
이 과정에서 Hugging Face 체크포인트를 TensorRT-LLM으로 변환하거나, 대규모 데이터셋을 NeMo 형식으로 변환하는 등 번거로운 작업들이 수반됩니다.
스크립트와 컨테이너의 복잡성
각 단계마다 서로 다른 라이브러리와 환경 설정이 필요하여 다음과 같은 문제가 발생합니다:
- 복잡한 스크립트 관리
- 환경 간 호환성 문제
- 재현 가능성 확보의 어려움
- 디버깅과 모니터링의 복잡성
NeMo-Skills의 혁신적 솔루션
통합된 명령 체계
NeMo-Skills는 복잡한 워크플로우를 간단한 명령어로 추상화합니다:
# 설치
pip install git+https://github.com/NVIDIA/NeMo-Skills.git
# 초기 설정
ns setup
# 모델 평가
ns eval
# 합성 데이터 생성
ns generate
# 모델 학습
ns train
로컬에서 클러스터까지 원활한 확장
개발 환경에서 프로덕션 환경으로의 전환이 매우 간단합니다:
# 로컬 실행
ns eval --cluster=local
# Slurm 클러스터 실행
ns eval --cluster=slurm
단일 옵션 변경만으로 수백 개의 노드로 확장할 수 있습니다.
주요 활용 사례
베이스라인 성능 평가
Qwen 2.5 14B Instruct 모델을 AIME24/25 수학 벤치마크로 평가하는 예시:
ns eval \
--model=Qwen/Qwen2.5-Math-14B-Instruct \
--benchmark=aime \
--server_type=vllm
이 한 줄의 명령으로 vLLM 서버를 자동으로 시작하고 pass@k 지표를 계산합니다.
합성 데이터 생성 파이프라인
NeMo-Skills는 고품질 합성 데이터 생성을 위한 완전한 파이프라인을 제공합니다:
- 문제 추출: AoPS 포럼에서 수학 문제 수집
- 해설 생성: QwQ 32B 모델을 사용한 장문 해설 생성
- 데이터 검증: 생성된 데이터의 품질 검증
# 문제 추출
ns generate ++prompt_config=extract-problems.yaml
# 해설 생성 (TensorRT-LLM 사용)
ns generate \
--model=QwQ-32B-Preview \
--server_type=trtllm \
--data_file=/workspace/problems.jsonl
모델 파인튜닝
NeMo-Skills는 두 가지 파인튜닝 옵션을 제공합니다:
1. NeMo-Aligner 사용 (NeMo 포맷)
ns train \
--model=Qwen2.5-Math-14B-Instruct \
--data_file=/workspace/sft-data.jsonl \
--trainer=nemo-aligner
2. NeMo-RL 사용 (HuggingFace 포맷)
ns nemo_rl sft \
--model=Qwen2.5-Math-14B-Instruct \
--data_file=/workspace/sft-data.jsonl
OpenMathReasoning 데이터셋
NeMo-Skills를 활용하여 제작된 OpenMathReasoning 데이터셋은 다음과 같은 특징을 가집니다:
데이터셋 구성
- 306K 고유 수학 문제 (AoPS 포럼 출처)
- 3.2M 긴 사고 연쇄(CoT) 솔루션
- 1.7M 도구 통합 추론(TIR) 솔루션
- 566K GenSelect 샘플 (다중 후보 중 최적 솔루션 선택)
- 추가 193K 문제 (솔루션 없음)
사용된 모델
- 전처리: Qwen2.5-32B-Instruct
- 솔루션 생성: DeepSeek-R1, QwQ-32B
이 데이터셋은 AIMO-2 Kaggle 대회 우승 솔루션의 기반이 되었습니다.
OpenMath-Nemotron 모델 시리즈
NeMo-Skills와 OpenMathReasoning 데이터셋을 활용하여 개발된 모델들:
모델 라인업
- OpenMath-Nemotron-1.5B
- OpenMath-Nemotron-7B
- OpenMath-Nemotron-14B
- OpenMath-Nemotron-14B-Kaggle (AIMO-2 대회 사용)
- OpenMath-Nemotron-32B
성능 벤치마크
주요 수학 벤치마크에서의 성능 (pass@1 / maj@64):
모델 | AIME24 | AIME25 | HMMT-24-25 | HLE-Math |
---|---|---|---|---|
OpenMath-Nemotron-1.5B CoT | 61.6 (80.0) | 49.5 (66.7) | 39.9 (53.6) | 5.4 (5.4) |
OpenMath-Nemotron-7B CoT | 74.8 (80.0) | 61.2 (76.7) | 49.7 (57.7) | 6.6 (6.6) |
OpenMath-Nemotron-14B CoT | 76.3 (83.3) | 63.0 (76.7) | 52.1 (60.7) | 7.5 (7.6) |
OpenMath-Nemotron-32B CoT | 76.5 (86.7) | 62.5 (73.3) | 53.0 (59.2) | 8.3 (8.3) |
GenSelect 기법의 효과
Self GenSelect와 32B GenSelect를 적용했을 때의 성능 향상:
- OpenMath-Nemotron-32B + Self GenSelect: AIME24 93.3%, AIME25 80.0%
- 벤치마크 대비: DeepSeek-R1과 QwQ-32B를 상회하는 성능
실전 워크플로우 가이드
완전한 파이프라인 구축
NeMo-Skills를 사용한 전체 워크플로우:
# 1. 베이스라인 평가
ns eval \
--model=base-model \
--benchmark=math \
--output_dir=/workspace/evals/baseline
# 2. 문제 추출
ns generate \
++prompt_config=extract-problems.yaml \
--output_dir=/workspace/sdg/problems
# 3. 해설 생성
ns generate \
--model=QwQ-32B-Preview \
--server_type=trtllm \
--data_file=/workspace/sdg/problems/problems.jsonl \
--output_dir=/workspace/sdg/solutions
# 4. 데이터 준비
ns run_cmd nemo_skills.training.prepare_data \
--input_files=/workspace/sdg/solutions \
--output_file=/workspace/sft-data.jsonl
# 5. 모델 파인튜닝
ns train \
--model=base-model \
--data_file=/workspace/sft-data.jsonl \
--output_dir=/workspace/training
# 6. 최종 평가
ns eval \
--model=/workspace/training/final-checkpoint \
--benchmark=math \
--output_dir=/workspace/evals/after-training
클러스터 확장 전략
단계별 확장 접근법:
- 로컬 프로토타입:
--cluster=local
로 소규모 테스트 - 중간 규모 검증: 소규모 Slurm 클러스터에서 검증
- 대규모 실행: 전체 클러스터 자원을 활용한 프로덕션 실행
고급 활용 패턴
W&B 통합 모니터링
ns eval \
--model=custom-model \
--benchmark=multi-task \
--log_to_wandb=true \
--wandb_project=llm-evaluation
자동으로 실험 결과가 Weights & Biases에 로깅됩니다.
멀티태스크 평가
다양한 스킬 영역에서의 종합 평가:
# 수학적 추론
ns eval --benchmark=math --skills=formal_proofs,coding
# 채팅 및 지시 따르기
ns eval --benchmark=chat --skills=ifeval,arena-hard,mt-bench
# 일반 지식
ns eval --benchmark=knowledge --skills=mmlu,mmlu-pro,gpqa
# 긴 컨텍스트 처리
ns eval --benchmark=context --skills=ruler
커스텀 프롬프트 설정
특정 도메인에 맞춘 프롬프트 커스터마이징:
# custom-prompt.yaml
prompt_template: |
You are a mathematical reasoning expert.
Solve the following problem step by step:
Problem: {problem}
Solution:
reasoning_style: "chain_of_thought"
max_tokens: 2048
temperature: 0.7
ns generate ++prompt_config=custom-prompt.yaml
성능 최적화 전략
GPU 메모리 최적화
대규모 모델 처리를 위한 메모리 최적화:
# 모델 병렬화
ns eval \
--model=large-model \
--server_type=vllm \
--tensor_parallel_size=4 \
--gpu_memory_utilization=0.9
# 배치 크기 최적화
ns generate \
--batch_size=32 \
--max_concurrent_requests=8
처리량 최적화
대용량 데이터셋 처리를 위한 최적화:
# 병렬 처리 최대화
ns generate \
--num_workers=16 \
--async_mode=true \
--checkpoint_interval=1000
비즈니스 가치와 ROI
개발 생산성 향상
NeMo-Skills 도입으로 얻을 수 있는 구체적인 이점:
- 개발 시간 단축: 복잡한 스크립트 작성 시간 70% 감소
- 오류 감소: 통합된 파이프라인으로 인한 휴먼 에러 최소화
- 재현성 보장: 동일한 명령어로 일관된 결과 생성
- 확장성: 로컬에서 클러스터까지 원활한 확장
연구 개발 가속화
- 빠른 프로토타이핑: 아이디어에서 실험까지의 시간 단축
- 반복 실험: 자동화된 파이프라인으로 빠른 반복 실험
- 결과 비교: 표준화된 평가 메트릭스로 객관적 비교
실제 적용 사례
AIMO-2 Kaggle 대회 우승
NeMo-Skills를 활용한 AIMO-2 우승 솔루션의 핵심 요소:
- 대규모 합성 데이터 생성: 306K 고유 문제와 3.2M CoT 솔루션
- 효율적인 모델 학습: NeMo-Aligner를 통한 대규모 파인튜닝
- 체계적인 평가: 다양한 벤치마크에서의 종합 성능 평가
기업 환경에서의 활용
실제 기업들이 NeMo-Skills를 활용하는 방식:
- AI 서비스 개발: 도메인 특화 LLM 개발 및 배포
- 연구 개발: 새로운 AI 기법 연구 및 검증
- 제품 개선: 기존 AI 제품의 성능 향상
커뮤니티와 생태계
오픈소스 기여
NeMo-Skills는 활발한 오픈소스 커뮤니티를 보유하고 있습니다:
- GitHub: 432개 스타, 75개 포크
- 기여자: 32명의 활발한 기여자
- 라이선스: Apache 2.0 (상업적 이용 가능)
지속적인 발전
NVIDIA는 지속적으로 NeMo-Skills를 개선하고 있습니다:
- 새로운 벤치마크 추가
- 성능 최적화
- 새로운 프레임워크 지원
- 사용자 피드백 반영
향후 발전 방향
멀티모달 지원
향후 버전에서는 다음과 같은 기능들이 추가될 예정입니다:
- 비전-언어 모델: 이미지와 텍스트를 함께 처리하는 모델 지원
- 오디오 처리: 음성 인식 및 생성 기능 통합
- 멀티모달 벤치마크: 다양한 모달리티를 평가하는 벤치마크
자동화 수준 향상
- 자동 하이퍼파라미터 튜닝: 최적의 학습 설정 자동 탐색
- 적응형 배치 크기: 시스템 자원에 따른 동적 최적화
- 지능형 오류 복구: 실패한 작업의 자동 재시도 및 복구
결론
NVIDIA NeMo-Skills는 복잡한 LLM 워크플로우를 혁신적으로 간소화하는 강력한 솔루션입니다. 합성 데이터 생성부터 모델 학습, 평가에 이르기까지 전체 과정을 통합된 파이프라인으로 제공하여 개발자들이 본질적인 AI 연구와 개발에 집중할 수 있도록 돕습니다.
핵심 가치 제안
- 복잡성 해결: 여러 프레임워크를 하나로 통합
- 생산성 향상: 개발 시간 대폭 단축
- 확장성 보장: 로컬에서 클러스터까지 원활한 확장
- 검증된 성능: AIMO-2 우승이라는 실제 성과
LLM 개발과 운영의 복잡성 때문에 고민하고 있다면, NeMo-Skills를 통해 그 해답을 찾아보시길 바랍니다. 이는 단순한 도구를 넘어 LLMOps의 미래를 제시하는 플랫폼이 될 것입니다.
더 자세한 정보는 NVIDIA 개발자 블로그와 GitHub 리포지토리에서 확인하실 수 있습니다.