🔥 WAN 2.1 설치 및 실행 가이드
WAN 2.1은 Alibaba에서 개발한 텍스트-투-비디오(T2V) 및 이미지-투-비디오(I2V) AI 모델로, 생성형 AI 프로젝트에서 강력한 성능을 발휘합니다. 이번 글에서는 Docker 환경에서 WAN 2.1을 설치하고 Gradio UI를 실행하는 과정을 상세히 정리합니다. 또한, 직접 겪은 시행착오와 해결 방법을 함께 공유해봅니다.(윈도우 환경이 익숙하지 않아 docker를 고집하다 보니 빙빙 돌아간 부분이 다소 있었던 것 같습니다.)
🛠️ 설치 전 환경 설정
1️⃣ 시스템 사양
이번 실험을 진행한 시스템 사양은 다음과 같습니다.
- GPU: NVIDIA GeForce RTX 4090 (24GB VRAM)
- 운영체제: Windows (WSL 2 활용하여 Ubuntu 22.04 환경 구축)
- CUDA 버전: 11.8
- CPU: 28개 코어 할당
- RAM: 30GB (스왑 메모리 32GB 설정)
👉 설치 전에 nvidia-smi 명령어를 실행하여 GPU 드라이버와 CUDA 버전을 확인하세요.
nvidia-smi
출력 예시:
Driver Version: 530.41.03 CUDA Version: 11.8
2️⃣ Docker 설치 및 환경 설정
WSL 2 백엔드에서 Docker Desktop을 설치하고, GPU가 컨테이너에서 정상적으로 인식되는지 확인합니다.
- Docker Desktop 설치 (공식 문서)
- WSL 2 활성화
- NVIDIA Container Toolkit 설치
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
Docker 컨테이너에서 GPU가 정상적으로 인식되는지 확인하려면 아래 명령어를 실행합니다.
docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
출력이 정상적으로 나오면 환경이 정상적으로 설정된 것입니다. ✅
🚀 WAN 2.1 컨테이너 실행하기
이제 Docker 컨테이너를 실행하여 WAN 2.1을 구동해봅시다.
docker run --gpus all \
--cpus="28" --memory="30g" --memory-swap="32g" \
-p 7860:7860 \
-v /mnt/c/dev/wan/output:/app/output \
-it wan2.1-ui:latest
🔹 옵션 설명
- --gpus all: 모든 GPU 사용
- --cpus="28": CPU 28개 할당
- --memory="30g" --memory-swap="32g": 메모리 30GB, 스왑 32GB 설정
- -p 7860:7860: Gradio UI를 위한 포트 설정
- -v /mnt/c/dev/wan/output:/app/output: 로컬 디렉터리를 컨테이너에 마운트
📦 Git 저장소 클론 및 의존성 설치
컨테이너 내부에서 WAN 2.1의 Git 저장소를 클론 합니다.
git clone https://github.com/Wan-Video/Wan2.1.git /app/wan2.1-ui
cd /app/wan2.1-ui
⚠️ 시행착오 & 해결 방법
처음에는 app.py와 모델 파일을 로컬에서 마운트 했지만, 의존성 관리가 복잡해 Git 저장소를 직접 가져오는 방식으로 변경하였습니다.
🏗️ Python 환경 및 패키지 설치
Python 패키지 의존성을 설치합니다.
pip install torch==2.4.0+cu118 torchvision==0.19.0+cu118 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
NumPy 버전 충돌을 방지하기 위해 버전을 고정합니다.
pip install numpy==1.26.4
Flash-Attn 설치 (중요!)
WAN 2.1에서는 flash-attn이 필수인데, PyTorch 2.4.0 + CUDA 11.8과 호환되는 버전을 설치해야 합니다.
pip install https://github.com/Dao-AILab/flash-attention/releases/download/v2.6.3/flash_attn-2.6.3+cu118torch2.4cxx11abiFALSE-cp310-cp310-linux_x86_64.whl --no-cache-dir
만약. whl 파일 설치에 실패하면 소스에서 빌드해야 합니다.
export MAX_JOBS=4
pip install flash-attn==2.6.3 --no-build-isolation --no-cache-dir
설치가 완료되었는지 확인하려면 아래 명령어를 실행하세요.
python3 -c 'import torch; from flash_attn import flash_attn_func; print("Flash Attention is available!")'
출력이 Flash Attention is available!이면 정상적으로 설치된 것입니다. ✅
🎯 Gradio UI 실행
모든 설치가 완료되었다면, 이제 Gradio UI를 실행할 수 있습니다!
python3 app.py
이제 브라우저에서 http://localhost:7860 으로 접속하여 WAN 2.1의 Gradio UI를 확인할 수 있습니다. 🎉
📊 리소스 모니터링 및 최적화
비디오 생성 중 리소스 사용량을 모니터링하려면 아래 명령어를 사용합니다.
nvidia-smi
최적화 Tip
- VRAM 부족 문제가 발생하면 app.py에서 해상도를 조정하세요.
size="480*832" frame_num=20
- CPU 과부하가 발생할 경우, docker stats 명령어로 사용량을 점검하세요.
🔍 마무리: 시행착오 & 배운 점
🚧 시행착오
- CUDA 11.8과 PyTorch 2.6.0 버전 충돌 → PyTorch 2.4.0+cu118로 다운그레이드
- flash-attn 설치 문제 → .whl 파일 직접 다운로드
- NumPy 버전 문제 → numpy==1.26.4로 고정
💡 배운 점
- Docker 컨테이너에서 GPU 연동은 신중히 테스트 필요!
- PyTorch와 CUDA 버전 호환성을 미리 확인할 것!
- VRAM 부족 시 해상도를 낮추는 것이 효과적!
이제 생성된 ui를 통해서 WAN 2.1을 실행할 수 있을 것입니다. 다만 아직 최적화 방법을 잘 몰라서 엄청난 시간이 걸리고 영상은 3초 남짓인데.. 프레임을 늘리면 시간은 훨씬 더 소요가 될것 같아서 고민이 됩니다.
다음글에서는 wan 사이트에 있는 내용을 조금더 상세하게 올려 보겠습니다.