Karma XPU 멀티 GPU 확장성: GPU 4장이 최적인 이유
Karma XPU에서 GPU를 늘릴수록 효과가 줄어드는 이유와 여러분의 씬에 맞는 GPU 수를 찾는 방법:
- 모든 GPU가 같은 프레임을 렌더링합니다: Karma XPU는 모든 OptiX GPU와 CPU의 샘플을 하나의 이미지로 더하며, 메모리가 합쳐지지 않으므로 GPU마다 씬 전체를 담아야 합니다.
- GPU를 늘려도 빨라지지 않는 작업이 있습니다: 씬 로딩, 셰이더 컴파일, 샘플을 합치고 AOV를 쓰는 CPU 쪽 단계는 GPU 1장이든 4장이든 시간이 거의 같으므로, 카드를 더할 때마다 줄어드는 시간이 적어집니다.
- 여러분의 씬에서 측정하세요: SideFX 직원은 KARMA_XPU_DISABLE_DEVICE_n으로 GPU를 끄고 1장, 2장, 4장의 시간을 재 보라고 제안합니다. 속도 향상은 1장 시간을 멀티 GPU 시간으로 나눈 값입니다.
- iRender에서는: 저희 경험상 Karma XPU는 RTX 5090 4장 서버에서 가장 잘 돌아갑니다. 더 빨리 끝내려면 GPU 4장 서버를 더 시작하세요.
Karma XPU 씬이 GPU 4장에서 4배 빨라질 거라고 생각하기 쉽지만 그렇지 않습니다. GPU를 하나 더할 때마다 효과가 조금씩 줄어들고, Karma XPU는 GPU 전용 렌더러보다 그 곡선이 더 일찍 평평해집니다.
이 글은 Karma XPU가 프레임을 디바이스 사이에 나누는 방식, 프레임의 일부가 카드를 늘려도 빨라지지 않는 이유, 여러분의 씬에서 확장성을 측정하는 방법, 그리고 저희 멀티 GPU 서버에서 본 결과를 설명합니다. 기술적인 내용은 SideFX 문서와 SideFX 포럼의 SideFX 직원 답변을 따릅니다.
Karma XPU가 프레임 하나에 여러 GPU를 쓰는 방식
Karma XPU는 찾은 호환 디바이스를 모두 사용합니다. NVIDIA GPU는 각각 OptiX 디바이스가 되고 CPU는 EmbreeCPU 디바이스가 됩니다. 이 디바이스들은 모두 같은 이미지를 렌더링하며, 뷰포트 렌더 통계에 디바이스별 기여 비율이 표시됩니다. SideFX 개발자는 포럼에서 이를 위해 모든 디바이스가 정확히 같은 결과를 내야 하므로 XPU가 모든 디바이스에서 fp32 연산을 쓴다고 설명했습니다.
멀티 GPU 머신에서는 두 가지가 중요합니다:
- 메모리는 합쳐지지 않습니다. SideFX 문서에 따르면 GPU는 각각 따로 다뤄지므로 카드마다 씬 전체를 담아야 합니다. 24 GB 카드 4장이어도 씬 하나의 한도는 24 GB입니다.
- CPU가 할 일은 여전히 있습니다. 렌더링 전과 도중에 Houdini는 USD 스테이지를 불러오고 갱신하며, 디바이스마다 셰이더를 컴파일하고, 모든 디바이스의 샘플을 합치고, AOV를 써야 합니다. SideFX 개발자는 매우 빠른 GPU나 여러 GPU가 느린 CPU와 짝지어진 경우를 위해 AOV 데이터 쓰기를 멀티스레드로 바꿨다고 밝혔습니다.
GPU 몇 장 이후 속도 향상이 둔해지는 이유
프레임을 두 부분으로 생각해 보세요. 한 부분은 GPU 렌더링 자체로, 실제로 카드들 사이에 나뉩니다. 다른 부분은 카드를 더해도 줄지 않는 작업입니다. 씬 로딩과 갱신, 셰이더 컴파일, 샘플을 합치고 이미지를 쓰는 CPU 쪽 단계입니다. GPU를 늘릴수록 고정된 부분이 프레임에서 차지하는 비중이 커집니다.
이 그림은 측정값이 아니라 예시입니다. CPU 쪽 고정 비중이 20%라면 가능한 최대 속도 향상은 1 ÷ (0.2 + 0.8 ÷ n)로, GPU 2장에서 1.7배, 4장에서 2.5배입니다(저희 계산). 여러분 씬의 고정 비중은 더 크거나 작을 수 있으므로 아래 방법으로 직접 측정하세요.
iRender 서버에서 본 결과
저희 멀티 GPU 서버에서 Karma XPU는 GPU 1장에서 2장으로 갈 때 확실히 빨라지고 4장까지 계속 빨라집니다. 저희 RTX 5090 8장 서버에서도 Karma XPU는 렌더링되지만 작업 하나가 GPU 4장보다 조금 빨리 끝날 뿐이므로, Karma XPU는 RTX 5090 4장 서버로 제공합니다. 시퀀스를 더 빨리 끝내려면 GPU 4장 서버를 더 시작해 서버마다 프레임 범위를 맡기세요.
Karma XPU의 확장 비율은 씬에 따라 크게 달라지므로 따로 공개하지 않습니다. AOV가 많은 가벼운 씬과 긴 볼륨 렌더링은 전혀 다르게 동작합니다. 직접 측정하세요.
여러분의 씬에서 Karma XPU 확장성을 측정하는 방법
SideFX 개발자가 포럼에서 제안한 방법은 디바이스 번호를 받는 디바이스별 변수로 디바이스를 끄면서 같은 프레임을 렌더링하는 것입니다:
| 테스트 | 변수 예시 (GPU 3장: 0, 1, 2) | 알 수 있는 것 |
|---|---|---|
| GPU 1장 | KARMA_XPU_DISABLE_DEVICE_0=0, KARMA_XPU_DISABLE_DEVICE_1=1, KARMA_XPU_DISABLE_DEVICE_2=1 | GPU 1장 기준값 |
| GPU 2장 | KARMA_XPU_DISABLE_DEVICE_0=0, KARMA_XPU_DISABLE_DEVICE_1=0, KARMA_XPU_DISABLE_DEVICE_2=1 | 두 번째 카드로 얻는 효과 |
| GPU 전체, CPU 없음 | KARMA_XPU_DISABLE_EMBREE_DEVICE=1 | CPU 도움 없는 GPU 전용 속도 |
| CPU만 | KARMA_XPU_DISABLE_OPTIX_DEVICE=1 | CPU 디바이스 혼자서 내는 몫 |
디바이스별 변수는 SideFX 포럼에서 SideFX 개발자가 제시한 것이고, Embree와 OptiX 변수는 SideFX Karma XPU 문서에 있습니다. 디바이스 번호는 머신마다 다르므로 어떤 번호가 어떤 카드인지 확인하세요.
- 대표적인 프레임을 고르고 husk로 커맨드라인에서 렌더링해 뷰포트가 끼어들지 않게 합니다. 포럼 사용자들은 뷰포트가 GPU 하나를 계속 쓰고 있어 뷰포트 테스트 결과가 왜곡될 수 있음을 확인했습니다.
- 네 번 렌더링합니다: 위 변수로 CPU만, GPU 1장, 2장, 전체. 새 변수가 반영되도록 실행할 때마다 렌더 프로세스를 다시 시작하세요.
- 각 실행의 전체 시간을 기록합니다. 샘플링 시간만이 아니라 시작부터 이미지가 저장될 때까지입니다.
- 속도 향상을 계산합니다: 1장 시간을 멀티 GPU 시간으로 나눕니다. GPU 2장에서 1.7이 나오면 프레임이 1.7배 빨리 끝났다는 뜻입니다.
- 디바이스별 기여 비율을 확인합니다 . 렌더 통계에서 한 GPU의 기여가 다른 GPU보다 훨씬 적다면 확장성을 탓하기 전에 메모리나 드라이버 문제를 찾아보세요.
CPU 쪽이 따라가도록 돕기
- 블렌딩 스레드를 늘립니다. 느린 멀티 GPU 구성에서 SideFX 개발자는 KARMA_XPU_NUM_PER_DEVICE_BLENDING_THREADS를 기본값 1에서 2나 3으로 올려 보라고 제안했습니다. 디바이스별 샘플을 합치는 데 CPU 스레드를 더 배정합니다. 모든 경우에 맞는 설정은 아니므로 여러분의 프레임에서 테스트하세요.
- Houdini를 최신으로 유지합니다. SideFX는 빠른 GPU나 여러 GPU를 쓰는 머신을 위해 AOV 쓰기 같은 CPU 쪽 단계를 멀티스레드로 바꿨습니다.
- 필요한 AOV만 씁니다. AOV, 딥 이미지, Cryptomatte 레이어가 늘 때마다 프레임당 CPU 쪽 작업이 늘어납니다.
- 라이브 시뮬레이션 대신 캐시를 불러옵니다. 빠른 로컬 스토리지에 캐시한 지오메트리와 볼륨으로 렌더링하면 프레임마다 Houdini가 상위 노드를 쿡하기를 기다리지 않습니다.
- 강한 CPU를 씁니다. iRender의 RTX 5090 4장 서버는 32코어 AMD Ryzen™ Threadripper™ PRO 5975WX를 사용합니다.
멀티 GPU Karma XPU에는 SaaS와 IaaS 렌더팜 중 무엇이 맞을까?
두 렌더팜 모델은 같은 프레임을 렌더링합니다. 멀티 GPU Karma XPU에서의 차이는 프레임 하나에 GPU를 몇 장 쓸지 누가 정하는지, 그리고 확장성을 직접 측정할 수 있는지입니다.
| 상황 | SaaS 렌더팜 | IaaS 렌더팜(iRender) |
|---|---|---|
| 샷이 승인되었고 프레임만 필요한 경우 | 잘 맞습니다. 프로젝트를 업로드하면 렌더팜이 프레임을 렌더링하며, 보통 여러 머신에 나누어 처리하므로 서버를 관리할 필요가 없습니다. | 이 방식도 가능하지만 서버를 직접 시작하고 사용하고 종료해야 합니다. |
| 마감이 있어 렌더링 시작과 종료 시점을 알아야 할 때 | 작업이 렌더팜 대기열에 들어가므로 시작 시점은 렌더팜이 얼마나 바쁜지에 달려 있습니다. 많은 렌더팜이 더 빨리 시작하려면 우선순위가 높은 요금제를 판매합니다 | 서버가 부팅되는 순간부터 내 작업만 실행하므로, 렌더링 시작 시점을 직접 정하고 전체 작업 시간을 가늠할 수 있습니다 |
| 프레임마다 렌더링할 GPU 수를 직접 정하고 싶은 경우 | 작업을 어느 머신에 어떻게 배치할지는 렌더팜이 정합니다. | GPU 1, 2, 4장 서버를 고르거나, 디바이스 변수로 프로세스별 GPU를 끕니다. |
| 여러분의 씬에서 확장성을 측정하고 싶은 경우 | 완료된 작업과 로그를 비교합니다. | 같은 서버에서 GPU 1, 2, 4장 테스트를 돌려 시간을 바로 비교합니다. |
| 씬이 GPU 하나의 메모리 한도에 가까운 경우 | 제출하기 전에 렌더팜의 GPU 메모리를 확인하세요. | RTX 5090은 카드마다 32 GB이며, 메모리는 카드별이고 합산되지 않습니다. |
이 작업에서 두 렌더팜 모델이 어떻게 동작하는지 비교한 것이며, 속도 테스트가 아닙니다.
간단한 기준: 샷이 승인되었고 프레임만 필요하다면 SaaS 렌더팜이 잘 맞습니다. GPU 수를 직접 고르거나, 여러분의 씬에서 확장성을 재거나, husk 프로세스별로 GPU를 나누고 싶다면 IaaS 서버를 쓰세요.
iRender 서버에서 확장성 테스트하기
- 프로젝트와 캐시를 업로드합니다 . 서버를 시작하기 전에 iRender Drive에 올리세요. 업로드는 무료이며 임대 시간에 포함되지 않습니다.
- RTX 5090 4장 서버를 시작하고, Houdini를 한 번 설치한 뒤 여러분의 SideFX 라이선스로 로그인합니다. 서버 이미지는 세션 사이에 저장됩니다. 요금은 분 단위입니다.
- husk로 대표 프레임 하나의 시간을 잽니다 . 위 디바이스 변수로 GPU 1, 2, 4장에서 잽니다.
- 구성을 고릅니다 . 비용 대비 프레임당 시간이 가장 좋은 구성으로 시퀀스를 렌더링합니다.
- 더 빨리 끝내야 하나요? GPU 4장 서버를 더 시작해 각 서버에 프레임 범위를 나누세요. 총비용은 거의 같습니다.
다른 머신에서 시퀀스를 렌더링하기 전에
- 같은 Houdini 릴리스와 570 이상의 NVIDIA 드라이버를 쓰세요.
- 가장 무거운 프레임이 GPU 하나의 메모리에 들어가는지 확인하세요. GPU 간 메모리는 합쳐지지 않습니다.
- 더 이상 필요 없는 디바이스 테스트 변수는 지우세요. 프로세스별로 GPU를 나눈다면 일부러 남겨 두세요.
- husk로 렌더링하고 첫 프레임에서 디바이스별 기여 비율을 확인하세요.
- 가장 무거운 프레임의 시간을 먼저 재서 테스트와 비교하세요.
자주 묻는 질문
1. Karma XPU는 GPU 수에 비례해 빨라지나요?
아닙니다. GPU마다 도움은 되지만, 씬 로딩, 셰이더 컴파일, 샘플을 합치고 AOV를 쓰는 CPU 쪽 단계처럼 프레임의 일부는 카드를 늘려도 빨라지지 않습니다. 그래서 GPU를 하나 더할 때마다 줄어드는 시간이 이전보다 적어집니다.
2. Karma XPU에는 GPU를 몇 장 쓰는 게 좋나요?
iRender 서버에서 저희가 경험한 바로는 Karma XPU는 GPU 1장에서 2장으로 갈 때 확실히 빨라지고 4장까지 계속 빨라집니다. 4장을 넘으면 작업 하나에서 늘어나는 속도가 작으므로, Karma XPU에는 GPU 4장 서버를 권장하고 시퀀스를 더 빨리 끝내야 할 때는 서버를 더 쓰시길 권합니다.
3. Karma XPU는 여러 GPU의 VRAM을 합쳐 쓰나요?
아닙니다. SideFX 문서에 따르면 GPU는 각각 따로 다뤄지고 메모리는 합쳐지지 않으므로, GPU마다 씬 전체를 담아야 합니다. 24 GB 카드 4장이어도 씬 하나의 한도는 24 GB입니다.
4. 일부 GPU만으로 Karma XPU를 테스트하려면 어떻게 하나요?
SideFX 개발자가 제안한 디바이스별 변수를 쓰세요. 예를 들어 KARMA_XPU_DISABLE_DEVICE_1=1은 두 번째 GPU를 끕니다. 같은 프레임을 GPU 1장, 2장, 전체로 렌더링하고 1장 시간을 각 멀티 GPU 시간으로 나누세요.
5. CPU가 멀티 GPU Karma XPU 렌더링을 느리게 할 수 있나요?
네. CPU는 여전히 씬을 불러오고, 셰이더를 컴파일하고, 모든 디바이스의 샘플을 합치고, AOV를 씁니다. SideFX는 이 단계 일부를 멀티스레드로 바꿨고, SideFX 개발자는 빠른 GPU가 느린 CPU를 기다릴 때 KARMA_XPU_NUM_PER_DEVICE_BLENDING_THREADS를 올려 보라고 제안했습니다.
6. 최종 프레임을 렌더링할 머신에서 Karma XPU 확장성을 확인할 수 있나요?
네, IaaS 렌더팜에서는 가능합니다. iRender에서는 서버 전체를 임대하므로 husk로 같은 프레임을 GPU 1장, 2장, 4장에서 재고, 렌더 통계에서 디바이스를 하나씩 확인한 뒤, 같은 하드웨어에서 시퀀스를 렌더링할 수 있습니다.
iRender에서 Houdini Karma XPU 씬 렌더링하기
iRender는 IaaS GPU 렌더팜입니다. NVIDIA RTX 5090(32 GB) GPU 4장과 AMD Ryzen™ Threadripper™ PRO CPU, 256 GB ECC RAM, 2 TB NVMe SSD를 갖춘 베어메탈 서버를 임대해 원격 데스크톱으로 접속하고, 전체 관리자 권한으로 내 워크스테이션처럼 작업합니다. Houdini는 직접 설치하고 여러분의 SideFX 라이선스를 사용합니다. 서버 이미지가 세션 사이에 저장되므로 Houdini, 패키지, Karma XPU 커널 캐시가 그대로 남아 있습니다. Karma XPU에는 GPU 4장 서버를 권장합니다.
멀티 GPU 서버는 분 단위로 과금되며(1 GPU 서버는 최소 1시간), 3시간 이상 세션은 10% 할인됩니다. 4 GPU 서버는 수랭식이며, 자체 측정 결과 장시간 렌더링 중에도 GPU 온도가 60–70°C로 유지됩니다. 엘리트 지원팀이 주 7일 핫라인, 라이브 채팅, Skype, WhatsApp, 이메일로 도와드립니다.
이 영상은 iRender 서버에서 Houdini Karma XPU 씬을 다섯 단계로 렌더링하는 과정을 보여줍니다:
신규 사용자는 첫 충전 시 100% 보너스(최소 $50)를 받습니다. 서버 옵션은 Karma XPU 렌더팜 페이지에서 확인하거나 iRender GPU 앱.


