제8부 자율주행
8.5 DLA·PVA II — PVA·VPI·GPU 분업
8.5.1 이 장에서 배우는 것 / 선수 지식
8.4에서 DLA가 표준 DNN 추론을 효율적으로 오프로드했다. 그런데 자율주행 인지는 DNN만이 아니다 — DNN 앞뒤로 고전적 컴퓨터 비전(이미지 보정·스테레오 깊이·특징 추출·광학 흐름·필터)이 필요하다. 이것을 GPU로 실행하면 낭비고 CPU로는 느리다. PVA(Programmable Vision Accelerator) 가 이 클래식 비전을 전력 효율적으로 맡는다. 그리고 VPI(Vision Programming Interface) 가 여러 엔진(CPU·GPU·PVA)에 같은 비전 알고리즘을 실행하는 통일 API를 준다. 이 장은 PVA·VPI와, GPU·DLA·PVA·ISP·CPU의 분업으로 비전 파이프라인을 전력 예산 안에서 완성하는 법을 본다. DLA·PVA 묶음(8.4~8.5)의 마무리이자 8.2 "작업마다 맞는 엔진"의 완성.
핵심 통찰: 자율주행 비전은 한 엔진이 아니라 "분업"으로 완성된다. ISP가 카메라를, PVA가 클래식 비전을, DLA가 표준 DNN을, GPU가 유연·융합을, CPU가 제어를 — 각자 가장 잘하는 일을 병렬로 하면 전력 예산 안에서 처리량이 나온다. VPI는 이 비전 작업을 엔진을 교체하며(PVA 효율 vs GPU 유연) 작성할 수 있게 해 — 비전 세계의 CUDA에 가깝다.
배우는 것:
- PVA — 클래식 비전(스테레오·특징·광학흐름·필터·보정)을 효율적으로, DNN(DLA/GPU)과 다른 영역.
- PVA vs DLA vs GPU vs CPU — 네 엔진의 분업, 무엇을 누가.
- VPI — 여러 엔진에 같은 비전 알고리즘을 실행하는 통일 API, 백엔드 선택.
- 비전 파이프라인 분업 — ISP→PVA→DLA/GPU→융합, 병렬·전력 예산.
- VPI 워크플로 — 알고리즘을 엔진에 매핑(실습 개념).
선수 지식: 8.4(DLA·오프로드)·8.2(이기종 엔진·워크로드 매핑)·8.1(전력·효율), 3.8(데이터 전처리 — 데이터센터판). DRIVE OS는 8.6, 인지 AI는 8.14. 환경은 DRIVE SoC·VPI.
정직: PVA·VPI의 알고리즘·백엔드 지원·API는 세대·버전 의존이다 — 이 장은 분업 원리·VPI 개념을 가르치고 구체 알고리즘·인자는 "그 버전 문서로 확인". 자율주행은 safety-critical(8.8~8.11). 수치는 환경 의존.
8.5.2 PVA — 클래식 비전의 효율 엔진
자율주행 비전 파이프라인에는 DNN이 아닌 고전적 비전 연산이 많다:
PVA(Programmable Vision Accelerator) 가 이를 맡는다:
핵심: PVA는 "DNN이 아닌 비전"의 효율 엔진이다 — DLA가 표준 DNN을, PVA가 클래식 비전을 맡아, 둘 다 GPU를 자유롭게 한다. 스테레오·광학흐름·특징·필터 같은 전처리·CV를 PVA로 오프로드하면 GPU는 DNN·융합·계획에 집중 — 8.1의 전력 효율을 비전 영역에서 실현.
8.5.3 네 엔진의 분업
8.2의 "작업마다 맞는 엔진"을 비전 관점에서 완성한다:
| 엔진 | 비전에서 맡는 것 | 성격 |
|---|---|---|
| ISP | 원시 카메라 → 이미지(디모자이크·노이즈·톤) | 카메라 파이프라인 전용 |
| PVA | 클래식 CV(스테레오·특징·광학흐름·필터·보정) | 프로그래머블 비전·효율 |
| DLA | 표준 DNN 추론(검출·분할·깊이 DNN) | 고정기능 DNN·효율(8.4) |
| GPU | 유연 DNN·융합·전처리·신규·overflow | 프로그래머블·범용 |
| CPU | 계획·제어·제어흐름·glue | 순차·제어 |
| 비디오 | 카메라 스트림 디코딩 | 전용 |
왜 분업인가(8.1·8.2 반복·완성): 전력이 천장이라 한 엔진이 모든 것을 하면 비효율. 클래식 CV는 PVA(효율), 표준 DNN은 DLA(효율), 유연·융합은 GPU, 제어는 CPU — 작업을 적합한 엔진에 분배하고 병렬로 실행해 전력당 총 처리량을 극대화. 이것이 이기종 SoC의 존재 이유이자 자율주행 비전 설계의 핵심.
8.5.4 VPI — 엔진을 교체하는 비전 API
문제: PVA·GPU·CPU에 각각 다른 방식으로 비전 알고리즘을 구현하면 이식·전환이 어렵다. VPI(Vision Programming Interface) 가 여러 백엔드에 같은 비전 알고리즘을 실행하는 통일 API를 준다.
# VPI 개념(의사코드 — 실제 API·알고리즘은 버전 문서)
import vpi
with vpi.Backend.PVA: # 백엔드 선택(PVA·CUDA·CPU)
disparity = vpi.stereodisparity(left, right, ...) # 스테레오 깊이를 PVA로
# 같은 코드에서 백엔드만 CUDA로 바꾸면 GPU에서 — 이식·전환 쉬움
VPI의 가치:
- 백엔드 이식성: 같은 비전 파이프라인을 PVA(효율) 로 실행하다 GPU(유연·overflow) 로 전환 — 코드 재작성 없이. 엔진 분배·실험이 쉬움.
- 최적 엔진 활용: 알고리즘마다 가장 적합한 백엔드를 골라(PVA 효율적인 것은 PVA, GPU가 나은 것은 GPU) 전력·성능 최적.
- 상호운용: CUDA(GPU)·다른 엔진과 데이터 공유·파이프라인 연결(전처리 PVA → DNN GPU/DLA).
견해: VPI는 "비전 작업을 엔진에 자유롭게 매핑" 하게 해준다 — CUDA가 GPU 프로그래밍을 표준화했듯, VPI가 이기종 비전을 표준화. 같은 스테레오·광학흐름을 PVA(효율) 또는 GPU(유연)에 골라 실행하고, 전력·부하에 따라 분배를 조정. 이것이 분업을 실용적으로 만든다.
8.5.5 비전 파이프라인 분업 — 전체 그림
ISP·PVA·DLA·GPU·CPU를 잇는 전체 비전·인지 파이프라인:
모든 엔진이 '병렬'로 동시 실행 — 전력 예산·종단 데드라인 안에서.
분업의 효과:
- 병렬 처리량: 모든 엔진이 동시에 → 직렬 대비 전력당 총 처리량↑, 매 프레임 데드라인 충족(8.1).
- 전력 효율: 각 작업이 가장 효율적인 엔진에(클래식 CV→PVA·표준 DNN→DLA) → 전력 천장 안.
- GPU 자유화: PVA·DLA가 전처리·표준 DNN을 맡아 GPU는 융합·계획·신규에.
- 결정성: PVA·DLA·ISP의 예측 가능한 지연 → 종단 지연 보장(8.6).
핵심: 자율주행 비전·인지는 "한 엔진의 성능"이 아니라 "여러 엔진의 분업·병렬" 로 완성된다. 8.2의 "작업마다 맞는 엔진"이 ISP·PVA·DLA·GPU·CPU의 분업으로 실현 — VPI·TensorRT(8.4)가 작업을 엔진에 매핑하는 도구. 전력 예산 안에서 인지 처리량을 극대화하는 이 분업이 자율주행 컴퓨팅 설계의 정점.
8.5.6 워크스루 — 분업 설계
비전·인지 파이프라인을 엔진에 매핑하는 워크스루(개념).
결정 축:
| 작업 | 엔진 |
|---|---|
| 원시 카메라→이미지 | ISP |
| 보정·리스케일·클래식 CV | PVA(VPI) |
| 표준 DNN | DLA |
| 신규 DNN·융합 | GPU |
| 계획·제어 | CPU |
견해: 전처리·클래식 CV를 PVA로, 표준 DNN을 DLA로 오프로드해 GPU를 융합·계획·신규에 남기는 게 분업의 정석이다. VPI로 비전 작업을 PVA에 매핑하되, 부하·미지원이면 GPU 백엔드로 유연하게. 엔진 간 데이터 이동(전환 오버헤드)을 최소화하고, 종단 지연·전력·정확도를 측정으로 균형. 안전 critical이라 결정성·검증이 전제(8.6·8.11).
8.5.7 중간 점검 (체크포인트)
- [ ] PVA가 클래식 비전(스테레오·특징·광학흐름·필터·보정)을 효율적으로 맡으며, DNN(DLA/GPU)과 다른 영역임을 안다.
- [ ] 네 엔진(ISP·PVA·DLA·GPU·CPU)의 분업과, 왜 분업이 전력 효율·처리량을 주는지 설명한다.
- [ ] VPI가 같은 비전 알고리즘을 여러 백엔드(PVA·GPU·CPU)에 실행하는 통일 API임과, 백엔드 이식성의 가치를 안다.
- [ ] 비전·인지 파이프라인 전체 분업(ISP→PVA→DLA/GPU→융합)과 병렬·전력 예산을 안다.
- [ ] 작업을 엔진에 매핑하고, 전환 오버헤드·결정성·정확도를 관리한다.
증상→의심: 클래식 CV가 GPU 점유 → PVA로 오프로드(VPI). 전처리로 GPU 바쁨 → PVA/VPI 전처리. 비전 파이프라인이 엔진 간 데이터 이동으로 느림 → 전환 오버헤드 → 파이프라인·백엔드 정렬. PVA에 없는 알고리즘 → VPI 백엔드를 GPU로. 직렬로 데드라인 초과 → 엔진 병렬 분배. 지연 가변 → PVA·DLA 결정성 활용(8.6). CPU로 비전 → 느림 → PVA/GPU.
8.5.8 트레이드오프·대안
| 결정 | 트레이드오프 |
|---|---|
| PVA vs GPU(클래식 CV) | 효율·전용 vs 유연·전력↑ |
| 클래식 CV vs DNN(예: 깊이) | 효율·해석 가능 vs 정확·고부하 |
| VPI 백엔드 PVA vs GPU | 효율 vs 유연·overflow |
| 분업(병렬) vs 단일 엔진 | 처리량·복잡 vs 단순·비효율 |
| 엔진 전환 vs 한 엔진 유지 | 최적 매핑 vs 데이터 이동 오버헤드 |
견해: 클래식 CV·전처리는 PVA로, 표준 DNN은 DLA로, 유연·융합은 GPU로 분업하고 VPI로 비전을 엔진에 매핑한다. 깊이 같은 작업은 클래식(PVA 스테레오, 효율·해석 가능)과 DNN(GPU/DLA, 정확) 중 정확도·전력으로 선택(또는 융합). 엔진 전환 오버헤드를 줄이려 파이프라인·백엔드를 정렬. 안전·결정성·전력을 함께 — 분업이 전력 예산 안 처리량의 핵심.
비엔비디아 정직: 비전 가속·이기종 비전 API는 다른 엣지 SoC·프레임워크(OpenCV·OpenVX·각 NPU 라이브러리)에도 있다. VPI/PVA의 강점은 PVA 전용 가속·CUDA 상호운용·DRIVE/Jetson 공통·결정성이다. 알고리즘이 엔진에 맞는지·이식성·효율은 어느 스택이든 핵심 — 피크 성능이 아니라 실제 파이프라인 매핑·전력·결정성·정확도로 판단.
8.5.9 흔한 함정
- 클래식 CV를 GPU/CPU로. GPU는 낭비(DNN·융합에)·CPU는 느림 → PVA(VPI) 로 효율.
- PVA를 DNN 가속기로 오해. PVA는 클래식 비전, DNN은 DLA/GPU(8.4). 영역이 다름.
- 엔진 전환 오버헤드 무시. GPU↔PVA↔DLA 데이터 이동이 잦으면 비효율 → 파이프라인·백엔드 정렬(8.4 폴백과 유사).
- VPI 미지원 알고리즘을 PVA에 강행. 백엔드를 GPU로 전환하거나 다른 알고리즘.
- 단일 엔진만. 분업·병렬 안 하면 전력당 처리량 손해 → ISP·PVA·DLA·GPU 병렬.
- 결정성 안 씀. PVA·DLA의 예측 가능 지연은 실시간 데드라인에 유리(8.6) — 가변 GPU만 쓰면 보장 어려움.
- 알고리즘·백엔드 버전 불문. VPI 알고리즘·PVA 지원이 세대·버전 의존 — 그 버전 문서.
- 안전·정확도 사후. 비전·인지 정확도는 안전 직결 — 검증(8.11)·결정성·안전 감시(8.8) 전제.
8.5.10 연습문제
연습 1 (PVA의 영역). PVA가 맡는 작업과 DLA·GPU가 맡는 작업의 차이를 설명하고, 왜 클래식 비전을 GPU가 아닌 PVA로 하나?
정답
영역 차이: DLA = 표준 DNN 추론(검출·분할·깊이 DNN, 행렬곱, 고정기능 효율, 8.4). GPU = 유연한 DNN·융합·전처리·신규·overflow(프로그래머블). PVA = 클래식 컴퓨터 비전(DNN이 아닌) — 스테레오 깊이(disparity)·광학 흐름·특징 추출·추적(Harris/FAST/KLT)·필터·이미지 보정(렉티피케이션)·리스케일. 즉 DNN(DLA/GPU)과 달리 PVA는 벡터·SIMD형 비전 연산을 프로그래머블하게. 왜 GPU 아닌 PVA로: ① 전력 효율 — 클래식 CV를 GPU로 실행하면 GPU의 범용 오버헤드로 비효율(전력 낭비, 8.1), PVA는 이 비전 워크로드에 효율적. ② GPU 자유화 — 클래식 CV를 PVA로 오프로드하면 GPU가 DNN·융합·계획에 집중. ③ CPU는 느림 — 비전 연산을 CPU로는 실시간 못 함. ④ 결정성 — PVA의 예측 가능 지연이 실시간에 유리. 즉 PVA는 "DNN이 아닌 비전의 효율 엔진"으로, DLA(DNN)·GPU(유연)·CPU(제어)와 분업해 전력 예산 안에서 비전 파이프라인을 완성.
연습 2 (VPI). VPI가 무엇이고, "백엔드 이식성"이 왜 가치 있는지, 비전판 CUDA라 부르는 이유를 설명하라.
정답
VPI(Vision Programming Interface)는 여러 백엔드(CPU·GPU·PVA 등)에 같은 비전 알고리즘을 실행하는 통일 API/라이브러리다 — 리스케일·remap(보정)·스테레오 disparity·광학 흐름·특징 검출/추적·필터 등을 제공하고, 백엔드를 골라 실행(같은 알고리즘을 PVA·GPU·CPU 중). 백엔드 이식성 가치: ① 한 번 작성하고 엔진 선택 — 같은 비전 파이프라인을 PVA(효율)로 실행하다가 GPU(유연·overflow)로 코드 재작성 없이 전환 → 엔진 분배·실험·부하 대응이 쉬움. ② 최적 엔진 활용 — 알고리즘마다 가장 적합한 백엔드를 골라 전력·성능 최적(PVA 효율적인 것은 PVA, GPU가 나은 것은 GPU). ③ 상호운용 — CUDA(GPU)·다른 엔진과 데이터 공유로 파이프라인 연결(전처리 PVA → DNN GPU/DLA). 비전판 CUDA인 이유: CUDA가 GPU 프로그래밍을 표준화했듯, VPI가 이기종 비전(여러 엔진)을 표준 API로 통일 — 비전 작업을 엔진에 자유롭게 매핑하게 해 이기종 분업을 실용화. 단 백엔드별 지원 알고리즘은 다를 수 있어(PVA 미지원이면 GPU로) 버전 확인.
연습 3 (분업). 자율주행 비전 파이프라인(카메라 ingest → 보정 → 스테레오 깊이 → 객체 검출 → 융합)을 5개 엔진(ISP·PVA·DLA·GPU·CPU)에 매핑하라.
정답
매핑: ① 카메라 ingest(원시→이미지) → ISP(디모자이크·노이즈·톤, 카메라 파이프라인 전용) + 비디오 디코더(스트림). ② 보정·리스케일(전처리) → PVA(VPI) — 렉티피케이션·왜곡 보정·리스케일은 클래식 CV라 PVA가 효율적. ③ 스테레오 깊이(disparity) → PVA(VPI) — 클래식 스테레오는 PVA로(효율·해석 가능). (깊이를 DNN으로 하면 DLA/GPU.) ④ 객체 검출 DNN → DLA(표준이면 효율, 8.4) + GPU(DLA 미지원·신규). ⑤ 센서 융합 → GPU/CPU — 다센서 통합·확률 추론. ⑥ 계획·제어 → CPU(+GPU). 모두 병렬로 동시 실행 — ISP가 다음 프레임 ingest하는 동안 PVA가 이전 프레임 전처리, DLA가 검출, GPU가 융합 → 파이프라인·병렬로 매 프레임 데드라인 충족(8.1). VPI로 PVA 비전을 매핑, TensorRT로 DLA DNN을(8.4), CUDA로 GPU 융합. 안전 감시는 안전 섬/락스텝(8.8). 핵심: 각 작업을 가장 효율적인 엔진에 분배하고 병렬로 → 전력 예산 안 처리량. GPU는 전처리·표준 DNN을 PVA·DLA에 넘겨 융합·계획에 집중.
연습 4 (백엔드 전환). VPI 스테레오를 PVA로 실행하다가 부하가 늘어 일부를 GPU로 옮기려 한다. 어떻게 하고 무엇을 주의하나?
정답
방법: VPI는 백엔드 이식성을 주므로 같은 스테레오 알고리즘의 백엔드를 PVA에서 CUDA(GPU)로 바꾸면 됨(코드 거의 그대로, 백엔드 인자만). 일부 작업을 GPU로 분산해 PVA 부하를 줄임. 주의: ① 엔진 간 데이터 이동 오버헤드 — PVA와 GPU가 다른 작업을 하면 그 사이 데이터를 이동·동기화(8.4 폴백과 유사) → 전환이 잦으면 오버헤드가 이득을 잠식. 파이프라인을 엔진별로 정렬해 이동 최소화. ② GPU 여유 — GPU가 이미 DNN·융합으로 바쁘면 스테레오를 GPU로 옮겨도 전체가 더 느려질 수 있음 → GPU 부하 확인, 전력도. ③ 결정성 — GPU는 지연이 가변(8.4)이라 PVA의 결정적 지연 대비 종단 데드라인 보장이 어려워질 수 있음 → 실시간 영향 측정(8.6). ④ 정확도·일관성 — 백엔드마다 수치가 미세하게 다를 수 있어(안전 critical) 검증. 결정: 부하가 정말 PVA 한계인지, GPU로 옮기는 것이 전체 전력·지연·결정성에 이득인지 측정으로. 맹목적으로 전환보다 부하·여유·오버헤드를 보고. VPI의 이식성이 이 실험을 쉽게 해줌.
연습 5 (왜 분업). "강력한 GPU 하나면 다 되는데 왜 ISP·PVA·DLA를 따로 두나?"에 전력·처리량·결정성으로 답하라.
정답
GPU 하나로 다 하면 비효율인 이유(8.1·8.2·8.4 종합): ① 전력 효율 — 차는 전력이 천장(수십~수백 W, 8.1). GPU는 유연하지만 범용 오버헤드로 전력을 많이 씀. ISP(카메라)·PVA(클래식 CV)·DLA(표준 DNN)는 각자 전용·고정기능/효율 설계라 같은 작업을 훨씬 적은 전력으로 → 전력 천장 안에서 더 많은 컴퓨팅. GPU로 클래식 CV·카메라 ingest·표준 DNN을 다 하면 전력 초과. ② 처리량(병렬) — 전용 엔진들이 동시에 일하면(ISP가 ingest, PVA가 전처리, DLA가 검출, GPU가 융합) 직렬보다 전력당 총 처리량↑ — 매 프레임 데드라인을 병렬로 충족. GPU 하나면 직렬로 다 해 처리량 부족. ③ 결정성 — PVA·DLA·ISP는 예측 가능한 지연(고정/전용)이라 종단 지연 데드라인을 보장하기 쉬움(8.6). GPU는 가변이라 실시간 보장이 어려움. ④ GPU 자유화 — 전용 엔진이 전처리·표준 작업을 맡아 GPU가 유연·신규·융합에 집중. 정리: 전력 천장 + 실시간 + 병렬 처리량 때문에 "작업마다 맞는 엔진"의 분업이 답 — 데이터센터(전력 풍부)는 GPU 하나로 되지만 차는 안 됨. 이기종 SoC의 존재 이유.
8.5.11 요약 · 다음 장(DLA·PVA 묶음 마무리)
- PVA는 클래식 비전(스테레오·특징·광학흐름·필터·보정)을 전력 효율적으로 맡는다 — DNN(DLA/GPU)이 아닌 비전 연산의 효율 엔진. GPU/DLA를 DNN에 남긴다.
- 네 엔진 분업: ISP(카메라)·PVA(클래식 CV)·DLA(표준 DNN)·GPU(유연·융합)·CPU(제어) — 각자 잘하는 것을 병렬로 해 전력 예산 안 처리량을 극대화한다. 8.2 "작업마다 맞는 엔진"의 완성.
- VPI는 같은 비전 알고리즘을 여러 백엔드(PVA·GPU·CPU)에 실행하는 통일 API — 백엔드 이식성으로 비전을 엔진에 자유롭게 매핑(비전판 CUDA). 전처리 PVA → DNN GPU/DLA로 파이프라인.
- 비전 파이프라인은 한 엔진 성능이 아니라 분업·병렬로 완성 — 전력·처리량·결정성을 함께. 전환 오버헤드 최소화, 안전·정확도 검증(8.11) 전제.
- 정직: PVA·VPI 알고리즘·백엔드는 세대·버전 의존, 클래식 CV vs DNN은 정확도·전력으로 선택, safety-critical은 검증·결정성·안전 감시(8.6·8.8·8.11) 전제.
- DLA·PVA(8.4~8.5) 완료: DLA(DNN 오프로드)·PVA/VPI(클래식 비전)·이기종 분업으로 전력 예산 안 인지를 완성.
다음 장: 8.6 DRIVE OS I — 하이퍼바이저·RTOS. 하드웨어(SoC·엔진)를 봤으니 그 위의 기반 OS로 — 자율주행의 결정성(하드 실시간 RTOS)·격리(하이퍼바이저로 혼합 criticality·안전/비안전 분리, 8.3) 를 어떻게 보장하는지, 그리고 그것이 왜 안전(8.8)의 토대인지를 본다.