활용 사례

블렌더 렌더링을 GPU 서버에서 돌리기

Blender는 blender -b 명령으로 화면 없이 렌더링할 수 있어서 원격 GPU 서버에서 돌리기 좋아요. RT 코어가 있는 GPU에서 OptiX로 렌더링하고, 파일은 rsync로 주고받으세요.

업데이트
  1. RTX 3090 24GB시간당 230원

    RT 코어가 있고 메모리가 넉넉해서 대부분의 Cycles 씬을 OptiX로 렌더링할 수 있어요.

  2. GA102 20GB시간당 190원

    RTX 3080 계열 칩이라 RT 코어가 있고, 중간 규모 씬에 맞아요.

  3. AD103-32GB준비 중

    셋 중 메모리가 가장 커서 큰 씬과 고해상도 렌더링에 여유가 있어요.

내 모델에 필요한 메모리는 LLM VRAM 계산기로 확인할 수 있어요.

렌더팜 대신 GPU 서버를 쓰는 경우

내 PC로 애니메이션을 렌더링하면 그동안 다른 작업을 하기 어렵고, VRAM이 모자라면 큰 씬은 GPU로 렌더링되지 않기도 해요. 렌더팜은 파일만 올리면 되지만 쓸 수 있는 Blender 버전과 애드온이 서비스마다 정해져 있어요. GPU 서버를 직접 쓰면 내 PC와 같은 버전과 애드온으로 렌더링할 수 있어요.

  • 수백 프레임짜리 애니메이션을 렌더링해야 하는 프리랜서와 소규모 스튜디오
  • 졸업 작품이나 공모전 마감을 앞둔 학생
  • 각도와 색상만 바꾼 제품 스틸 이미지를 대량으로 뽑아야 하는 경우

조명과 재질을 뷰포트로 보며 다듬는 단계는 내 PC가 편해요. 원격 서버에는 완성한 씬의 최종 렌더링을 맡기세요.

RT 코어가 있는 GPU를 고르세요

Cycles는 NVIDIA GPU에서 CUDA나 OptiX로 렌더링해요. OptiX는 RT 코어로 광선 추적을 가속해서, RT 코어가 있는 GPU라면 대체로 OptiX가 유리해요.

렌더링 관점에서 본 GPU
GPURT 코어렌더링 용도
RTX 3090 24GB있음대부분의 씬
GA102 20GB있음중간 규모 씬
AD103-32GB (준비 중)있음큰 씬, 고해상도, 무거운 텍스처
RTX 3060 Ti 8GB (준비 중)있음가벼운 씬, 테스트 렌더
A100 · V100 (준비 중)없음렌더링에는 권하지 않아요

씬 전체가 VRAM에 올라가야 해서, 고해상도 텍스처와 오브젝트가 많을수록 메모리를 많이 써요. 모자라면 렌더링이 실패하거나 크게 느려질 수 있어요. 필요한 양은 내 PC에서 한 프레임을 렌더링할 때 렌더 창에 표시되는 메모리 피크 값으로 가늠해 보세요.

서버에 Blender 설치하기

Ubuntu 패키지의 Blender는 오래된 경우가 많아요. blender.org에서 내 PC와 같은 버전의 Linux용 압축 파일을 받으세요. 버전이 다르면 씬이 다르게 열리거나 애드온이 동작하지 않을 수 있어요. 공식 빌드는 NVIDIA 드라이버만 있으면 GPU로 렌더링돼서 CUDA 툴킷은 따로 설치하지 않아도 돼요.

bash
wget https://download.blender.org/release/Blender4.2/blender-4.2.3-linux-x64.tar.xz
tar -xf blender-4.2.3-linux-x64.tar.xz
export PATH="$HOME/blender-4.2.3-linux-x64:$PATH"
blender --version
Blender 4.2.3은 예시예요. 내 PC의 버전에 맞게 주소와 폴더 이름을 바꾸세요.

화면이 없는 서버에서 libXi.so.6 같은 그래픽 라이브러리가 없다는 오류가 나면 아래 패키지를 설치하세요.

bash
sudo apt install -y libx11-6 libxi6 libxxf86vm1 libxfixes3 libxrender1 libgl1 libxkbcommon0 libsm6

명령줄로 렌더링하기

아래 명령은 scene.blend의 1~250프레임을 Cycles와 OptiX로 렌더링해요.

bash
blender -b scene.blend -E CYCLES -o //render_#### -s 1 -e 250 -a -- --cycles-device OPTIX
  • -b scene.blend: 화면 없이 실행하고 .blend 파일을 열어요. 뒤의 설정이 이 파일에 적용되므로 다른 옵션보다 앞에 둬요.
  • -E CYCLES: 렌더 엔진을 Cycles로 지정해요.
  • -o //render_####: 출력 경로예요. //는 .blend 파일이 있는 폴더, ####는 네 자리 프레임 번호예요.
  • -s 1 -e 250: 시작 프레임과 끝 프레임이에요.
  • -a: 지정한 범위를 렌더링해요. 인자는 앞에서부터 차례로 처리되니 다른 설정 뒤에 둬요.
  • -- --cycles-device OPTIX: -- 뒤의 인자는 Cycles로 전달돼요.

샘플 수, 해상도, 출력 형식은 .blend 파일 설정을 따르니 올리기 전에 확인하세요. 전체를 돌리기 전에 -f로 한 프레임만 렌더링해 텍스처와 출력 경로를 확인하세요.

bash
blender -b scene.blend -E CYCLES -o //test_#### -f 1 -- --cycles-device OPTIX
1프레임만 테스트로 렌더링해요.

애니메이션은 영상 파일 대신 PNG나 OpenEXR 이미지 시퀀스로 렌더링하고, 영상은 끝난 뒤에 만드세요. 출력 설정의 Overwrite를 꺼 두면 중간에 끊겨도 다시 실행할 때 이미 있는 프레임을 건너뛰어요.

렌더링은 tmux 안에서 실행하세요. 그래야 SSH 연결이 끊겨도 서버에서 계속 돌아가요.

파일 올리기와 결과 내려받기

텍스처나 HDRI가 내 PC의 절대 경로로 연결돼 있으면 서버에서 파일을 찾지 못해 분홍색 재질로 렌더링돼요. 올리기 전에 File > External Data > Pack Resources로 리소스를 .blend 파일에 묶거나, Make Paths Relative로 상대 경로로 바꾼 뒤 프로젝트 폴더를 통째로 올리세요. 다른 .blend 파일을 링크해 쓰는 씬이라면 상대 경로로 바꿔 폴더째 올리는 편이 안전해요.

rsync는 바뀐 파일만 다시 보내고, -P를 붙이면 끊긴 전송을 이어서 받아요. 볼륨은 /mnt/data에 연결돼 있다고 가정했어요.

bash
rsync -avP ./my-project/ <사용자>@<서버 주소>:/mnt/data/my-project/
rsync -avP --include='render_*' --exclude='*' <사용자>@<서버 주소>:/mnt/data/my-project/ ./render/
내 PC에서 실행해요. 첫 줄은 프로젝트 올리기, 둘째 줄은 render_로 시작하는 결과만 내려받기예요.

SSH 포트가 22가 아니라면 -e "ssh -p 포트번호"를 붙이세요. 파일 몇 개만 옮길 때는 scp도 돼요. 접속 설정은 SSH로 GPU 서버 접속하기에 있어요.

서버 생성부터 삭제까지 작업 흐름

  1. 서버를 생성해요

    씬 크기에 맞는 GPU를 고르고, 프로젝트를 둘 볼륨을 연결해요.

  2. 프로젝트를 올리고 Blender를 준비해요

    리소스를 묶은 프로젝트를 rsync로 올리고, 내 PC와 같은 버전의 Blender를 설치해요. Blender를 볼륨에 풀어 두면 다음 서버에서 다시 받지 않아도 돼요.

  3. 테스트 프레임을 확인하고 전체를 렌더링해요

    한 프레임을 렌더링해 내려받아 확인하고, 문제가 없으면 tmux 안에서 전체를 렌더링해요.

  4. 결과를 내려받아요

    이미지 시퀀스를 rsync로 내려받고, 빠진 프레임이 없는지 확인해요.

  5. 서버를 삭제해요

    렌더링이 끝나면 바로 삭제하세요. 중지만 하면 GPU가 할당된 채로 같은 요금이 나가요.

Shelf에서는

  • “Ubuntu 22.04 + CUDA 12.4 (Docker, SSH)” 같은 예시 환경은 드라이버가 설치돼 있어서 Blender만 받아 풀면 돼요.
  • 영구 볼륨에 프로젝트와 결과를 두면 서버를 삭제해도 남고, 다른 GPU 서버에 연결해 이어서 렌더링할 수 있어요. 볼륨은 따로 저장 요금이 있어요.
  • 이용 요금은 서버를 생성한 시점부터 1시간 단위로 계산돼요. GPU별 요금은 요금 안내에서 볼 수 있어요.

자주 묻는 질문

OptiX와 CUDA 중 무엇을 써야 하나요?

RT 코어가 있으면 OptiX부터 쓰세요. 특정 기능이나 애드온에서 결과가 이상하면 --cycles-device CUDA로 바꿔 같은 프레임을 비교해 보세요.

A100이나 V100으로도 Blender 렌더링을 할 수 있나요?

학습용 데이터센터 GPU라 RT 코어가 없어요. CUDA로 렌더링은 되지만 OptiX의 하드웨어 광선 추적 가속을 받지 못해서, 렌더링에는 RTX 계열이 맞아요.

GPU 서버가 필요할 때

필요한 GPU와 개발 환경을 골라 시간 단위로 시작해요.