AEGLOSLAB 엔비디아 기술 스택

제8부 자율주행

8.4 DLA·PVA I — DLA 오프로드

8.4.1 이 장에서 배우는 것 / 선수 지식

8.2에서 DRIVE SoC의 이기종 블록 중 DLA(Deep Learning Accelerator) 가 표준 DNN 추론을 GPU보다 효율적으로(TOPS/W) 처리한다고 했다. 이 장은 그 DLA를 깊게 판다 — 왜 GPU에서 DLA로 오프로드하나, DLA의 제약은 무엇인가, TensorRT로 어떻게 DLA를 타깃하고 GPU 폴백을 다루나. 전력 천장(8.1) 안에서 인지 처리량을 극대화하는 핵심 도구. PVA는 8.5.

핵심 통찰: DLA는 "효율 vs 유연"의 효율 쪽이다. 고정기능이라 표준 DNN 레이어를 GPU보다 적은 전력으로 처리하지만, 지원 연산·정밀도가 제한적이라 모든 모델이 그대로 맞지는 않는다. 그래서 DLA로 주력 오프로드 + GPU로 폴백·보완이 실무 패턴이고, GPU와 DLA가 병렬로 동시에 돌아 전력당 총 추론 처리량을 높인다. INT8(5.4)이 DLA 효율의 핵심 요인이다.

배우는 것:

  • 왜 DLA 오프로드 — 전력 효율(TOPS/W), GPU 자유화, GPU+DLA 병렬로 총 처리량↑.
  • DLA의 동작·제약 — 고정기능 DNN 파이프라인, 지원 연산·정밀도(INT8 우선) 제한.
  • TensorRT + DLA(5.2) — DLA 타깃 빌드, GPU 폴백(미지원 레이어)과 그 오버헤드.
  • 다중 DLA·병렬 — 여러 DLA + GPU 동시 실행으로 인지 모델 분배.
  • INT8과 DLA(5.4) — DLA 효율의 핵심 요인, 정확도 검증.
  • 결정성 — DLA의 예측 가능한 지연(실시간, 8.1·8.6).

선수 지식: 8.2(이기종 SoC·DLA)·8.1(전력·TOPS/W·결정성), 5.2(TensorRT DLA 타깃·폴백)·5.4(INT8 양자화), 1.11(텐서코어 대조). PVA는 8.5, 안전은 8.8. 환경은 DRIVE SoC.

정직: DLA의 지원 연산·정밀도·기능은 세대·버전 의존이다 — 이 장은 오프로드 원리·제약·워크플로를 가르치고 구체 지원 목록은 "그 버전 문서로 확인". 자율주행은 safety-critical(8.8~8.11). 수치는 환경 의존, 실측.

8.4.2 왜 DLA 오프로드 — 전력 효율

8.1에서 차량은 전력이 천장이라 효율(TOPS/W)이 결정적이라 했다. DLA가 그 답의 핵심이다:

표준 DNN 추론을 GPU로만 유연하지만 GPU의 프로그래머블 오버헤드 (스케줄링·범용 회로) → 전력 많이 씀 DLA로 오프로드 고정기능 파이프라인 → 표준 레이어(conv· pool·activation)를 '적은 전력으로' → 같은 추론을 더 좋은 TOPS/W로 (GPU 대비 전력 효율↑) + GPU 자유화: 인지를 DLA로 보내면 GPU는 유연· 신규·전처리·계획에 + 병렬: GPU와 DLA가 '동시에' 돌아 → 전력당 총 추론 처리량↑

세 이점:

  • 전력 효율(TOPS/W): 고정기능이라 범용 GPU의 오버헤드 없이 표준 추론을 효율적으로 — 전력 천장 안에서 더 많은 추론.
  • GPU 자유화: 인지 DNN을 DLA로 오프로드하면 GPU는 DLA가 못 하는 유연·신규 작업·전처리·융합·계획에 집중.
  • 병렬 처리량: GPU + DLA(들)가 동시에 추론 → 한 엔진만 쓸 때보다 전력당 총 처리량↑. 여러 인지 모델을 엔진에 분배.

핵심: DLA의 가치는 "더 빠른 추론"이 아니라 "같은 추론을 더 적은 전력으로 + GPU와 병렬로" 다. 전력 천장(8.1)이 본질이라, 효율과 병렬이 자율주행 인지 처리량을 정한다.

8.4.3 DLA의 동작과 제약

DLA는 고정기능(fixed-function) 딥러닝 가속기다 — 표준 DNN 레이어를 위한 전용 하드웨어 파이프라인.

DLA: 표준 DNN 레이어 전용 하드웨어 · 컨볼루션·풀링·활성화·정규화 등 흔한 레이어를 고정 파이프라인으로 · INT8에 최적화(+ 일부 FP16) — 양자화(5.4)가 효율의 핵심 요인 · 예측 가능한 지연(고정기능 → 결정적, 8.1·8.6) 제약(고정기능의 대가) · 지원 연산·레이어가 제한적(GPU의 프로그래머블 유연성 없음) · 정밀도 제한(INT8 우선, FP16 일부, FP32·신규 정밀도 제한) · 일부 shape·기능·커스텀 연산 미지원

효율 vs 유연의 트레이드오프:

DLAGPU
효율(TOPS/W)높음(고정기능)낮음(범용)
유연성제한적(지원 연산)높음(프로그래머블)
정밀도INT8 우선·FP16 일부폭넓음(FP32·FP16·INT8·FP8...)
신규 연산미지원 가능지원(커스텀·플러그인 5.6)
지연예측 가능(결정적)가변(스케줄)
용도표준·안정 DNN유연·신규·전처리·overflow

핵심: DLA는 표준이고 안정적인 인지 DNN(검출·분할·깊이)에 강하다 — 그것이 자율주행 인지의 다수다. 그러나 신규 구조·커스텀 연산·특수 정밀도는 GPU가 필요. 모델이 DLA에 맞는지가 오프로드의 관건이고, INT8 양자화(5.4)가 효율의 전제.

8.4.4 TensorRT + DLA — 타깃·폴백

DLA에 모델을 탑재하는 길은 TensorRT(5.2)다 — DLA를 빌드 타깃으로 지정하고, DLA가 못 하는 레이어는 GPU로 폴백.

   TensorRT DLA 타깃 빌드:
     trtexec --onnx=model.onnx --useDLACore=0 --int8 --allowGPUFallback ...
     · --useDLACore=N: N번 DLA 코어를 타깃
     · --int8(또는 fp16): DLA 정밀도(INT8 우선)
     · --allowGPUFallback: DLA 미지원 레이어를 GPU로 폴백
   결과:
     · DLA 지원 레이어 → DLA에서 실행(효율)
     · 미지원 레이어 → GPU 폴백 → DLA↔GPU 데이터 이동(오버헤드)

폴백의 비용·관리:

폴백이 많으면 매 전환마다 DLA↔GPU 데이터 이동·동기화 오버헤드 → 효율 손실 DLA 미지원 레이어 GPU DLA 또 GPU ... 목표: 폴백 최소화 · 모델이 DLA 지원 연산으로 구성되게 설계/변환 · 폴백 지점을 모델 앞/뒤로 몰아 중간 전환↓ · 너무 많이 폴백되면 그 모델은 차라리 GPU 전체로

워크플로:

많이 폴백되면 1) 모델 → TensorRT DLA 타깃 빌드 (--useDLACore --int8 --allowGPUFallback) 2) 빌드 로그/프로파일로 'DLA vs GPU 폴백' 비율 확인 3) INT8 정확도 검증(5.4) — 태스크 지표로(자율주행은 안전 critical) 4) 측정: DLA 실행 시 GPU가 자유로운지, 전력·처리량·지연 모델 재설계(DLA 지원 연산) 또는 GPU로

견해: DLA 오프로드는 "모델이 DLA에 맞는가 + 폴백이 적은가" 가 성패다. 표준 검출·분할 모델은 대개 잘 맞지만, 최신·커스텀 구조는 폴백이 많아 효율이 떨어진다 — 그러면 모델을 DLA 친화적으로 재설계하거나 GPU로. INT8 정확도는 안전 critical이라 더 엄격히 검증(5.4·8.11).

8.4.5 다중 DLA·병렬 — 엔진에 분배

SoC는 보통 여러 DLA 코어를 가진다(세대 의존). GPU + 여러 DLA를 동시에 써 인지 모델을 분배한다:

인지 모델 분배(예) DLA0: 카메라 검출 모델 A(INT8) DLA1: 분할 모델 B (INT8) GPU: 깊이 모델 C (DLA 미지원 연산· FP16) + 융합 + 전처리 셋이 '병렬'로 동시 실행 → 전력당 총 인지 처리량↑ + PVA(8.5): 클래식 비전 전처리
  • 병렬 처리량: 여러 엔진이 동시에 다른 모델을 → 직렬보다 총 처리량↑(전력 예산 안).
  • 결정성: DLA의 예측 가능한 지연으로 각 모델의 종단 지연을 보장하기 쉬움(8.1·8.6).
  • 분배 설계: 어느 모델을 어느 엔진에(DLA 적합? GPU 필요?)가 핵심 — 8.2의 워크로드→엔진 매핑.

핵심: 자율주행 인지는 여러 모델(검출·분할·깊이·차선...)을 매 프레임 실행한다. 이를 GPU + 여러 DLA에 분배해 병렬로 실행하는 것이 전력 예산 안에서 처리량을 극대화하는 방법 — DLA가 효율적인 표준 모델을 맡고, GPU가 나머지·융합을. 분배·병렬이 자율주행 추론 설계의 핵심.

8.4.6 워크스루 — DLA 오프로드

   1) 모델을 DLA 타깃으로 빌드:
      trtexec --onnx=detector.onnx --useDLACore=0 --int8 \
              --allowGPUFallback --saveEngine=detector_dla.plan
      (DLA는 INT8 우선 → 캘리브레이션 캐시 제공, 5.4)

   2) DLA vs GPU 폴백 확인:
      빌드 로그·프로파일에서 각 레이어가 DLA인지 GPU 폴백인지
      → 폴백 많으면: 미지원 연산 파악 → 재설계 또는 GPU 전체

   3) 정확도 검증(안전 critical):
      INT8 DLA 엔진의 태스크 지표(검출 mAP 등)를 FP16/FP32 대비(5.4)
      → 자율주행은 허용 하락이 더 보수적

   4) 병렬 분배:
      여러 모델을 DLA0·DLA1·GPU에 분배 → 동시 실행 → 전력·처리량·지연 측정
      → GPU가 인지 오프로드로 자유로워져 융합·계획에 쓰이는지
   체크: DLA 오프로드 후
     · 전력↓(같은 추론을 적은 W)  · GPU 여유↑(다른 작업 가능)
     · 총 처리량↑(병렬)  · 지연 예측 가능(결정적)
     · 정확도 허용 안(INT8 검증)  · 폴백 오버헤드 작음

실무: DLA가 효율적이라고 모든 것을 DLA에 밀면 폴백·미지원·정확도 문제가 생긴다 — 표준·안정 모델을 INT8로 DLA에, 나머지를 GPU에 분배하고, 폴백·정확도를 측정으로 관리. 안전 critical이라 INT8 정확도는 보수적으로(8.11).

8.4.7 중간 점검 (체크포인트)

  • [ ] DLA 오프로드의 세 이점(전력 효율 TOPS/W·GPU 자유화·병렬 처리량)을 전력 천장(8.1)과 연결해 안다.
  • [ ] DLA가 고정기능이라 효율적이되 지원 연산·정밀도(INT8 우선)가 제한적임을, 효율 vs 유연으로 설명한다.
  • [ ] TensorRT DLA 타깃·GPU 폴백(5.2)과 폴백 오버헤드, 폴백 최소화를 안다.
  • [ ] 다중 DLA + GPU 병렬로 인지 모델을 분배해 전력당 처리량을 높임을 안다.
  • [ ] INT8(5.4) 이 DLA 효율의 핵심 요인이고, 안전 critical이라 정확도 검증이 보수적임을 안다.

증상→의심: DLA 오프로드했는데 효율 안 남 → 폴백 많음(미지원 연산) → 재설계·GPU. 인지로 전력·열 초과 → GPU로만 → DLA 오프로드. DLA INT8 정확도 미달 → 양자화 검증(5.4)·민감 레이어 → 혼합·재캘리브레이션. 모델이 DLA에서 안 됨 → 미지원 연산 → 폴백·GPU·재설계. 여러 모델 직렬로 느림 → 엔진 분배 안 함 → DLA들·GPU 병렬. 지연이 가변 → GPU 가변 → DLA 결정성 활용(8.6).

8.4.8 트레이드오프·대안

결정트레이드오프
DLA vs GPU(모델)효율·제한 vs 유연·전력↑
폴백 허용 vs 재설계빠른 적용·오버헤드 vs 효율·노력
INT8(DLA) vs FP16효율·정확도 검증 필요 vs 정확도·전력↑
다 DLA vs 분배미지원·정확도 문제 vs 적합 모델만
단일 엔진 vs 병렬 분배단순 vs 처리량(전력당)

견해: 표준·안정 인지 모델을 INT8로 DLA에 오프로드(효율), 신규·커스텀·DLA 미지원을 GPU에, 여러 엔진에 병렬 분배가 정석이다. 폴백이 많으면 재설계나 GPU로. INT8 정확도는 안전 critical이라 보수적 검증(5.4·8.11). DLA는 범용이 아니라 "표준 추론의 효율 엔진" — 모델 적합성·폴백·정확도를 측정으로 관리.

비엔비디아 정직: 고정기능 DNN 가속기는 다른 엣지 SoC·NPU에도 있다(각 벤더의 NPU·가속기). DLA의 강점은 TensorRT 통합·GPU와의 병렬·DRIVE 스택·결정성이다. 모델이 가속기에 맞는지·정확도·툴체인은 어느 가속기든 핵심 — 피크 TOPS가 아니라 실제 모델 매핑·효율·정확도로 판단.

8.4.9 흔한 함정

  • DLA를 GPU처럼 가정. 지원 연산·정밀도 제한 — 모델이 맞아야. 안 맞으면 폴백·재설계·GPU.
  • 모든 것을 DLA에. 미지원·폴백·정확도 문제 → 적합한 표준 모델만 DLA, 나머지 GPU.
  • 폴백 오버헤드 무시. 많은 폴백은 DLA↔GPU 전환 비용으로 효율 잠식 → 폴백 최소화·재설계.
  • INT8 정확도 미검증. 안전 critical이라 더 엄격 — 태스크 지표로 검증(5.4·8.11), 보수적 허용.
  • 단일 엔진만. GPU·여러 DLA를 병렬 안 쓰면 처리량 손해 → 분배.
  • DLA 결정성 안 씀. DLA의 예측 가능 지연은 실시간에 유리(8.6) — 가변 GPU만 쓰면 데드라인 보장 어려움.
  • 지원 목록을 버전 불문. DLA 연산·정밀도 지원이 세대·버전 의존 — 그 버전 문서.
  • TOPS만 비교. 실제 모델이 DLA에 매핑되는지·효율·정확도가 중요(피크 아님).

8.4.10 연습문제

연습 1 (왜 오프로드). 인지 DNN을 GPU로만 실행하던 팀이 전력·열 한계에 부딪혔다. DLA 오프로드가 어떻게 돕는지 세 가지로 설명하라.

정답

① 전력 효율(TOPS/W): DLA는 고정기능이라 표준 DNN 레이어(conv·pool·activation)를 GPU의 프로그래머블 오버헤드(범용 회로·스케줄링) 없이 적은 전력으로 처리 → 같은 추론을 더 좋은 TOPS/W로, 전력·열 천장(8.1) 완화. ② GPU 자유화: 인지 DNN을 DLA로 보내면 GPU가 비어 융합·계획·전처리·신규 모델 등 DLA가 못 하는 유연한 작업에 쓰임 → 같은 칩으로 더 많은 일. ③ 병렬 처리량: GPU + DLA(들)가 동시에 추론 → 한 엔진만 쓸 때보다 전력당 총 추론 처리량↑, 여러 인지 모델을 분배. 전제: 모델이 DLA 지원 연산으로 구성되고 INT8(5.4)로 양자화돼야 효율, 폴백이 적어야. 핵심: DLA는 "더 빠른 추론"이 아니라 "같은 추론을 적은 전력으로 + GPU 병렬"로 전력 천장 안에서 처리량을 푼다.

연습 2 (제약·폴백). 최신 트랜스포머 기반 검출 모델을 DLA에 탑재하려는데 빌드 후 절반이 GPU로 폴백된다. 원인과 대응, 그리고 언제 GPU만으로 충분한가?

정답

원인: DLA는 고정기능이라 지원 연산·레이어가 제한적(8.4.3) — 표준 conv/pool은 되지만 트랜스포머의 어텐션·신규 연산은 미지원일 수 있어 GPU로 폴백. 절반 폴백은 모델이 DLA 친화적이지 않다는 뜻. 대응: ① 폴백 비율·지점 확인(빌드 로그·프로파일) — 어느 연산이 미지원인지. ② DLA 친화적 재설계 — 미지원 연산을 지원 연산으로 대체(가능하면), 또는 폴백 지점을 모델 앞/뒤로 몰아 중간 DLA↔GPU 전환↓(전환마다 데이터 이동 오버헤드). ③ INT8 검증(5.4). 언제 GPU로: 폴백이 너무 많으면(예 절반) DLA↔GPU 전환 오버헤드가 DLA 효율 이득을 까먹어 차라리 GPU 전체가 나음 — 잦은 전환보다 일관된 GPU 실행이 빠르고 단순할 수 있다. 즉 DLA는 폴백이 적은(대부분 지원) 표준 모델에 유리하고, 트랜스포머처럼 폴백이 많으면 GPU로(또는 차세대 SoC의 트랜스포머 지원 8.3 대기). 측정으로 결정: DLA(폴백 포함) vs GPU 전체의 실제 처리량·효율 비교.

연습 3 (INT8·안전). DLA는 INT8에 최적이다. 자율주행에서 INT8 양자화를 쓸 때 일반 추론보다 무엇을 더 조심해야 하나?

정답

DLA 효율의 핵심 요인은 INT8(5.4)이지만, 자율주행은 safety-critical이라 일반 추론보다 정확도 검증이 더 엄격해야: ① 보수적 허용 하락 — 일반 서비스는 "top-1 −1% OK"여도, 자율주행 인지(검출·분할)의 정확도 저하는 안전 사고로 이어질 수 있어 허용 하락이 훨씬 보수적이고, 안전 관련 클래스(보행자·차량)는 특히 엄격. ② 엣지케이스·드물지만 치명적 — 평균 mAP만이 아니라 드문 위험 상황(야간·악천후·가려진 보행자)의 인지 저하를 봐야 — INT8이 그런 케이스를 더 망칠 수 있음. ③ 민감 레이어 혼합정밀(5.4) — 안전 critical 출력(검출 신뢰도·좌표)은 더 높은 정밀도 유지 고려. ④ 대표·안전 평가셋 — decontamination·운영 분포·안전 시나리오 포함, 시뮬레이션(8.15) 보강. ⑤ AI 인지 안전 검증(8.11) — 양자화가 인지 안전 케이스에 미치는 영향을 체계적으로. 핵심: INT8은 효율을 주지만 자율주행에선 정확도 = 안전이라, 보수적 허용·엣지케이스·민감 레이어·안전 평가로 검증. 자격 있는 안전 엔지니어·표준(ISO 26262·SOTIF 8.8~8.10)의 영역.

연습 4 (병렬 분배). 자율주행 인지가 매 프레임 검출·분할·깊이·차선 4개 모델을 실행한다. SoC에 GPU 1개·DLA 2개가 있다. 어떻게 분배·병렬화하나?

정답

분배 원리: 표준·안정·INT8 친화 모델을 DLA에, 신규·복잡·DLA 미지원·고정밀 필요 모델을 GPU에, 모두 병렬로 동시 실행해 전력당 처리량↑. 예: DLA0 = 검출 모델(표준 conv, INT8), DLA1 = 분할 모델(표준, INT8), GPU = 깊이 모델(DLA 미지원 연산·FP16 필요할 수 있음) + 차선(또는 차선도 DLA 가능하면 DLA에, 깊이만 GPU) + 융합·전처리. 4모델을 3엔진(GPU·DLA0·DLA1)에 분배해 직렬이 아니라 동시에 → 매 프레임 종단 지연 안에 모두 처리(병렬로 데드라인 충족, 8.1). 추가: PVA(8.5)로 깊이의 스테레오 전처리·렉티피케이션을 오프로드해 GPU 더 자유화, ISP/비디오로 카메라 ingest. 분배 결정: 각 모델의 DLA 적합성(폴백 비율)·정밀도·정확도(안전)를 측정해 매핑. DLA들이 효율적인 표준 모델을 맡아 GPU를 융합·계획에 남김. 핵심: 인지 다모델을 GPU+다중 DLA에 병렬 분배 = 전력 예산 안 처리량의 핵심(8.2 워크로드→엔진 매핑).

연습 5 (의사결정). 어떤 인지 모델을 DLA에 탑재할지 GPU에 둘지 결정하는 체크리스트를 만들어라.

정답

체크리스트: ① 연산 지원 — 모델 레이어가 DLA 지원 연산인가(빌드 후 폴백 비율 확인)? 대부분 지원·폴백 적음 → DLA 후보. 폴백 많음(트랜스포머·커스텀) → GPU. ② 정밀도 — INT8로 양자화 가능하고 정확도(안전 critical 허용)가 통과하나? 통과 → DLA(효율). INT8 부족·고정밀 필요 → GPU(또는 혼합). ③ 표준·안정성 — 표준·안정 모델(검출·분할·깊이)인가 신규·자주 바뀌는가? 표준·안정 → DLA. 신규·실험 → GPU(유연). ④ 전력 예산 — 전력 여유가 적어 효율이 필요한가? → DLA 오프로드. ⑤ 결정성 — 예측 가능한 지연이 데드라인에 필요한가? → DLA(결정적, 8.6). ⑥ GPU 부하 — GPU가 다른 작업(융합·계획·신규)으로 바쁜가? → 인지를 DLA로 보내 GPU 자유화. 결정: ①②③ 통과(지원·INT8 정확도·표준)면 DLA로 오프로드(효율·병렬·결정성), 하나라도 제약이 되면(폴백 많음·INT8 부족·신규) GPU로. 측정으로 검증(DLA 폴백 포함 vs GPU 전체 실제 효율·처리량·정확도). 안전은 자격 있는 엔지니어가 별도 검증(8.11).

8.4.11 요약 · 다음 장

  • DLA 오프로드는 표준 DNN 추론을 GPU에서 고정기능 DLA로 보내 전력 효율(TOPS/W)·GPU 자유화·병렬 처리량을 얻는다 — 전력 천장(8.1) 안에서 인지 처리량을 푸는 핵심.
  • DLA는 고정기능이라 효율적이되 지원 연산·정밀도(INT8 우선)가 제한적 — 효율 vs 유연. 표준·안정 모델에 강하고, 신규·커스텀은 GPU.
  • TensorRT로 DLA 타깃 빌드 + GPU 폴백(5.2) — 폴백이 많으면 DLA↔GPU 전환 오버헤드로 효율 손실, 폴백 최소화·재설계·또는 GPU 전체. INT8(5.4)이 효율의 핵심 요인.
  • 다중 DLA + GPU 병렬로 인지 다모델을 분배해 전력당 처리량↑. DLA의 결정성은 실시간 데드라인에 유리.
  • 정직: DLA 지원·정밀도는 세대·버전 의존, INT8 정확도는 안전 critical이라 보수적 검증(5.4·8.11), 모델 적합성·폴백·정확도를 측정으로.

다음 장: 8.5 DLA·PVA II — PVA·VPI·GPU 분업. DLA가 DNN을 맡았으니, PVA(Programmable Vision Accelerator) 가 맡는 클래식 비전(스테레오·특징·필터·렉티피케이션)과, 비전 가속 라이브러리 VPI, 그리고 GPU·DLA·PVA·ISP의 분업으로 자율주행 비전 파이프라인을 전력 예산 안에서 완성하는 법을 본다. 이로써 DLA·PVA(8.4~8.5)를 마무리한다.