에이전트를 만들다 보면 항상 같은 지점에서 막힙니다. PDF 파싱 모델, 영상 분석 모델, 음성 전사 모델을 따로 붙이고, 그 결과를 또 하나의 LLM에 넘겨서 합쳐야 하는 파이프라인입니다. 레이턴시는 3배, 컨텍스트는 쪼개집니다. Nemotron 3 Nano Omni는 이 구조 자체를 없애는 모델입니다.
아키텍처 — 왜 "진짜" 옴니모달인가
Nemotron 3 Nano Omni는 30B 총 파라미터, 포워드 패스당 약 3B 활성 파라미터의 MoE 모델입니다. 텍스트, 이미지, 영상(MP4, 최대 2분), 오디오(WAV/MP3, 최대 1시간)를 256K 토큰 컨텍스트 안에서 처리하고, 텍스트로 출력합니다. JSON, 체인오브소트 추론, 네이티브 함수 콜을 지원합니다.
"옴니모달"이라는 말이 많이 쓰이지만 실제 구현 방식은 다릅니다. 기존 멀티모달 모델 대부분은 각 모달리티를 별도 인코더로 처리하고 LLM에 이어 붙이는 구조입니다. 컨텍스트가 모달리티 경계에서 단절됩니다.
Nemotron 3 Nano Omni는 영상 처리에서 Conv3D 튜블릿 임베딩을 씁니다. 프레임을 하나씩 독립적으로 임베딩하는 대신, 연속된 두 프레임을 하나의 튜블릿으로 융합한 다음 ViT에 넘깁니다. 이렇게 하면 언어 모델이 어텐션해야 하는 비전 토큰 수가 절반으로 줄어듭니다.
여기에 더해 EVS(Efficient Video Sampling)가 추론 시점에서 중복 비디오 토큰을 제거합니다. 첫 프레임은 전체를 유지하고, 이후 프레임에서는 변화가 있는 "다이나믹" 토큰만 남기고 이전 프레임과 동일한 "스태틱" 토큰은 드롭합니다. 회의 녹화처럼 화면 대부분이 정적인 영상에서 토큰 효율이 크게 올라갑니다.
Mamba2-Transformer 하이브리드 MoE 백본이 긴 시퀀스를 상수 메모리 KV 상태로 처리합니다. 1시간짜리 오디오 트랜스크립트나 대규모 문서 배치 전체에서 일관성 있는 추론이 가능한 이유입니다.
성능 수치 — 어디서 이기나
가장 직접적인 오픈소스 경쟁 모델은 Qwen3-Omni-30B-A3B입니다. 동일한 30B-A3B MoE로 같은 4가지 모달리티를 지원하는 오픈소스 모델입니다. 문서 인텔리전스와 컴퓨터 유즈에서 Nemotron이 앞서고, 크로스모달 오디오-비디오 이해에서는 두 모델이 거의 비슷합니다.
가장 격차가 큰 영역은 GUI 자동화입니다. OSWorld 기준 Nemotron 47.4% vs Qwen3-Omni 29.0%로 63% 상대적 우위입니다. 문서 인텔리전스(MMLongBench-Doc)에서도 8포인트 앞섭니다.
처리량에서는 동급 오픈 옴니 모델 대비 멀티문서 유즈케이스 기준 7.4배, 영상 유즈케이스 기준 9.2배 높은 시스템 효율을 보입니다.
바로 쓰기 — OpenRouter 무료 API
가장 빠른 시작 경로는 OpenRouter입니다. OpenRouter에서 현재 무료로 제공되고 있습니다. 모델명은 nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free이고, extended thinking은 reasoning.enabled 파라미터로 활성화합니다.
텍스트 + 이미지 처리:
import requests
import base64
# 이미지를 base64로 인코딩
with open("document.png", "rb") as f:
image_b64 = base64.b64encode(f.read()).decode()
response = requests.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={
"Authorization": "Bearer YOUR_OPENROUTER_API_KEY",
"Content-Type": "application/json"
},
json={
"model": "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{image_b64}"
}
},
{
"type": "text",
"text": "이 문서에서 핵심 수치와 날짜를 JSON 형식으로 추출해줘."
}
]
}
],
"extra_body": {
"reasoning": {"enabled": True} # 체인오브소트 추론 활성화
}
}
)
result = response.json()
print(result["choices"][0]["message"]["content"])
오디오 처리 (회의 녹음 요약):
import requests
import base64
with open("meeting.wav", "rb") as f:
audio_b64 = base64.b64encode(f.read()).decode()
response = requests.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={
"Authorization": "Bearer YOUR_OPENROUTER_API_KEY",
"Content-Type": "application/json"
},
json={
"model": "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
"messages": [
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": audio_b64,
"format": "wav"
}
},
{
"type": "text",
"text": "이 회의 녹음을 전사하고, 결정 사항과 액션 아이템을 정리해줘."
}
]
}
]
}
)
print(response.json()["choices"][0]["message"]["content"])
NVIDIA NIM으로 프로덕션 배포
build.nvidia.com에서 NIM 마이크로서비스로 제공됩니다. 로컬 설정 없이 서버리스 관리형 엔드포인트로 바로 접근 가능합니다.
from openai import OpenAI
import base64
client = OpenAI(
api_key="YOUR_NVIDIA_API_KEY",
base_url="https://integrate.api.nvidia.com/v1"
)
# 영상 + 오디오 + 텍스트 동시 처리
with open("product_demo.mp4", "rb") as f:
video_b64 = base64.b64encode(f.read()).decode()
response = client.chat.completions.create(
model="nvidia/nemotron-3-nano-omni-30b-a3b-reasoning",
messages=[
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url": f"data:video/mp4;base64,{video_b64}"
}
},
{
"type": "text",
"text": "이 제품 데모 영상에서 소개된 기능을 목록으로 정리하고, "
"발표자가 강조한 핵심 메시지를 요약해줘."
}
]
}
]
)
print(response.choices[0].message.content)
로컬 배포 — 하드웨어별 선택지
Hugging Face에서 BF16, FP8, NVFP4 체크포인트를 제공합니다. 로컬 배포 시 하드웨어에 따라 정밀도를 선택해야 합니다.
정밀도 VRAM 요구량 적합 하드웨어
| BF16 | ~62GB | H100 80GB × 1, A100 × 2 |
| FP8 | ~36GB | A6000 48GB, RTX Pro |
| NVFP4 | ~25GB | RTX 4090 (타이트) |
RTX 4090(24GB) 사용자라면 NVFP4가 유일한 현실적 경로입니다. FP8은 약 30GB, BF16은 약 60GB가 필요합니다.
vLLM으로 고처리량 서빙:
# NVFP4 — 최고 처리량 (Hopper/Blackwell 하드웨어)
vllm serve nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4 \
--tensor-parallel-size 1 \
--max-model-len 131072 \
--video-pruning-rate 0.5 \
--max-num-seqs 384 \
--reasoning-parser nemotron_v3
# RTX Pro 사용 시 MoE 백엔드 옵션 추가
# --moe-backend triton
SGLang으로 서빙:
sglang serve \
--model-path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 \
--trust-remote-code
llama.cpp로 텍스트 + 이미지 + 오디오 (경량 환경):
# Unsloth GGUF 4비트 양자화 버전 사용
./llama-mtmd-cli \
-hf unsloth/NVIDIA-Nemotron-3-Nano-Omni-30B-A3B-Reasoning-GGUF:UD-Q4_K_XL \
--image screenshot.png \
--audio meeting.wav \
-p "화면에 보이는 내용과 오디오 내용을 함께 요약해줘"
실전 에이전트 패턴 — 퍼셉션 서브에이전트로 쓰기
NVIDIA의 포지셔닝은 명확합니다. Nemotron 3 Nano Omni는 에이전트 시스템의 "눈과 귀" 역할을 합니다. Nemotron 3 Super, Ultra 같은 추론 모델이나 다른 proprietary 모델과 함께 쓰도록 설계된 퍼셉션 서브에이전트입니다.
실전 패턴은 이렇습니다. Omni가 영상·오디오·문서를 인식하고 구조화된 텍스트로 변환합니다. 그 결과를 추론 모델에 넘겨서 판단하고 행동을 결정하는 구조입니다.
import requests
import base64
import json
def perception_agent(file_path: str, file_type: str, query: str) -> dict:
"""
Nemotron Omni를 퍼셉션 서브에이전트로 사용
멀티모달 입력 → 구조화된 컨텍스트 출력
"""
with open(file_path, "rb") as f:
content_b64 = base64.b64encode(f.read()).decode()
type_map = {
"image": ("image_url", f"data:image/png;base64,{content_b64}"),
"audio": ("input_audio", {"data": content_b64, "format": "wav"}),
"video": ("video_url", f"data:video/mp4;base64,{content_b64}"),
}
content_type, content_value = type_map[file_type]
response = requests.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={"Authorization": "Bearer YOUR_KEY"},
json={
"model": "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
"messages": [{
"role": "user",
"content": [
{
"type": content_type,
content_type: content_value if isinstance(content_value, str)
else None,
**({"input_audio": content_value}
if file_type == "audio" else {})
},
{
"type": "text",
"text": f"{query}\n\n반드시 JSON 형식으로 답해줘."
}
]
}],
"extra_body": {"reasoning": {"enabled": True}}
}
)
raw = response.json()["choices"][0]["message"]["content"]
try:
return json.loads(raw)
except json.JSONDecodeError:
return {"raw_output": raw}
# 사용 예시: 회의 녹음 → 구조화된 요약 → 다음 에이전트로 전달
meeting_context = perception_agent(
file_path="weekly_standup.wav",
file_type="audio",
query="참석자, 논의 주제, 결정 사항, 각 담당자별 액션 아이템을 추출해줘"
)
print(json.dumps(meeting_context, ensure_ascii=False, indent=2))
# 이 결과를 태스크 관리 에이전트나 슬랙 봇에 넘기는 식으로 체이닝
어떤 경우에 써야 하나 — 판단 기준
유즈케이스 적합도
| 기업 문서(PDF·계약서·보고서) 대량 처리 | ✅ MMLongBench-Doc 1위 |
| 회의 녹음 전사 + 요약 | ✅ 1시간 오디오 단일 컨텍스트 |
| GUI 자동화 / 스크린샷 기반 에이전트 | ✅ OSWorld 47.4% (오픈소스 최고) |
| 제품 데모·교육 영상 분석 | ✅ Conv3D + EVS 효율 |
| 실시간 스트리밍 오디오 | ❌ 미지원 |
| 영상 생성 | ❌ 텍스트 출력만 |
| 한국어 오디오 다중 화자 환경 | ⚠️ 영어 중심 학습, 비영어 성능 미검증 |
✅ 결론
- 문서·영상·오디오를 하나의 추론 루프로 처리하는 첫 번째 실용적인 오픈소스 옴니모달 모델입니다
- OpenRouter에서 지금 당장 무료로 테스트할 수 있습니다
- 에이전트 시스템의 퍼셉션 레이어로 설계됐습니다. 단독 추론 모델이 아닌 "눈과 귀" 포지션입니다
- GUI 자동화와 대형 문서 배치 처리에서 오픈소스 최고 수준입니다
- RTX 4090에서 NVFP4로 돌릴 수 있지만 타이트합니다. A6000 이상이 편합니다
❌ 주의
- 비영어 오디오 성능은 미검증입니다. 한국어 회의록 처리는 직접 테스트가 필요합니다
- 영상 입력 최대 2분 제한이 있습니다. 긴 영상은 분할해야 합니다
- 멀티모달 파인튜닝 시 텍스트 전용 VRAM 수치를 그대로 적용하면 OOM이 납니다
'LLM' 카테고리의 다른 글
| MiniMax M3 무료 API 완전 가이드 — 1M 컨텍스트 멀티모달 모델 실전 연동 (0) | 2026.06.15 |
|---|---|
| Microsoft Phi-4-reasoning-vision-15B 실전 가이드 — "언제 생각할지" 스스로 결정하는 경량 멀티모달 모델 (0) | 2026.06.15 |
| GPT-5.5 vs Claude Opus 4.8 vs Gemini 3.5 Flash — 2026년 6월 지금 뭘 써야 하나 (0) | 2026.06.05 |
| Grok 4.3 무료로 써볼 만한가 — 가격·성능 솔직 정리 (0) | 2026.06.05 |
| MiniMax M3 완전 분석 — GPT-5.5 제쳤다는 중국 오픈소스, 벤치마크·가격·보안 총정리 (0) | 2026.06.04 |