gcube RTX 5090에서 MiniMax H3 영상 생성 모델 직접 돌려보기
on this page
Part A. gcube 활용법/튜토리얼
들어가며
텍스트 한 줄로 영상을 생성하는 T2V(Text-to-Video) 모델들이 빠르게 발전하면서, gcube에서도 이런 워크로드를 실제로 어떻게 구동할 수 있는지 직접 확인해봤습니다. 이번 포스트에서는 MiniMax의 최신 영상 생성 모델 H3를 gcube RTX 5090 (32GB) 워크로드에 설치하고, 실제로 5초/10초 영상을 생성하는 전체 과정을 명령어 단위로 따라 할 수 있도록 정리했습니다.
H3는 MiniMax의 공식 라이선스 승인이 필요한 모델입니다. 한국은 사전 신청 절차가 있는 지역으로, 라이선스 약관·안전장치 약속·하위 전달 확인·기밀 유지 확인·면책 확인서까지 전 항목을 정식으로 확인·동의한 뒤 테스트를 진행했습니다.
1. gcube 워크로드 생성
- gcube.ai 로그인 → 워크로드 배포 → 워크로드 생성
- Step1 기본설정: 워크로드 설명 입력
- Step2 컨테이너 설정
-
레지스트리 유형:
Docker Hub -
컨테이너 이미지:
pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel -
컨테이너 포트:
8888 -
컨테이너 명령어:
bash -c "apt-get update && apt-get install -y git wget && pip install jupyterlab && jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root --NotebookApp.token='' --NotebookApp.password=''" -
동시 처리 요청 수: 20으로 설정
-
- Step3 GPU 설정:
Tier2 RTX 5090 × 1 / 32GB선택 - Step4 기타 옵션: 공유 메모리를 8GB로 설정
- Step5 최종배포:
즉시 배포선택 → 배포 - 배포 완료 후 워크로드 상세 페이지의 HTTP 서비스 URL에서
/lab으로 접속하면 JupyterLab이 열립니다.
2. 공통 환경 설정
JupyterLab 터미널을 열고, 먼저 bash 셸로 전환합니다.
bash
기본 패키지 설치
python3 -m pip install --quiet -U huggingface_hub diffusers transformers accelerate sentencepiece imageio imageio-ffmpeg
apt-get install -y tmux git
Hugging Face 로그인
hf auth login
"Paste an access token"을 선택한 뒤 발급받은 토큰을 붙여넣습니다.
대용량 다운로드는 tmux + 재시도 루프로 실행 모델 파일이 20GB 이상으로 크기 때문에, 아래처럼 백그라운드 세션 + 실패 시 자동 재시도 구조로 감싸 안정적으로 받습니다.
tmux new-session -d -s dl_h3_dit 'cd /workspace/ComfyUI && until hf download Comfy-Org/MiniMax-H3 --include "diffusion_models/minimax_h3_fl2va_pruned_fp8_scaled.safetensors" --local-dir models; do echo RETRY_$(date); sleep 5; done > /workspace/dl_h3_dit.log 2>&1' && echo STARTED
3. MiniMax H3 설치 및 실행
3-1. ComfyUI 설치
cd /workspace
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
python3 -m pip install --quiet -r requirements.txt
3-2. torch nightly(cu130)로 업그레이드
NVFP4 양자화 연산을 지원하려면 최신 torch 빌드가 필요합니다.
pip install --upgrade --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu130
3-3. 모델 다운로드 (총 ~42GB)
커뮤니티 양자화 버전(Comfy-Org)을 사용해 단일 RTX 5090 (32GB)에 올릴 수 있는 구성으로 받습니다.
mkdir -p /workspace/ComfyUI/models/diffusion_models /workspace/ComfyUI/models/text_encoders /workspace/ComfyUI/models/vae /workspace/ComfyUI/models/loras
# 트랜스포머 (FP8, ~20GB)
tmux new-session -d -s dl_h3_dit 'cd /workspace/ComfyUI && until hf download Comfy-Org/MiniMax-H3 --include "diffusion_models/minimax_h3_fl2va_pruned_fp8_scaled.safetensors" --local-dir models; do echo RETRY_$(date); sleep 5; done > /workspace/dl_h3_dit.log 2>&1' && echo STARTED
# 텍스트 인코더 (NVFP4 AWQ, ~15.7GB)
tmux new-session -d -s dl_h3_te 'cd /workspace/ComfyUI && until hf download Comfy-Org/MiniMax-H3 --include "text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors" --local-dir models; do echo RETRY_$(date); sleep 5; done > /workspace/dl_h3_te.log 2>&1' && echo STARTED
# Video VAE (FP16, ~4.9GB)
tmux new-session -d -s dl_h3_vvae 'cd /workspace/ComfyUI && until hf download Comfy-Org/MiniMax-H3 --include "vae/minimax_h3_video_vae_fp16.safetensors" --local-dir models; do echo RETRY_$(date); sleep 5; done > /workspace/dl_h3_vvae.log 2>&1' && echo STARTED
# Audio VAE (FP32, ~578MB)
tmux new-session -d -s dl_h3_avae 'cd /workspace/ComfyUI && until hf download Comfy-Org/MiniMax-H3 --include "vae/minimax_h3_audio_vae_fp32.safetensors" --local-dir models; do echo RETRY_$(date); sleep 5; done > /workspace/dl_h3_avae.log 2>&1' && echo STARTED
# Turbo LoRA (BF16, ~1.9GB)
tmux new-session -d -s dl_h3_lora 'cd /workspace/ComfyUI && until hf download Comfy-Org/MiniMax-H3 --include "loras/minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors" --local-dir models; do echo RETRY_$(date); sleep 5; done > /workspace/dl_h3_lora.log 2>&1' && echo STARTED
3-4. ComfyUI 서버 실행
gcube 워크로드는 포트를 하나만(8888, Jupyter) 외부로 노출하는 구조라 ComfyUI 자체 웹 화면(8188)에는 브라우저로 접속할 수 없습니다. 서버는 백그라운드로 띄우고, 이후 API를 직접 호출하는 방식으로 생성 요청을 보냅니다.
tmux new-session -d -s comfyui 'cd /workspace/ComfyUI && python3 main.py --listen 0.0.0.0 --port 8188 > /workspace/comfyui.log 2>&1' && echo STARTED
tail -20 /workspace/comfyui.log
To see the GUI go to: http://0.0.0.0:8188가 보이면 정상 기동입니다.
3-5. 워크플로우를 API 포맷으로 변환
공식 워크플로우 템플릿은 서브그래프(subgraph) 구조라 /prompt API가 바로 받지 않습니다. ComfyUI 서버의 /object_info를 조회해 각 노드의 위젯 순서를 파악하고, 서브그래프를 평탄화된 JSON으로 변환하는 스크립트를 작성해 사용했습니다. (이 방식은 다른 서브그래프 기반 워크플로우를 gcube에서 헤드리스로 돌릴 때도 그대로 재사용 가능합니다.)
cd /workspace/ComfyUI
wget -q https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_minimax_h3_t2v.json -O h3_t2v.json
python3 convert.py
Wrote /workspace/ComfyUI/h3_t2v_api.json with 23 nodes가 출력되면 성공입니다.
3-6. 5초/10초 클립 생성 요청
변환된 JSON을 /prompt 엔드포인트로 POST 요청하면 생성이 시작됩니다. 5초 클립이 완전히 끝난 것을 확인한 뒤 길이 값을 10으로 바꿔 10초 클립을 이어서 제출합니다.
import json, urllib.request
p = json.load(open('h3_t2v_api.json'))
req = urllib.request.Request('http://127.0.0.1:8188/prompt',
data=json.dumps({'prompt': p}).encode(),
headers={'Content-Type': 'application/json'})
r = urllib.request.urlopen(req)
print(r.read().decode())
3-7. 완료 확인 및 결과물 확인
로그에서 Prompt executed in XX.XX seconds가 뜨면 완료입니다.
tail -20 /workspace/comfyui.log
find /workspace/ComfyUI/output -name '*.mp4'
생성된 영상은 JupyterLab 왼쪽 파일 브라우저에서 ComfyUI → output → video 경로로 들어가 더블클릭하면 바로 재생되고, 우클릭 → Download로 로컬에 받을 수 있습니다.
4. 실측 결과
864×480 해상도, 20 스텝 기준 순수 생성 시간입니다.
| 구간 | 5초 클립 (124프레임) | 10초 클립 (243프레임) |
|---|---|---|
| 순수 생성시간 | ~65.6초 | ~184.8초 |
동일 절차로 두 차례 재현 테스트를 진행한 결과도 원본 수치 대비 오차 5% 이내로 안정적으로 재현되었습니다.
마치며
MiniMax H3처럼 최근 공개된 대형 영상 생성 모델도, 커뮤니티 양자화 버전과 API 기반 실행 방식을 활용하면 gcube RTX 5090 한 장으로 처음부터 끝까지 구동해볼 수 있습니다. 이번에 정리한 절차는 그대로 따라 할 수 있는 재현 매뉴얼로 남겨두었으며, 다음 포스트에서는 또 다른 영상 생성 모델(LTX)로 진행한 테스트도 다룰 예정입니다.
실험 환경: gcube Tier2 RTX 5090 × 1 (32GB), PyTorch 2.5.1 / nightly cu130, ComfyUI