엔비디아(NVIDIA·$NVDA)가 13일 Jetson AGX Orin에서 파이썬으로 DLA 추론을 구성하는 개발자 예제를 공개했다. 이 예제는 지원되는 신경망 연산을 DLA에 맡기고, GPU의 전처리·후처리와 연결하는 방법을 다룬다.
예제의 핵심은 cuda.bindings.cudla다. cuda-bindings 13.3.0에 도입된 이 파이썬 계층은 기존 cuDLA C++ API를 파이썬 프로그램에서 호출하도록 한다.
파이썬은 장치와 추론 작업을 관리한다. 신경망 계산 자체는 Jetson AGX Orin의 DLA 하드웨어에서 이뤄지므로, 파이썬 코드가 DLA에서 직접 실행되는 것은 아니다.
예제는 하나의 CUDA 스트림에서 GPU 전처리, DLA 추론, GPU 후처리를 차례로 배치한다. CUDA 스트림은 이 작업들의 실행 순서를 조율한다.
개발자는 학습된 모델을 TensorRT의 trtexec로 미리 컴파일해 DLA가 읽을 수 있는 loadable 파일을 만든다. 파이썬 애플리케이션은 추론을 실행할 때 이 파일을 불러온다.
프로그램은 파일을 메모리에 올리고 입력·출력 텐서의 크기와 형식을 확인한다. 이후 GPU 메모리를 cuDLA에 등록해 추론 작업을 제출하고, 작업이 끝나면 결과를 읽는다.
TensorRT는 모델을 DLA용 파일로 만드는 데 쓰이고, 실행 단계에는 JetPack에 포함된 libcudla.so 런타임이 필요하다. 모델 컴파일과 실제 추론 실행은 서로 다른 구성 요소가 맡는다.
이 예제는 CUDA 스트림으로 GPU와 DLA를 조율하는 하이브리드 모드(CUDA_DLA)다. 엔비디아는 이번 릴리스에서 별도 NvSci 버퍼와 동기화 프리미티브가 필요한 cuDLA 독립 실행 모드는 지원하지 않는다고 밝혔다.
DLA는 정해진 연산을 처리하는 고정 기능 가속기다. GPU가 처리하는 모든 신경망 계층을 지원하지는 않는다.
엔비디아는 호환되지 않는 계층이 있으면 ONNX 모델의 그래프를 손봐야 할 수 있다고 설명했다. 모델을 적용할 때는 DLA가 지원하는 계층과 텐서 형식 조건을 살펴야 한다.
TensorRT 문서에는 DLA에서 실행할 수 없는 계층을 GPU로 돌리는 기능도 명시돼 있다. 이 기능을 켜면 일부 계층이 GPU에서 실행될 수 있어 실제 DLA 처리 범위를 확인해야 한다.
엔비디아는 13일 기술 블로그에서 지원 가능한 연산을 DLA에 맡기면 전력 효율을 높일 수 있고 GPU 자원을 다른 작업에 활용할 수 있다고 밝혔다. 다만 해당 글은 Jetson AGX Orin의 전력 소비량이나 GPU 대비 처리 속도 측정값을 제시하지 않았다.
엔비디아가 적용 분야로 제시한 것은 엣지 AI, 로보틱스, 컴퓨터 비전이다. 본지는 앞서 Jetson Orin Nano에서 네모트론 3.5 볼트 E4B를 구동할 때의 메모리 사용량을 엔비디아 공개 측정치와 함께 다뤘다.
예제의 모델 컴파일 환경은 TensorRT 11.4.1, CUDA 13.4 Update 1, JetPack 7.2.2 이상이다. TensorRT 문서도 Jetson AGX Orin의 DLA 지원 조건으로 JetPack 7.2.2 이상을 제시한다.
기술 블로그의 설치 안내는 파이썬 3.10을 최소 버전으로 적었다. 다만 cuda-bindings 13.5.0 릴리스 노트에는 파이썬 3.10 지원 종료가 기록돼 있어, 설치할 때 패키지 버전별 지원 범위를 대조해야 한다.
<Copyright ⓒ TokenPost, unauthorized reproduction and redistribution prohibited>
Most Popular