Computer Vision / Video Analytics

CV-CUDA로 AI 기반 컴퓨터 비전을 위한 처리량 증가 및 비용 절감

Reading Time: 7 minutes

AI 기반 컴퓨터 비전과 관련된 실시간 클라우드 규모 애플리케이션이 빠르게 성장하고 있습니다. 이러한 사용 사례에는 이미지 이해, 콘텐츠 제작, 콘텐츠 조정, 매핑, 추천 시스템 및 화상 회의가 포함됩니다.

그러나 이러한 워크로드의 컴퓨팅 비용도 처리의 정교함에 대한 수요 증가로 인해 증가하고 있습니다. 또한 스틸 이미지에서 비디오로의 전환은 이제 소비자 인터넷 트래픽의 주요 구성 요소가 되고 있습니다. 이러한 추세를 고려할 때, 고성능이면서도 비용 효율적인 컴퓨터 비전 워크로드를 구축해야 할 필요성이 커지고 있습니다.

AI 기반 컴퓨터 비전 파이프라인에는 일반적으로 AI 추론 모델과 관련된 데이터 전처리 및 후처리 단계가 포함되며, 이는 전체 워크로드의 50~80%에 달할 수 있습니다. 이러한 단계의 일반적인 연산자는 다음과 같습니다:

  • 크기 조정
  • 자르기
  • 정규화
  • 노이즈 제거
  • Tensor 변환

개발자는 파이프라인에서 AI 모델 추론을 크게 가속화하기 위해 NVIDIA GPU를 사용할 수 있지만, 전처리 및 후처리는 여전히 CPU 기반 라이브러리로 구현하는 것이 일반적입니다. 이로 인해 전체 AI 파이프라인의 성능에 병목 현상이 발생합니다. 일반적으로 AI 이미지 또는 비디오 처리 파이프라인의 일부인 디코딩 및 인코딩 프로세스도 CPU에서 병목 현상이 발생하여 전체 성능에 영향을 미칠 수 있습니다.

그림 1. AI 컴퓨터 비전 파이프라인을 위한 기존 워크플로우

CV-CUDA 최적화

CV-CUDA는 효율적인 클라우드 규모의 AI 컴퓨터 비전 파이프라인을 구축할 수 있는 오픈 소스 라이브러리입니다. 이 라이브러리는 GPU 가속 컴퓨터 비전 및 이미지 처리 커널의 전문화된 세트를 독립형 오퍼레이터로 제공하여 AI 파이프라인의 매우 효율적인 전처리 및 후처리 단계를 쉽게 구현할 수 있도록 합니다.

CV-CUDA는 이미지 분류, 오브젝트 감지, 분할, 이미지 생성 등 다양한 일반적인 컴퓨터 비전 파이프라인에 사용할 수 있습니다. 자세한 내용은 2022년 가을 NVIDIA GTC의 키노트를 참조하세요.

이 포스팅에서는 일반적인 AI 컴퓨터 비전 워크로드에 엔드투엔드 GPU 가속화를 지원하는 CV-CUDA를 사용하여 전체 처리량을 최대 5배에서 최대 50배까지 향상시킬 수 있는 이점을 보여드립니다. 이를 통해 연간 수억 달러에 달하는 클라우드 비용을 절감하고 데이터센터의 에너지 소비를 연간 수백 GWh 절감할 수 있습니다.

GPU 가속화로 해결되는 CPU 병목 현상

CV-CUDA는 컴퓨터 비전 처리를 위한 독립형 연산자로 고도로 최적화된 GPU 가속 커널을 제공합니다. 이러한 커널은 전처리 및 후처리 파이프라인을 효율적으로 구현하여 처리량을 크게 개선할 수 있습니다.

인코딩 및 디코딩 작업도 파이프라인에서 잠재적인 병목 현상이 될 수 있습니다. 최적화된 NVIDIA 비디오 프로세싱 프레임워크(VPF)를 사용하면 이러한 작업도 효율적으로 최적화하고 실행할 수 있습니다. VPF는 C++ 라이브러리에 대한 Python 바인딩이 포함된 NVIDIA의 오픈 소스 라이브러리입니다. GPU에서 비디오 디코딩 및 인코딩을 위한 완전한 하드웨어 가속을 제공합니다.

GPU에서 전체 엔드투엔드 AI 파이프라인을 가속화하려면(그림 2), 디코딩/인코딩 가속화를 위한 VPF 및 추가 추론 최적화를 위한 TensorRT와 함께 CV-CUDA를 사용합니다. 일반적인 파이프라인에서 CPU 기반 구현과 비교하여 4개의 NVIDIA L4 GPU를 사용하면 엔드투엔드 처리량을 최대 50배까지 향상시킬 수 있습니다.

개선 정도는 추론 DNN의 복잡성, 필요한 전처리 및 후처리 단계, 하드웨어와 같은 요인에 따라 달라집니다. 멀티 GPU 노드를 사용하면 주어진 파이프라인에 대해 속도 향상 요소가 선형적으로 확장될 것으로 기대할 수 있습니다.

그림 2. 전처리 및 후처리 작업을 위한 CV-CUDA를 사용한 GPU 가속 AI 파이프라인.

CV-CUDA가 고성능을 달성하는 방법

CV-CUDA는 GPU의 성능을 활용하여 고성능을 달성합니다:

  • 추론 단계에서 GPU 메모리의 중복 할당을 방지하기 위해 사전 할당된 메모리 풀링
  • 비동기 연산
  • 커널 퓨전 – 하나의 GPU 커널을 사용하여 연산자 조합을 구현하여 불필요한 데이터 전송 및 커널 실행 지연을 최소화합니다.
  • 글로벌 메모리 액세스를 벡터화하고 빠른 공유 메모리를 사용하여 메모리 액세스 효율성 향상
  • 계산 효율성, 빠른 연산, 워프 감소/블록 감소

사례 연구: 비디오 세분화 파이프라인의 엔드투엔드 가속화

비디오 기반 세그멘테이션은 비디오 프레임의 픽셀을 속성에 따라 분할하는 일반적인 AI 기법입니다. 예를 들어, 화상 회의의 가상 배경 또는 배경 흐림 애플리케이션에서는 전경의 사람이나 물체와 배경을 세분화합니다.

이 연구에서는 컴퓨팅 비용 최적화에 중점을 두고 AWS의 NVIDIA T4 텐서 코어 GPU 인스턴스를 사용하여 클라우드에 배포된 AI 비디오 세분화 파이프라인의 성능 평가에 대해 설명합니다. 인스턴스에 연결된 CPU는 인텔 제온 플래티넘 8362입니다.

전체 엔드투엔드 AI 파이프라인이 GPU에서 실행되면 상당한 비용 절감을 기대할 수 있습니다. 그런 다음 동일한 워크로드에서 이러한 처리량 성능 향상이 데이터센터 에너지 소비에 미치는 영향에 대해 논의합니다.

실험을 수행하기 위해 두 경우 모두 추론 워크로드가 GPU에서 실행된다고 가정하고, CV-CUDA AI 파이프라인이 있는 GPU와 동일한 파이프라인을 OpenCV로 구현한 CPU를 비교했습니다. 구체적으로, AI 배경 블러링을 수행하기 위해 ResNet-101 비디오 세분화 모델 파이프라인(그림 2)을 배포했습니다.

그림 3. 일반적인 엔드투엔드 비디오 세그멘테이션 파이프라인의 예시. 전경 오브젝트는 AI를 사용하여 입력 프레임에서 분할된 다음 배경 흐림을 위해 원본 입력 프레임 및 블러 버전과 합성됩니다.

이 사례에서는 전체 엔드투엔드 파이프라인에서 여러 단계에 대한 지연 시간과 최대 처리량을 측정했습니다. 파이프라인은 여러 단계로 구성되어 있습니다(그림 4):

  • 비디오 디코딩
  • 다운스케일, 정규화, 포맷 재포맷과 같은 작업을 사용한 사전 처리
  • PyTorch를 사용한 추론
  • 포맷 재포맷, 업스케일, 양방향 필터, 컴포지션, 블러와 같은 연산을 사용한 후처리
  • 비디오 인코딩

CPU와 GPU 파이프라인 모두에서 추론 워크로드가 각각 PyTorch와 TensorRT를 사용하여 GPU에서 실행된다고 가정했습니다.

그림 4. 전처리 및 후처리를 위한 CV-CUDA 연산자가 포함된 AI 배경 흐림 파이프라인.

기존 파이프라인은 고객의 일반적인 패턴인 파이썬으로 구현된 OpenCV와 PyTorch(GPU)로 구축되었습니다. 입력 비디오의 해상도는 1080p이며 배치 크기가 1인 474개의 프레임으로 구성됩니다. 이 파이프라인에서 GPU는 PyTorch 덕분에 추론에만 사용되며 나머지 프로세스는 CPU 기반으로 이루어집니다:

  • 프레임은 OpenCV/ffmpeg를 사용하여 디코딩됩니다.
  • 디코딩된 이미지는 OpenCV를 사용하여 사전 처리된 후 PyTorch 기반 DNN에 공급되어 어떤 픽셀이 고양이인지 감지하여 마스크를 생성합니다.
  • 후처리 단계에서는 이전 단계의 출력 마스크를 원본 이미지와 블러 처리된 버전과 합성하여 고양이는 전경에, 배경은 블러 처리된 상태로 만듭니다.

GPU 기반 파이프라인(그림 4)의 경우 CV-CUDA 라이브러리의 최적화된 연산자로 전처리 단계와 후처리 단계를 구현하고, 추론은 엔비디아 텐서RT 라이브러리를 사용했습니다. 또한 파이프라인의 디코딩과 인코딩 부분은 VPF를 사용하여 GPU에서 가속화했습니다.

그림 5. CPU 기반 파이프라인과 GPU 기반 파이프라인의 레이턴시(ms) 비교. (GPU=NVIDIA T4, CPU=Intel Xeon Platinum 8362, 배치 크기=1, # processes=1)

그림 5는 한 프레임 배치의 엔드투엔드 시간이 132밀리초에서 약 10밀리초로 단축되었음을 보여 주며, GPU 파이프라인이 달성한 놀라운 지연 시간 단축을 입증합니다. 단일 NVIDIA T4 GPU를 사용한 CV-CUDA 파이프라인은 CPU 파이프라인에 비해 약 13배 더 빨랐습니다.

이 결과는 단일 비디오에 대해 작업하는 단일 프로세스에서 얻은 결과입니다. 여러 개의 비디오를 동시에 처리하기 위해 여러 프로세스를 배포함으로써 이러한 최적화를 통해 동일한 하드웨어로 더 높은 처리량을 구현할 수 있으므로 비용과 에너지를 크게 절감할 수 있습니다.

CV-CUDA가 제공하는 이점을 더 잘 보여주기 위해 다양한 인스턴스(T4 GPU 1개, L4 GPU 1개, T4 GPU 4개, L4 GPU 4개)에서 GPU 파이프라인을 실행해 보았습니다.

그림 6. 다양한 단일 및 다중 GPU 서버에서 실행되는 GPU 파이프라인의 엔드투엔드 처리량 성능, 연간 컴퓨팅 비용, 에너지 소비량을 CPU 서버의 CPU 파이프라인과 비교한 상대적 비교

새로 출시된 NVIDIA L4 Tensor 코어 GPUNVIDIA Ada 러브레이스 아키텍처를 기반으로 비디오, AI, 비주얼 컴퓨팅, 그래픽 및 가상화를 위한 저비용의 에너지 효율적인 가속화를 제공합니다.

그림 6에서 단일 T4 GPU의 엔드투엔드 처리량 속도 향상은 CPU 기준 대비 약 5배이며, 새로운 L4 GPU에서는 이 속도가 약 12배로 더욱 향상됩니다. 여러 GPU 인스턴스를 사용하면 성능은 거의 선형적으로 확장됩니다(예: 4개의 T4 GPU와 4개의 L4 GPU에서 각각 ~19배, ~48배).

연간 클라우드 비용과 에너지 소비량을 계산하기 위해 비디오 스트리밍 플랫폼에 매분 500시간의 비디오가 업로드되는 일반적인 비디오 워크로드를 가정했습니다. 연간 클라우드 비용의 경우, T4 GPU만 고려했으며(L4 GPU는 향후 제공 예정) Amazon EC2 G4 인스턴스에 대한 1년 예약 가격을 가정했습니다.

이를 감안할 때, 이 예시 비디오 워크로드에 대한 단일 T4 GPU의 연간 비용은 CPU 파이프라인의 약 1/5 수준입니다. 따라서 이러한 워크로드에 대한 일반적인 클라우드 비용 절감 효과는 수억 달러에 달할 것으로 예상됩니다.

데이터센터의 경우 이러한 대규모 워크로드를 처리하는 데 필요한 하드웨어와 관련된 비용 외에도 에너지 비용과 환경에 미치는 영향을 줄이기 위해 에너지 효율성이 매우 중요합니다.

그림 6(오른쪽)은 각 하드웨어를 사용하는 서버에서 동일한 비디오 워크로드에 대해 시간당 평균 전력 소비량을 기준으로 연간 에너지 소비량(GWh)을 계산한 것입니다. 단일 L4 시스템의 에너지 소비량은 CPU 서버의 약 1/12 수준입니다. 예시 비디오와 같은 워크로드(분당 500시간 분량의 비디오)의 경우 연간 에너지 절감량은 수백 GWh에 달할 것으로 예상됩니다.

이러한 에너지 절감량은 연간 약 11,000마일을 주행하는 수만 대의 승용차가 1년에 배출하는 온실가스 배출량을 방지하는 것과 같기 때문에 매우 중요합니다.

CV-CUDA 베타 v0.3.0의 특징

이제 CV-CUDA를 사용하여 AI 컴퓨터 비전 워크로드를 가속화할 때 얻을 수 있는 이점을 살펴보았으니, 주요 기능 몇 가지를 소개합니다:

  • 오픈 소스: GitHub의 Apache 2.0 라이선스 오픈 소스 소프트웨어.
  • 지원되는 연산자: CV-CUDA는 AI 컴퓨터 비전 워크로드의 전처리 및 후처리 단계에 일반적으로 사용되는 30개 이상의 전문 연산자를 제공합니다. 이러한 상태 비저장 독립형 연산자는 기존 사용자 정의 처리 프레임워크에 쉽게 연결할 수 있습니다. 일반적인 연산자로는 ConvertTo, 커스텀 자르기, 정규화, 패드스택, 포맷, 크기 조정 등이 있습니다. 자세한 내용은 CV-CUDA 개발자 가이드에서 전체 목록을 참조하세요.
  • 새로운 연산자: CV-CUDA 베타 v0.3.0은 리맵, 윤곽 찾기, 비-최대 억제, 임계값, 적응형 임계값과 같은 새로운 연산자를 제공합니다.
  • NVIDIA Triton용 커스텀 백엔드: 이제 샘플 애플리케이션을 사용하여 컴퓨터 비전 파이프라인을 빌드할 때 CV-CUDA를 커스텀 백엔드에 통합할 수 있습니다.
  • 다국어 API: CV-CUDA에는 C/C++ 및 Python용 API가 포함되어 있습니다.
  • 프레임워크 인터페이스: PyTorch 및 TensorFlow와 같은 기존 DL 프레임워크에 대한 사용하기 쉬운 제로 카피 인터페이스를 제공합니다.
  • 배치 지원: 모든 CV-CUDA 연산자가 지원되므로 GPU 활용도를 높이고 성능을 향상시킬 수 있습니다.
  • 균일하고 다양한 형태의 배치 지원: CV-CUDA는 차원이 같거나 다른 텐서를 허용합니다.
  • 샘플 애플리케이션: 엔드투엔드 가속 이미지 분류, 물체 감지, 비디오 분할 샘플 애플리케이션.
  • 단일 라인 PIP 설치.
  • 설치, 시작하기 및 API 참조 가이드.

CV-CUDA 다운로드 가능

CV-CUDA의 오픈 베타 릴리스(v0.3.0)가 이제 GitHub에서 제공됩니다.

CV-CUDA는 최적화된 이미지 및 비디오 처리 커널을 사용하여 클라우드에서 복잡한 AI 컴퓨터 비전 워크로드를 가속화할 수 있도록 지원합니다. Python 친화적인 이 라이브러리는 PyTorch 및 TensorFlow와 같은 일반적인 딥 러닝 프레임워크에 대한 제로 카피 인터페이스를 통해 기존 파이프라인에 쉽게 통합할 수 있습니다.

CV-CUDA는 VPF 및 TensorRT와 함께 엔드-엔드 AI 워크로드를 더욱 최적화하여 상당한 비용 및 에너지 절감을 달성합니다. 따라서 클라우드 규모 사용 사례에 적합합니다:

자세한 내용은 다음 리소스를 참조하세요:

CV-CUDA를 사용 중이거나 고려 중이신가요? 제품 팀에 문의하여 지원을 받으세요. 여러분의 의견을 기다리고 있습니다.

이 블로그에 열거된 SDK의 대부분의 독점 액세스, 얼리 액세스, 기술 세션, 데모, 교육 과정, 리소스는 NVIDIA 개발자 프로그램 회원은 무료로 혜택을 받으실 수 있습니다. 지금 무료로 가입하여 NVIDIA의 기술 플랫폼에서 구축하는 데 필요한 도구와 교육에 액세스하시고 여러분의 성공을 가속화 하세요.

Discuss (0)

Tags

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다