Karma XPU 무음 CPU 폴백: 원인, 점검, 해결
“무음 CPU 폴백”이 무엇인지, 어떻게 잡아내고 막는지:
- 정체: OptiX GPU 디바이스가 메모리 부족 등으로 실패하면, SideFX 문서에 따르면 CPU를 포함한 나머지 디바이스가 그 작업을 이어받습니다. 프레임은 끝나지만 훨씬 느려집니다.
- 놓치기 쉬운 이유: 렌더링이 멈추지 않습니다. 디바이스 상태(fail)는 뷰포트 렌더 통계에 나오고 husk는 렌더 통계를 EXR에 저장하지만, 렌더팜 작업은 여전히 성공으로 표시될 수 있습니다.
- 잡아내는 방법: 프레임 시간을 지켜보고 디바이스 목록을 읽으세요. 렌더팜 작업에는 KARMA_XPU_DISABLE_EMBREE_DEVICE를 설정해 실패한 GPU가 CPU 뒤에 숨지 못하게 하세요.
- iRender에서는: GPU마다 32 GB인 RTX 5090 서버는 무거운 씬에 여유를 주며, 서버에서 렌더 통계를 열어 첫 프레임이 렌더링되는 동안 모든 디바이스를 지켜볼 수 있습니다.
워크스테이션에서는 프레임당 몇 분이면 끝나던 Karma XPU 시퀀스가 다른 머신에서 갑자기 열 배 오래 걸리는데, 작업 로그에는 오류가 없습니다. 대부분은 GPU 하나 이상이 기여를 멈추고 CPU 혼자 계속 렌더링한 경우입니다. 아티스트들은 이를 Karma XPU 무음 CPU 폴백(silent CPU fallback)이라고 부릅니다.
이 글은 Karma XPU 안에서 실제로 무슨 일이 일어나는지, 흔한 원인, 렌더 통계와 husk 출력에서 확인하는 방법, 그리고 조용히 넘어가는 대신 확실히 실패하게 만드는 방법을 설명합니다. SideFX Houdini 문서와 SideFX 포럼의 SideFX 직원 답변을 바탕으로 했습니다.
무음 CPU 폴백의 실제 정체
Karma XPU는 여러 디바이스로 각 프레임을 동시에 렌더링합니다. NVIDIA GPU는 각각 OptiX 디바이스이고 CPU는 EmbreeCPU 디바이스입니다. SideFX 문서는 그중 하나가 실패할 때를 이렇게 설명합니다. GPU 메모리 부족처럼 디바이스가 실패하면 CPU를 포함한 나머지 디바이스가 부하를 이어받습니다. SideFX는 어떤 디바이스 조합으로 렌더링하든 결과는 같아야 한다고도 설명합니다.
이 설계는 렌더링이 중단되지 않게 해 주지만 대가가 있습니다. SideFX는 GPU 디바이스가 EmbreeCPU보다 훨씬 많이 기여한다고 설명하므로, GPU가 빠지면 CPU가 CPU 속도로 프레임을 끝냅니다. 이미지는 멀쩡하고, 시간과 디바이스 목록만이 문제를 알려 줍니다.
Karma XPU 렌더링이 CPU로 넘어가는 세 가지 경우
| 일어나는 일 | 흔한 원인 | 보이는 현상 |
|---|---|---|
| GPU가 아예 시작하지 않음 | 570보다 오래된 NVIDIA 드라이버, Compute Capability 5.0 미만 GPU, 또는 환경 어딘가에 설정된 KARMA_XPU_DISABLE_OPTIX_DEVICE나 optix가 빠진 KARMA_XPU_DEVICES 목록 | OptiX 디바이스가 없거나 disabled로 표시됨. 첫 프레임부터 EmbreeCPU가 모든 작업을 함 |
| GPU가 도중에 실패함 | 씬, 텍스처, AOV 버퍼가 그 GPU 메모리에 더 이상 들어가지 않음. GPU 간 메모리는 합쳐지지 않음 | OptiX 디바이스 상태가 fail로 바뀜. 주로 가장 무거운 프레임에서만 |
| GPU가 계속 렌더링하지만 느려짐 | GPU 메모리가 차서 Karma XPU가 계속 진행하려고 텍스처 타일을 내보내기 시작함 | 실패한 디바이스는 없지만 프레임 시간이 늘어남. eviction이 렌더 통계에 표시됨 |
SideFX Karma XPU 문서 기준. 마지막 줄은 CPU 폴백은 아니지만 겉으로는 비슷해 보이므로 함께 확인하세요.
잡아내는 방법
- 디바이스 목록을 읽으세요. 뷰포트 오른쪽 위 렌더 진행 표시 아래에 디바이스가 나열되며, 각각 상태(idle, init, disabled, fail)와 이미지 기여 비율이 표시됩니다. Display Options의 Guides 탭에서 Render Stats를 켜면 디바이스가 실패한 이유까지 더 자세히 볼 수 있습니다.
- 배치 렌더링의 렌더 통계를 남기세요. SideFX에 따르면 husk는 Karma의 렌더 통계를 렌더링된 EXR의 메타데이터로 저장합니다. renderstatsreport 유틸리티는 이를 HTML 보고서로 만듭니다. SideFX는 Karma XPU 이미지에는 Karma CPU보다 통계가 적게 담긴다고 설명하므로, 보고서는 여러 확인 수단 중 하나로 쓰세요.
- husk 출력을 로그로 남기세요. 더 높은 상세 수준(예: 렌더팜 제출 도구에서 흔히 쓰는 –verbose 9)으로 husk를 실행하고, 프레임 범위마다 텍스트 로그를 보관하세요.
- 프레임 시간을 지켜보세요. 샷에 변화가 없는데 이웃 프레임보다 몇 배 오래 걸리는 프레임이 가장 흔한 신호입니다. 위 그림과 같습니다.
GPU가 실패하면 작업이 멈추게 하기
렌더팜에서는 보통 문제가 있는 프레임이 느리게 끝나기보다 실패하기를 원합니다. SideFX는 CPU 디바이스를 빼는 변수 두 가지를 문서화했습니다. KARMA_XPU_DISABLE_EMBREE_DEVICE, 그리고 OptiX GPU 엔진만 쓰는 KARMA_XPU_DEVICES=optix입니다. CPU 디바이스가 없으면 GPU가 실패해도 넘어갈 곳이 없으므로 문제가 바로 드러납니다.
렌더 머신의 작업 환경, Houdini 패키지 파일 또는 houdini.env에 변수를 설정하고, 가장 무거운 프레임을 렌더링한 뒤에만 전체 범위를 보내세요. 뷰포트에서 CPU의 도움이 좋다면 인터랙티브 작업에서는 지우세요.
원인 해결하기
- 드라이버와 하드웨어: SideFX는 NVIDIA 드라이버 570 이상을 요구하고 Windows에서는 575 이상을 강력히 권장합니다. GPU는 Compute Capability 5.0 이상이어야 합니다.
- 변수: 환경, 패키지 파일, houdini.env에서 테스트 후 남은 KARMA_XPU 변수를 찾아보세요.
- 메모리: GPU마다 씬을 혼자 담아야 합니다. 눈에 띄지 않는 곳은 텍스처 해상도를 낮추고, 무거운 헤어나 퍼에는 KARMA_XPU_OPTIX_CURVE_OPT_LEVEL=1(SideFX의 저메모리 설정)을 써 보고, 필요 없는 AOV는 빼세요. SideFX는 딥 이미지와 Karma XPU를 함께 쓰면 husk가 전체 래스터를 할당해야 한다고 설명하므로, 딥 출력은 일반 EXR보다 메모리가 훨씬 많이 듭니다.
- Windows 메모리 넘침: SideFX 개발자는 Windows에서 GPU 메모리가 시스템 메모리(“공유 메모리”)로 넘쳐도 꽤 괜찮게 동작할 수 있지만, Linux나 GPU 2장 구성에서는 작동하지 않는다고 설명했습니다. 따라서 멀티 GPU 렌더 머신에서는 기대하지 마세요.
- GPU당 메모리 늘리기: 가장 무거운 프레임이 24 GB에 가깝다면 32 GB RTX 5090이 GPU에 머물 여유를 줍니다.
Karma XPU가 CPU로 넘어갈 수 있을 때는 SaaS와 IaaS 렌더팜 중 무엇이 맞을까?
Karma XPU는 어떤 디바이스 조합에서도 같은 결과를 내므로 두 렌더팜 모델은 같은 이미지를 만듭니다. 차이는 GPU가 빠졌다는 사실을 얼마나 빨리 알 수 있는지, 그리고 그때 무엇을 바꿀 수 있는지입니다.
| 상황 | SaaS 렌더팜 | IaaS 렌더팜(iRender) |
|---|---|---|
| 씬을 테스트했고 GPU 메모리에 여유 있게 들어가는 경우 | 잘 맞습니다. 프로젝트를 업로드하면 렌더팜이 프레임을 렌더링하며, 보통 여러 머신에 나누어 처리하므로 서버를 관리할 필요가 없습니다. | 이 방식도 가능하지만 서버를 직접 시작하고 사용하고 종료해야 합니다. |
| 마감이 있어 렌더링 시작과 종료 시점을 알아야 할 때 | 작업이 렌더팜 대기열에 들어가므로 시작 시점은 렌더팜이 얼마나 바쁜지에 달려 있습니다. 많은 렌더팜이 더 빨리 시작하려면 우선순위가 높은 요금제를 판매합니다 | 서버가 부팅되는 순간부터 내 작업만 실행하므로, 렌더링 시작 시점을 직접 정하고 전체 작업 시간을 가늠할 수 있습니다 |
| 모든 GPU가 렌더링하는지 확인해야 하는 경우 | 렌더팜이 주는 작업 로그와 프레임 시간을 읽습니다. | 서버에서 뷰포트 렌더 통계를 열고 OptiX 디바이스를 실시간으로 봅니다. |
| 무거운 프레임에서 GPU가 실패하고 그 이유를 찾아야 하는 경우 | 테스트마다 작업 하나입니다. 씬을 바꾸고, 제출하고, 기다리고, 로그를 읽습니다. | 서버에서 텍스처, AOV, 커브 설정을 바꾸고 같은 프레임을 바로 다시 렌더링합니다. |
| 가장 무거운 프레임이 24 GB에 가까운 경우 | 렌더팜이 어떤 GPU를 쓰고 GPU마다 메모리가 얼마인지 확인하세요. | 모든 GPU가 32 GB인 RTX 5090 서버를 씁니다. |
이 작업에서 두 렌더팜 모델이 어떻게 동작하는지 비교한 것이며, 속도 테스트가 아닙니다.
간단한 기준: 씬을 테스트했고 GPU 메모리에 여유 있게 들어가며 프레임만 필요하다면 SaaS 렌더팜이 잘 맞습니다. 실패 시 작업이 멈추도록 GPU 전용 변수를 추가해 달라고 요청하세요. 가장 무거운 프레임이 메모리 한도에 가깝거나 GPU가 실패하는 이유를 찾아야 한다면, 모든 디바이스를 볼 수 있는 IaaS 서버에서 작업하세요.
iRender 서버에서 폴백 점검하기
- 프로젝트와 캐시를 업로드합니다 . 서버를 시작하기 전에 iRender Drive에 올리세요. 업로드는 무료이며 임대 시간에 포함되지 않습니다.
- RTX 5090 4장 서버를 시작하고 (GPU마다 32 GB), Houdini를 한 번 설치한 뒤 여러분의 SideFX 라이선스로 로그인합니다. 요금은 분 단위입니다.
- 가장 무거운 프레임을 엽니다 . Solaris에서 Render Stats를 켜고 모든 OptiX 디바이스가 렌더링하며 fail이 없는지 확인합니다.
- husk로 렌더링합니다 . KARMA_XPU_DISABLE_EMBREE_DEVICE=1과 상세 로그로 렌더링하고 프레임 시간을 기록합니다.
- 시퀀스를 렌더링합니다 . 그 첫 프레임과 프레임 시간을 비교하세요. 마감이 촉박하면 서버를 더 시작해 각 서버에 프레임 범위를 나누세요.
다른 머신에서 시퀀스를 렌더링하기 전에
- 같은 Houdini 릴리스와 570 이상의 NVIDIA 드라이버를 쓰세요.
- 환경, 패키지, houdini.env에서 남길 생각이 없던 KARMA_XPU 변수를 확인하세요.
- 가장 무거운 프레임이 AOV까지 포함해 GPU 하나의 메모리에 들어가는지 확인하세요.
- Render Stats나 husk 상세 로그와 함께 가장 무거운 프레임을 먼저 렌더링해 모든 OptiX 디바이스가 작동하는지 확인하세요.
- EXR 렌더 통계를 보관하고 시퀀스 전체의 프레임 시간을 비교하세요.
자주 묻는 질문
1. Karma XPU 무음 CPU 폴백이란 무엇인가요?
GPU 메모리 부족 등으로 OptiX GPU 디바이스가 기여를 멈췄을 때 일어나는 일입니다. SideFX 문서에 따르면 CPU를 포함한 나머지 디바이스가 그 작업을 이어받으므로 프레임은 끝나지만, 훨씬 느린 속도로 끝나고 작업도 멈추지 않습니다.
2. Karma XPU가 CPU로만 렌더링하는지 어떻게 알 수 있나요?
뷰포트 렌더 통계의 디바이스 목록을 보세요. 디바이스마다 상태와 이미지 기여 비율이 표시되고, 실패한 GPU는 fail로 나옵니다. 배치 렌더링에서는 husk 상세 로그를 남기고, EXR에 저장된 렌더 통계를 확인하고, 프레임 시간을 비교하세요.
3. GPU가 가득 차면 Karma XPU가 데이터를 시스템 RAM으로 옮기나요?
텍스처는 타일 단위로 GPU에 스트리밍되며, GPU 메모리가 차면 Karma XPU는 필수적이지 않은 메모리를 내보내고 계속 렌더링합니다. SideFX는 이때 GPU가 크게 느려진다고 설명합니다. 그래도 감당하지 못하면 디바이스가 실패하고 나머지 디바이스가 프레임을 끝냅니다.
4. CPU로 넘어가는 대신 Karma XPU가 실패하게 하려면 어떻게 하나요?
렌더링 환경에 KARMA_XPU_DISABLE_EMBREE_DEVICE 또는 KARMA_XPU_DEVICES=optix를 설정하세요. 둘 다 CPU 디바이스를 빼므로 GPU가 실패해도 넘어갈 곳이 없어 문제가 바로 드러납니다.
5. Karma XPU에 OptiX 디바이스가 하나도 보이지 않는 이유는 무엇인가요?
가장 흔한 원인은 570보다 오래된 NVIDIA 드라이버, Compute Capability 5.0 미만 GPU, 또는 환경·패키지 파일·houdini.env에 설정된 KARMA_XPU_DISABLE_OPTIX_DEVICE 같은 환경 변수입니다.
6. 최종 프레임을 렌더링할 머신에서 CPU 폴백을 확인할 수 있나요?
네, IaaS 렌더팜에서는 가능합니다. iRender에서는 서버 전체를 임대하므로 가장 무거운 프레임을 Solaris에서 열어 렌더 통계에서 OptiX 디바이스를 하나씩 확인한 뒤, 같은 GPU에서 husk로 시퀀스를 렌더링할 수 있습니다.
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 앱.
내 머신에서 Karma XPU 렌더링이 느리다면, iRender의 Karma XPU 렌더팜는 Houdini를 직접 설치하고 여러분의 라이선스로 여러 장의 RTX 5090 GPU에서 렌더링하는 전용 원격 서버를 제공합니다 (Karma XPU에는 보통 GPU 4장 구성이 가장 효율적입니다).


