Agentic AI / Generative AI

NVIDIA Dynamo-Triton의 NVIDIA TensorRT Multi-Device 연동을 통한 다중 GPU 모델 서빙 단순화

Reading Time: 5 minutes

생성형 AI의 연산 및 메모리 요구량은 단일 GPU가 제공할 수 있는 수준을 지속적으로 뛰어넘고 있습니다. NVIDIA TensorRT multi-device 추론은 TensorRT 특유의 추론 최적화 성능을 그대로 유지하면서, NCCL 기반 분산 통신을 활용해 단일 TensorRT 네트워크를 여러 GPU에 걸쳐 실행할 수 있도록 지원하는 새로운 기능입니다. 이 기능은 TensorRT 11.0 버전부터 완벽히 지원됩니다.

NVIDIA Dynamo-Triton release 26.07은 TensorRT 백엔드의 다중 디바이스 추론 기능을 제공합니다. 하나의 Triton KIND_MODEL 인스턴스가 여러 GPU의 소유권을 갖고 랭크별 TensorRT 실행 컨텍스트, CUDA 스트림, NCCL 커뮤니케이터를 생성하여 각 요청에 대해 모든 랭크를 동시에 실행합니다. 이에 따라 애플리케이션은 GPU 랭크를 직접 조율할 필요 없이 단일 gRPC 엔드포인트를 통해 이름을 지정한 모델을 호출하기만 하면 됩니다.

생성형 AI를 배포하는 기업 입장에서 이 기능은 다중 GPU 가속 성능과 실제 활용 가능한 추론 서비스 간의 격차를 해소해 줍니다. 추가적인 GPU 자원을 투입해 요청 지연 시간을 단축할 수 있으며, 애플리케이션 인터페이스 및 주변 워크플로우를 안정적으로 유지할 수 있습니다. 또한 엔진을 버전 관리형 Triton 모델로 패키징할 수 있고, 클라이언트 코드에서 랭크 및 커뮤니케이터의 라이프사이클 관리 로직을 완전히 배제할 수 있습니다. 지연 시간에 민감한 생성형 미디어 워크플로우의 경우, 결과 도출 시간이 단축되므로 사용자 대기 시간을 줄이고 검토 및 수정 사이클을 대폭 가속화합니다.

본 게시물에서는 이전 글인 Scaling AI Inference Across Multiple GPUs Using NVIDIA TensorRT with Multi-Device Inference Support에서 소개되었던 장문 시퀀스 워크로드인 NVIDIA Cosmos 3 Nano 비디오 생성을 활용해 이러한 연동 과정을 시연합니다. Diffusers는 프롬프트, 잠재 공간, 무작위 분류기 안내, 스케줄링, VAE 디코딩, 프레임 후처리를 계속해서 조율합니다. Dynamo-Triton은 36개 레이어로 구성된 디노이징 트랜스포머를 서빙하며, TensorRT multi-device 추론은 Ulysses 컨텍스트 병렬성을 활용해 44,160개의 비디오 토큰을 최대 8대의 NVIDIA GPU에 분산 처리합니다.

Dynamo-Triton은 분산 TensorRT multi-device 모델을 어떻게 서빙하는가?

분산 Ulysses 그래프는 배포 전 각 TensorRT 플랜에 미리 컴파일되어 들어갑니다. Dynamo-Triton TensorRT 백엔드는 버전 관리형 플랜을 로드하고, 다중 랭크 실행 상태를 생성하며, 단 하나의 gRPC 모델 엔드포인트를 노출합니다. 클라이언트는 해당 엔드포인트로 트랜스포머 요청을 전송하며, 작업에 참여하는 GPU 랭크들을 직접 조율하지 않습니다.

Cosmos 3 Nano 모델은 이러한 경계 구조를 보여주는 명확한 사례를 제공합니다. 트랜스포머는 단일 GPU 생성 시간의 93.4%를 차지하므로 가장 우선적으로 가속해야 할 단계입니다. 35번의 디노이징 단계는 각각 CFG를 위한 1회의 네거티브 예측과 1회의 프롬프트 조건부 예측을 요구합니다. 따라서 Diffusers 프록시는 단계당 2회의 순차적 Triton 호출을 수행하여, 1회 생성당 총 70회의 트랜스포머 RPC를 실행합니다. 각 요청은 정제된 텐서를 전달하고 애플리케이션 워크플로우로 noise_patches를 반환합니다.

Dynamo-Triton은 컨텍스트 병렬 분산 TensorRT 플랜을 어떻게 활성화하는가?

분산 그래프는 각 컨텍스트 병렬 TensorRT 플랜 내부에 컴파일됩니다. Dynamo-Triton 구성은 단일 디바이스 엔진을 분산 엔진으로 변환하는 것이 아니라, 해당 플랜을 활성화하는 역할을 수행합니다. 단일 디바이스 베이스라인은 GPU 0에서 표준 GPU 모델 인스턴스를 사용합니다. 반면 2대, 4대, 8대 GPU 변형은 KIND_MODEL을 사용하고 TensorRT 백엔드 다중 디바이스 경로를 활성화하며 연산에 참여하는 랭크들을 식별합니다.

# 생성된 CP8 config.pbtxt에서 발췌한 예시
name: "cosmos3_cp8"
backend: "tensorrt"
max_batch_size: 0

instance_group [
  { kind: KIND_MODEL count: 1 }
]
parameters [
  { key: "enable_multi_device" value: { string_value: "true" } },
  { key: "multi_device_gpus" value: { string_value: "0,1,2,3,4,5,6,7" } }
]

Ulysses 컨텍스트 병렬성을 활용한 Cosmos 3의 분산 처리

본 예시에서 사용된 고정된 Cosmos 3 Nano 프로필은 총 44,160개의 비디오 토큰을 생성합니다. 컨텍스트 병렬 크기가 8인 CP8 환경에서 각 랭크는 어텐션 연산 외 구간에서 5,520개의 비디오 토큰을 처리합니다. 상대적으로 짧은 2,992개 토큰의 텍스트 경로는 전체 랭크에 복제된 상태를 유지합니다. 36개의 트랜스포머 레이어 각각에서 Ulysses는 어텐션 주변의 분할 축을 전환하여, 모든 랭크가 겹치지 않는 헤드 서브셋에 대해 전체 비디오 시퀀스를 분산 처리하도록 합니다.

엔진은 PyTorch에서 익스포트된 후 Torch-TensorRT를 통해 컴파일됩니다. 3개의 로컬 변환기가 익스포트 커리어 연산을 리듀스 스캐터(Reduce-scatter), 올투올(All-to-all), 올개더(All-gather)와 같은 TensorRT의 공개 분산 컬렉티브 레이어로 낮춰줍니다. 적용된 각 컨텍스트 병렬 플랜은 초기 리듀스 스캐터 2개, 36개 트랜스포머 레이어 각각에 존재하는 올투올 3개, 그리고 최종 올개더 1개를 포함합니다. 이를 통해 도출된 최종 토폴로지는 리듀스 스캐터 2개, 올투올 108개, 올개더 1개로 구성됩니다.

엔드투엔드 생성 지연 시간 벤치마킹

4가지 성능 비교 변형 모두 동일한 8대 GPU 구성의 NVIDIA 시스템에서 실행되었습니다. 단일 디바이스 베이스라인인 SD는 1대의 GPU를 사용했으며, CP2, CP4, CP8은 각각 2대, 4대, 8대의 랭크를 활용했습니다. 모든 실행에는 1280×720 해상도 출력, 24 FPS 기준 189개 프레임, 35번의 디노이징 단계가 동일하게 적용되었습니다.

각 측정 결과는 1회의 워밍업 실행 후 본 측정으로 진행된 5회의 완결된 생성 연산을 기반으로 합니다. 측정 시간 범위는 프롬프트 처리, 70회의 Dynamo-Triton 호출, CFG 및 스케줄러 업데이트, VAE 디코딩, 프레임 후처리를 모두 포함합니다. 단, 모델 로딩 시간과 MP4 인코딩 시간은 측정 항목에서 제외되었습니다.

표 1은 SD, CP2, CP4, CP8 환경에서의 Cosmos 3 실행 결과를 비교하여 나타냅니다. 엔드투엔드 지연 시간은 단일 GPU의 156.595초에서 8대 GPU 기준 34.183초로 대폭 단축되었으며, 트랜스포머 RPC 가속 비율은 6.09배까지 증가했습니다.

구분GPU 수E2E 평균 시간E2E 가속 비율RPC 평균 시간RPC 가속 비율RPC 점유율
SD1156.595초1.00x146.192초1.00x93.4%
CP2287.999초1.78x77.548초1.89x88.1%
CP4453.093초2.95x42.661초3.43x80.4%
CP8834.183초4.58x23.993초6.09x70.2%
표 1. SD, CP2, CP4, CP8 Cosmos 3 실행 성능 비교

단일 GPU 환경에서 트랜스포머 RPC는 전체 비디오 생성 시간의 93.4%를 차지합니다. CP8 환경에 도달하면 이 비율은 70.2%까지 감소합니다. 측정된 RPC 경로 외의 처리 시간은 모든 GPU 구성에서 10.2초에서 10.5초 사이로 일정하게 유지되므로, 전체 연산 시간에서 프롬프트 작업, 스케줄러 업데이트, VAE 디코딩, 후처리 및 기타 클라이언트 오버헤드가 차지하는 비중이 상대적으로 높아집니다.

성능 산출 전 생성 결과물 검증

모든 실행 변형은 동일한 시드 및 생성 프로필을 적용받았습니다. 결과물 검증을 위해 0, 47, 94, 141, 188번째 프레임을 샘플링하여 포맷과 시간적 변화를 검토했으며, 각 컨텍스트 병렬 처리 결과물을 단일 디바이스 실행 결과와 일대일로 비교했습니다. CP2, CP4, CP8 모두 미리 설정된 검증 기준인 평균 절대 오차 25 이하 및 최대 신호 대 잡음비 18 dB 이상을 무난히 통과했습니다.

출력 결과물이 픽셀 단위까지 완전히 일치한다는 의미는 아닙니다. CP2와 CP4는 평균 절대 오차 12.759, 최대 신호 대 잡음비 21.111 dB를 기록했습니다. CP8은 평균 절대 오차 16.316, 최대 신호 대 잡음비 19.400 dB를 나타냈습니다. 생성된 접촉 인쇄본 역시 영상 전반에 걸쳐 접시를 닦는 로봇 팔의 일관된 동작을 선명하게 보여줍니다.

다중 GPU 모델 서빙 단순화의 시작

제품 개발 팀 입장에서 이번 평가 결과는 단일 요청에 할당하는 GPU 수를 줄이는 것보다 응답 속도를 높이는 것이 더 큰 비즈니스 가치를 지닐 때 선택할 수 있는 실용적인 대안을 제시합니다. 이전에는 2분 30초 이상 소요되던 Cosmos 3 기반 비디오 생성을 이제 약 34초 만에 완료할 수 있으며, 애플리케이션 측에서는 기존의 익숙한 모델 서빙 인터페이스를 그대로 유지할 수 있습니다.

물론 각 팀은 자원 투입과 지연 시간 사이의 트레이드오프를 고려하여 최적의 접근 방식을 결정해야 합니다. 본 벤치마크는 동시 요청 처리량이나 비디오 생성당 비용, 총소유비용(TCO)을 별도로 측정하지는 않았습니다. 따라서 서비스 수준 목표(SLO)와 배포 경제성을 바탕으로 해당 지표들을 직접 평가해 보는 과정이 필요합니다.

본 게시물에서 다룬 결과를 자체 환경에서 재현해 보려면 NGC에서 NVIDIA Dynamo-Triton 26.07을 다운로드하여 활용해 보시기 바랍니다. 아울러 함께 제공되는 TensorRT, Torch-TensorRT, Diffusers, Cosmos 관련 리소스도 참조하실 수 있습니다.

더 자세한 내용은 아래 관련 리소스를 통해 확인하실 수 있습니다:

Discuss (0)

Tags