AEGLOSLAB 엔비디아 기술 스택

제9부 로보틱스

9.3 JetPack·L4T II — 컨테이너·배포

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

9.2에서 Jetson을 플래시·부팅했다. 이제 그 위에 애플리케이션을 컨테이너로 배포·운영하는 법을 본다 — 데이터센터(제7부 k8s·6.7 NIM)에서 본 컨테이너의 이점(재현성·의존성 격리·배포 일관)을 엣지 로봇에서. 그러나 엣지 컨테이너는 데이터센터와 결정적으로 다른 점이 있다 — 컨테이너가 호스트의 L4T 드라이버에 결합되고, arm64 아키텍처이며, 수많은 로봇에 OTA로 배포한다. JetPack 묶음(9.2~9.3)의 마무리.

핵심 통찰: 엣지 컨테이너는 호스트 JetPack/L4T 버전에 묶인다 — GPU·DLA 드라이버가 컨테이너가 아니라 호스트(L4T) 에 있고, 컨테이너는 NVIDIA 컨테이너 런타임으로 그것을 쓴다. 그래서 임의의 CUDA 컨테이너나 못 실행하고, 호스트 L4T 버전과 호환되는 L4T 베이스 이미지여야 한다(데이터센터보다 엄격). 그리고 배포는 한두 서버가 아니라 현장의 수많은 로봇이라 플릿 관리·OTA가 핵심이다.

배우는 것:

  • 왜 엣지 컨테이너 — 재현성·격리·배포 일관(데이터센터와 같은 이점, 엣지에서).
  • L4T 컨테이너 아키텍처 — 호스트 드라이버 결합, NVIDIA 런타임(7.2), L4T 베이스 이미지.
  • 버전 결합 — 컨테이너 CUDA/TensorRT가 호스트 JetPack/L4T와 호환(9.2 확장).
  • arm64 — Jetson은 aarch64, 데이터센터(x86)와 다른 빌드.
  • 플릿 관리·OTA — 수많은 로봇에 컨테이너·OS 업데이트, A/B 파티션·롤백.
  • 엣지 vs 데이터센터 컨테이너 차이 — arch·드라이버 결합·자원·연결·규모.

선수 지식: 9.2(JetPack/L4T 버전·드라이버)·7.2(nvidia-container-toolkit)·5.11·6.7(Triton/NIM 컨테이너)·6.8(배포·스케일). 전력 운영은 9.4, Isaac은 9.7. 환경은 Jetson·컨테이너.

정직: L4T 베이스 이미지 태그·버전·플릿 도구는 세대·버전·생태계 의존이다 — 이 장은 엣지 컨테이너 아키텍처·배포 개념을 가르치고 구체 태그·도구는 "확인 필요". 컨테이너·OTA·플릿은 임베디드 운영의 일반 개념(다른 엣지도 유사).

9.3.2 왜 엣지 컨테이너 — 데이터센터 이점을 엣지로

컨테이너의 이점(제7부)이 엣지에도 적용된다:

엣지 컨테이너 이점 (데이터센터와 같음) 재현성: 같은 컨테이너 = 같은 환경(의존성·라이브러리 고정) 의존성 격리: 앱마다 다른 CUDA/라이브러리 버전 충돌 회피 배포 일관: 개발=배포 환경 동일, '내 PC에선 됐는데' 방지 업데이트·롤백: 컨테이너 교체로 앱 업데이트, 문제 시 롤백 엣지 특유의 가치 수많은 로봇에 '동일 환경' 배포(플릿 일관) OTA로 원격 업데이트(현장 접근 어려움)

핵심: 엣지에서도 컨테이너는 재현성·격리·배포 일관을 준다 — 특히 수많은 로봇에 동일 환경을 배포하고 OTA로 갱신할 때 결정적. 데이터센터(6.7 NIM·제7부)의 컨테이너 운영이 엣지로 확장되되, 다음 절의 호스트 드라이버 결합·arm64·플릿 차이가 있다.

9.3.3 L4T 컨테이너 아키텍처 — 호스트 드라이버 결합

엣지 컨테이너의 결정적 차이: GPU·DLA 드라이버가 컨테이너가 아니라 호스트(L4T)에 있다.

결론 데이터센터 컨테이너(7.2) 컨테이너 ← nvidia-container-toolkit → 호스트 GPU 드라이버 호스트에 드라이버, 컨테이너에 CUDA 런타임 라이브러리(드라이버는 호스트) Jetson(L4T) 컨테이너 — 더 강하게 호스트 L4T에 결합 GPU·DLA·멀티미디어 드라이버가 L4T(호스트)에 (9.2) 컨테이너는 NVIDIA 런타임으로 호스트 드라이버·일부 L4T 라이브러리를 마운트 컨테이너의 CUDA/TensorRT가 '호스트 L4T 버전과 호환'돼야 임의의 CUDA 컨테이너나 못 돌림 — L4T 버전 정합 필요

L4T 베이스 이미지(NGC):

l4t-base: L4T 호환 기본 이미지(호스트 드라이버 사용 전제) l4t-ml / l4t-pytorch / l4t-tensorflow 등: AI 프레임워크 포함 l4t-tensorrt 등: TensorRT 포함 이 베이스 위에 앱을 빌드 베이스가 호스트 JetPack/L4T 버전과 매칭돼야

핵심: 엣지 컨테이너는 "앱·라이브러리는 컨테이너, 드라이버는 호스트(L4T)" 다 — NVIDIA 런타임이 호스트 드라이버를 컨테이너에 연결. 그래서 컨테이너의 CUDA/TensorRT 버전이 호스트 L4T(JetPack) 버전과 호환돼야 하고, L4T 베이스 이미지를 그 버전에 맞춰 쓴다. 데이터센터보다 결합이 강하다(9.2 버전 묶음의 컨테이너판).

9.3.4 버전 결합·arm64

버전 결합(9.2 확장):

정합 호스트 JetPack/ L4T 버전 그에 맞는 L4T 베이스 이미지 그 위 앱 컨테이너 CUDA/ TensorRT가 호스트 L4T 드라이버와 호환돼야(런타임 마운트) TensorRT 엔진은 그 버전· GPU·DLA용 (5.2·9.2) — 컨테이너 안에서도 타깃 빌드

호스트 L4T를 업그레이드하면 컨테이너 베이스도 그에 맞춰야 한다.

arm64(aarch64) 아키텍처:

arm64 빌드 방법 Jetson은 ARM64 (aarch64), 데이터센터는 x86_64 → 컨테이너 이미지를 'arm64로 빌드'해야 Jetson에서 돔 Jetson에서 직접 빌드(느릴 수 있음) 호스트(x86)에서 크로스 빌드 (QEMU·buildx multi-arch) 멀티아키 이미지 (x86+arm64)를 레지스트리에

데이터센터 x86 이미지를 Jetson에 그대로 못 쓴다(arch 다름).

핵심: 엣지 컨테이너는 arm64로 빌드해야 하고(데이터센터 x86과 다름), 호스트 L4T 버전과 호환돼야 한다. 데이터센터에서 만든 x86 이미지를 Jetson에 그대로 못 쓰고, arm64 + L4T 베이스로 빌드. buildx/멀티아키로 한 번에 빌드하기도. 버전·아키 정합이 엣지 컨테이너의 두 제약.

9.3.5 워크스루 — 컨테이너 실행·빌드

   1) L4T 컨테이너 실행(GPU 사용, NVIDIA 런타임):
      sudo docker run --runtime nvidia -it --rm \
        nvcr.io/nvidia/l4t-base:<tag>           # 호스트 L4T와 매칭되는 태그
      # 안에서: deviceQuery·tegrastats로 GPU 확인 (Jetson은 NVML 없어 nvidia-smi 미지원)
      # CUDA·TensorRT가 호스트 드라이버로 동작

   2) 앱 컨테이너 빌드(arm64, L4T 베이스):
      # Dockerfile
      FROM nvcr.io/nvidia/l4t-base:<tag>        # 호스트 버전 매칭
      RUN apt-get update && ...                  # 앱 의존성
      COPY app /app
      CMD ["/app/run"]
      # Jetson에서: docker build -t myapp:arm64 .
      # 또는 x86 호스트에서 크로스: docker buildx build --platform linux/arm64 ...

   3) TensorRT 엔진은 컨테이너 안에서 Jetson 타깃 빌드(5.2·9.2):
      trtexec --onnx=model.onnx --saveEngine=model.plan --int8 --useDLACore=0 ...

   4) 추론 서빙(엣지 Triton, 5.11):
      Triton을 Jetson에서 실행해 모델 서빙(엣지 추론), 또는 직접 앱
검증 컨테이너에서 GPU· DLA 동작 (deviceQuery· trtexec) 호스트 L4T 버전과 컨테이너 베이스 매칭(버전 불일치 시 실패) arm64 이미지(x86 이미지는 Jetson에서 exec format error) 전력·온도(jtop, 9.4)

실무: L4T 베이스 이미지(호스트 버전 매칭) + arm64 빌드가 기본. 데이터센터에서 학습한 모델을 arm64 컨테이너에 넣고 Jetson 타깃으로 엔진 빌드(5.2). 엣지 추론 서빙은 Triton을 Jetson에서(5.11) 실행하거나 직접. jtop으로 자원·전력 모니터(9.4).

9.3.6 플릿 관리·OTA

데이터센터는 한 곳의 서버지만, 엣지는 현장의 수많은 로봇이다 — 플릿 관리·OTA가 핵심:

플릿(fleet): 현장에 배포된 다수의 로봇·기기 과제 배포: 새 컨테이너(앱)·새 OS (L4T)를 '모든 로봇에' 일관 배포 OTA(Over-The-Air): 원격 업데이트(현장 접근 어려움· 비용) 롤백: 문제 시 안전하게 이전 버전으로 모니터링: 각 로봇의 상태· 버전·헬스(7.7) 계층 앱(컨테이너) 업데이트: 컨테이너 교체(빠름·자주) OS(L4T) 업데이트: A/B 파티션으로 안전하게(부팅 실패 시 롤백)
  • 컨테이너 OTA: 앱을 컨테이너로 두면 컨테이너만 교체해 업데이트(빠름·롤백 쉬움) — OS 재플래시 없이. 자주 갱신.
  • OS OTA(A/B): L4T 업데이트는 위험(부팅 실패=벽돌) → A/B 파티션(두 OS 슬롯)으로 한쪽에 새 OS를 쓰고 부팅, 실패 시 다른 슬롯으로 롤백 — 안전한 OS 업데이트.
  • 플릿 도구·엣지 오케스트레이션: 수많은 기기를 관리(엣지 k8s·KubeEdge·플릿 관리 플랫폼) — 배포·버전·헬스·롤백을 중앙에서.
축데이터센터엣지
서버·기기 수소수 서버다수 로봇
연결안정 연결간헐 연결
물리 접근가능어려움
전원·자원강전원전력·자원 제약

→ 엣지는 OTA·A/B·플릿 관리·견고성이 더 중요하다.

견해: 앱은 컨테이너 OTA(빠른 갱신·롤백), OS는 A/B 파티션(안전) 으로 나눠 운영한다. 현장 접근이 어려우니 OTA가 필수이고, 부팅 실패가 곧 벽돌이라 A/B·롤백이 안전망. 수많은 로봇은 플릿 관리 플랫폼으로 — 데이터센터 배포(6.8)의 엣지·플릿판. 데이터 플라이휠(7.7·8.14)도 플릿이 데이터 소스.

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

  • [ ] 엣지 컨테이너의 이점(재현성·격리·배포 일관·플릿 동일 환경·OTA)을 안다.
  • [ ] L4T 컨테이너가 호스트 드라이버에 결합(드라이버=호스트 L4T, NVIDIA 런타임)됨과 L4T 베이스 이미지를 안다.
  • [ ] 버전 결합(컨테이너 CUDA/TensorRT가 호스트 L4T 호환)·arm64 빌드를 안다.
  • [ ] 플릿 관리·OTA(앱=컨테이너 OTA, OS=A/B 파티션·롤백)를 안다.
  • [ ] 엣지 vs 데이터센터 컨테이너 차이(arch·드라이버 결합·자원·연결·규모)를 제시한다.

증상→의심: 컨테이너에서 GPU 안 됨 → NVIDIA 런타임(--runtime nvidia)·호스트 드라이버 → 런타임·toolkit(7.2). CUDA 버전 불일치 → 컨테이너 베이스 ≠ 호스트 L4T → 매칭 베이스. exec format error → x86 이미지를 arm64에 → arm64 빌드. TensorRT 엔진 로드 실패 → 다른 버전·GPU(5.2·9.2) → 타깃 빌드. OS 업데이트 후 벽돌 → A/B 없음 → A/B 파티션. 로봇마다 환경 다름 → 컨테이너·플릿 관리. 현장 업데이트 비용 → OTA.

9.3.8 트레이드오프·대안

결정트레이드오프
컨테이너 vs 네이티브재현성·격리·OTA vs 약간 오버헤드·단순
Jetson 빌드 vs 크로스(x86)단순·느림 vs 빠름·QEMU 복잡
컨테이너 OTA vs OS OTA앱 빠름·자주 vs OS·드물게·A/B
엣지 오케스트레이션 vs 단순 스크립트플릿 규모·기능 vs 소수·단순
엣지 추론 vs 클라우드자율·저지연 vs 컴퓨트↓·연결 의존(9.1)

견해: 앱은 컨테이너로(재현성·OTA·롤백), arm64 + L4T 베이스(호스트 매칭) 로 빌드(크로스 빌드로 빠르게), 앱은 컨테이너 OTA·OS는 A/B로 갱신, 플릿은 엣지 오케스트레이션으로. 데이터센터 컨테이너 운영(제7부)을 엣지·플릿·arm64·드라이버 결합에 맞춰 적용. 추론은 엣지(Jetson Triton)·자율(9.1), 비실시간 학습은 클라우드 플라이휠(7.7).

비엔비디아 정직: 엣지 컨테이너·OTA·플릿 관리는 임베디드·IoT 일반 개념(다른 엣지 SoC·플랫폼도 컨테이너·A/B·OTA). Jetson의 강점은 NVIDIA 런타임·L4T 베이스 이미지·CUDA/TensorRT 엣지 스택·데이터센터 연속(8.3). 플릿 도구는 다양(엣지 k8s·각사). 원리(드라이버 결합·arm64·OTA·A/B)를 이해하는 것이 핵심. 태그·도구는 세대·생태계 의존.

9.3.9 흔한 함정

  • x86 이미지를 Jetson에. arch 다름(arm64) → exec format error → arm64 빌드.
  • 호스트 L4T와 다른 베이스. 컨테이너 CUDA/TensorRT가 호스트 드라이버와 불일치 → 매칭 L4T 베이스.
  • NVIDIA 런타임 안 씀. --runtime nvidia 없이는 GPU 접근 안 됨 → toolkit·런타임(7.2).
  • 데이터센터 엔진을 컨테이너에. TensorRT 엔진은 GPU·버전 종속(5.2·9.2) → Jetson 타깃 빌드.
  • OS 업데이트를 A/B 없이. 부팅 실패=벽돌 → A/B 파티션·롤백.
  • 플릿을 수동. 수많은 로봇을 수동 업데이트는 비현실 → OTA·플릿 관리.
  • OTA 롤백 없음. 문제 업데이트가 전 플릿을 망침 → 롤백·카나리(6.8).
  • 태그·도구를 버전 불문. L4T 베이스·플릿 도구가 세대 의존 — 확인.

9.3.10 연습문제

연습 1 (드라이버 결합). L4T 컨테이너에서 GPU·DLA 드라이버가 호스트에 있다는 것이 무슨 의미이고, 왜 컨테이너가 호스트 L4T 버전에 결합되는지 설명하라.

정답

의미: 데이터센터처럼(7.2) Jetson에서도 GPU·DLA·멀티미디어 드라이버는 컨테이너가 아니라 호스트(L4T, 9.2)에 있다. 컨테이너는 NVIDIA 컨테이너 런타임(--runtime nvidia)을 통해 호스트의 드라이버·일부 L4T 라이브러리를 마운트해 사용 — 컨테이너에는 앱과 CUDA 런타임 라이브러리만, 드라이버는 호스트. 왜 호스트 L4T 버전에 결합: 컨테이너의 CUDA/TensorRT 런타임이 호스트 드라이버(L4T)와 호환돼야 동작한다 — CUDA 런타임-드라이버 버전 호환 규칙. 호스트 L4T(JetPack)가 특정 드라이버·CUDA 버전을 제공하므로, 컨테이너의 CUDA/TensorRT가 그와 호환되는 버전이어야(L4T 베이스 이미지를 호스트 버전에 맞춰). 그래서 임의의 CUDA 컨테이너나 못 실행하고, 호스트 L4T 버전에 매칭되는 L4T 베이스 이미지(l4t-base, l4t-ml 등)를 써야 한다. 데이터센터보다 결합이 강한 이유: Jetson은 드라이버·L4T가 더 통합돼 있어(임베디드), 컨테이너-호스트 버전 정합이 엄격. 함의: 호스트 L4T를 업그레이드하면 컨테이너 베이스도 맞춰야 하고, 컨테이너 빌드 시 타깃 Jetson의 JetPack 버전을 알아야. 9.2의 "JetPack 버전 묶음"이 컨테이너로 확장된 것. 이것이 엣지 컨테이너 운영의 첫 제약(arm64가 둘째).

연습 2 (arm64). 데이터센터에서 만든 x86 컨테이너 이미지를 Jetson에서 못 쓰는 이유와, arm64 이미지를 만드는 방법을 설명하라.

정답

못 쓰는 이유: Jetson은 ARM64(aarch64) 아키텍처, 데이터센터는 x86_64. 컨테이너 이미지의 바이너리는 특정 CPU 아키텍처용으로 컴파일되어 있어, x86 이미지를 arm64 Jetson에서 실행하면 exec format error(아키텍처 불일치) — CPU가 그 명령어를 이해 못 함. (컨테이너는 커널을 공유하되 바이너리는 arch별.) arm64 이미지 만드는 법: ① Jetson에서 직접 빌드 — Jetson(arm64)에서 docker build → arm64 이미지. 단순하나 Jetson이 빌드에 느릴 수 있음(컴파일). ② x86 호스트에서 크로스 빌드 — docker buildx build --platform linux/arm64로 QEMU 에뮬레이션을 통해 x86 머신에서 arm64 이미지 빌드(또는 arm64 빌드 머신). 빠른 빌드 인프라 활용. ③ 멀티아키 이미지 — buildx로 x86+arm64를 한 이미지(manifest)로 레지스트리에 푸시 → 각 플랫폼이 자기 arch를 받음. 추가: arm64 이미지는 L4T 베이스(호스트 매칭, 9.3.3) 위에 빌드해 드라이버 호환도 맞춰야. TensorRT 엔진은 그 안에서 Jetson 타깃 빌드(5.2). 정리: arch(arm64)와 L4T 버전(호스트 매칭) 둘 다 맞춰야 — 데이터센터 x86 이미지를 그대로 못 쓰고, arm64 + L4T 베이스로 빌드. 크로스/멀티아키 빌드로 CI에서 양쪽을 한 번에. 임베디드 ARM의 일반 제약.

연습 3 (OTA·A/B). 현장의 1000대 로봇에 앱과 OS를 업데이트한다. 앱과 OS를 각각 어떻게 업데이트하고, A/B 파티션이 왜 OS에 필요한지 설명하라.

정답

앱 업데이트 — 컨테이너 OTA: 앱을 컨테이너로 배포하면, 컨테이너만 교체해 업데이트(새 이미지 pull·재시작) — OS 재플래시 없이 빠르고, 문제 시 이전 컨테이너로 롤백 쉬움. 자주 갱신 가능(앱 버그·기능). 플릿 관리 도구로 1000대에 일관 배포·버전 추적·카나리(일부 먼저, 6.8). OS 업데이트 — A/B 파티션: L4T(OS·커널·드라이버) 업데이트는 드물지만 위험 — 부팅 실패하면 로봇이 벽돌(현장 접근 어려움, 1000대 회수 불가). A/B 파티션: 두 OS 슬롯(A·B)을 둬, 한쪽(B)에 새 OS를 쓰고 부팅 시도, 부팅·검증 성공하면 B로 전환, 실패하면 자동으로 A(이전 OS)로 롤백 — 항상 동작하는 OS가 있어 벽돌 방지. OTA로 원격 배포(현장 접근 비용). 왜 A/B가 OS에 필요: ① 부팅 실패 = 복구 불가(원격), ② A/B가 안전망(실패 시 이전으로), ③ 무중단(다른 슬롯에 쓰고 전환). 앱(컨테이너)은 경량이고 롤백 쉬워 A/B 불필요(컨테이너 교체로), OS는 부하가 크고 위험해 A/B 필수. 정리: 앱=컨테이너 OTA(빠름·자주·롤백 쉬움), OS=A/B 파티션 OTA(드물게·안전·자동 롤백). 1000대는 플릿 관리 플랫폼으로 배포·모니터·롤백·카나리. 현장 접근이 어려운 엣지라 OTA·A/B·롤백·견고성이 데이터센터보다 중요(9.3.6). 잘못된 업데이트가 전 플릿을 망치지 않게 카나리·점진 배포(6.8).

연습 4 (엣지 vs 데이터센터). 엣지(Jetson) 컨테이너 운영이 데이터센터(제7부)와 다른 점 넷을 대고, 각각의 함의를 설명하라.

정답

차이 넷: ① 아키텍처(arm64 vs x86) — Jetson은 ARM64, 데이터센터는 x86. 함의: x86 이미지를 그대로 못 쓰고 arm64로 빌드(크로스/멀티아키), 이미지·바이너리를 arch별로 관리. ② 호스트 드라이버 결합(L4T) — Jetson 컨테이너는 호스트 L4T 드라이버에 강하게 결합(9.3.3), 컨테이너 CUDA/TensorRT가 호스트 JetPack 버전과 호환돼야. 함의: L4T 베이스 이미지·버전 정합(데이터센터보다 엄격), 임의의 CUDA 컨테이너 못 돌림. ③ 규모·연결(다수 로봇·간헐 연결·물리 접근 어려움) — 데이터센터는 소수 서버·안정 연결·물리 접근 가능, 엣지는 현장의 수많은 로봇·간헐 연결·접근 어려움. 함의: OTA·A/B 파티션·플릿 관리·롤백·견고성이 핵심(9.3.6) — 수동 업데이트·현장 방문 비현실. ④ 자원·전력 제약 — 데이터센터는 강전원·풍부 자원, 엣지는 배터리·발열·작은 메모리·자원 제약(8.1·9.1). 함의: 컨테이너·앱이 경량·전력 효율(9.4), DLA 오프로드(8.4), 리소스 관리. 추가: 안전·실시간(로봇), 데이터 플라이휠 소스(플릿이 데이터 수집 7.7·8.14). 정리: 컨테이너 이점(재현성·격리·OTA)은 같으나, arm64·드라이버 결합·플릿/OTA·자원 제약이 엣지 특유 — 데이터센터 운영을 이에 맞춰 적용. 임베디드·IoT의 일반 차이(다른 엣지도 유사).

연습 5 (배포 흐름). 데이터센터에서 학습한 인지 모델을 1000대 로봇 플릿에 컨테이너로 배포·운영하는 엔드투엔드 흐름을 설계하라.

정답

흐름: ① 데이터센터 학습(제4~6부, NeMo 6.2) — 모델 학습, ONNX 등 이식 포맷으로. ② arm64 컨테이너 빌드 — L4T 베이스(타깃 JetPack 매칭, 9.3.3) 위에 앱·모델·의존성을 arm64로 빌드(buildx/멀티아키, CI). ③ Jetson 타깃 TensorRT 엔진 — 컨테이너 안(또는 빌드 시) 모델을 Jetson GPU·DLA 타깃으로 엔진 빌드(5.2·8.4, INT8/FP16 5.4), 안전 critical이면 검증(8.11). ④ 레지스트리 — 컨테이너 이미지를 레지스트리(NGC/사설)에 푸시(버전 태그). ⑤ 플릿 배포(OTA) — 플릿 관리 플랫폼으로 1000대에 컨테이너 OTA 배포: 카나리(소수 로봇 먼저, 6.8)로 검증 후 점진 확대, 문제 시 롤백. 각 로봇은 호스트 L4T 버전이 맞아야(베이스 매칭). ⑥ 엣지 실행 — 로봇이 컨테이너로 인지·자율(Isaac 9.7, Triton 엣지 서빙 5.11 또는 직접). 자원·전력 모니터(jtop 9.4). ⑦ 모니터링·헬스(7.7) — 각 로봇의 버전·상태·헬스·실패를 중앙에서. ⑧ 데이터 플라이휠(7.7·8.14) — 플릿이 실패·엣지케이스를 수집 → 데이터센터 재학습 → 새 컨테이너 → OTA(다시 ②). OS 업데이트(L4T)는 드물게 A/B 파티션 OTA(안전·롤백). 운영: 앱=컨테이너 OTA(빠름·카나리·롤백), OS=A/B, 버전·아키·드라이버 정합(9.2~9.3). 핵심: 데이터센터 학습→arm64/L4T 컨테이너→Jetson 엔진 빌드→레지스트리→플릿 OTA(카나리·롤백)→엣지 실행→모니터·플라이휠. 데이터센터-엣지 연속(8.3)이되 arm64·드라이버 결합·플릿·OTA·A/B가 엣지 특유. 1000대 규모라 자동화·카나리·롤백·헬스가 필수 — 수동 불가. 안전·실시간(로봇)·전력(9.4)도 고려.

9.3.11 요약 · 다음 장(JetPack 묶음 마무리)

  • 엣지 컨테이너는 데이터센터와 같은 이점(재현성·격리·배포 일관)을 주되, 수많은 로봇에 동일 환경·OTA로 배포할 때 결정적.
  • L4T 컨테이너는 호스트 드라이버에 결합 — GPU·DLA 드라이버는 호스트(L4T), 컨테이너는 NVIDIA 런타임으로 사용. 컨테이너 CUDA/TensorRT가 호스트 JetPack/L4T 버전과 호환돼야(L4T 베이스 이미지, 데이터센터보다 엄격).
  • arm64(aarch64) 로 빌드해야(데이터센터 x86과 다름, 크로스/멀티아키) — x86 이미지는 Jetson에서 안 됨. TensorRT 엔진은 컨테이너 안에서 Jetson 타깃 빌드(5.2).
  • 플릿 관리·OTA: 앱은 컨테이너 OTA(빠름·롤백), OS는 A/B 파티션(부팅 실패=벽돌 방지·자동 롤백). 현장 접근 어려운 엣지라 OTA·견고성·카나리가 핵심.
  • 엣지 vs 데이터센터: arch·드라이버 결합·자원/전력 제약·다수·간헐 연결·물리 접근이 차이 — 데이터센터 운영을 이에 맞춰. 정직: 태그·도구 세대 의존, 컨테이너·OTA는 임베디드 일반 개념.
  • JetPack·L4T(9.2~9.3) 완료: 플래싱·부팅(9.2) → 컨테이너·배포(9.3). Jetson 소프트웨어 스택을 익혔다.

다음 장: 9.4 Jetson 전력·성능 운영. 엣지의 천장인 전력·열을 운영한다 — nvpmodel로 전력 모드(전력 예산·클럭) 설정, 발열·throttling 관리, 메모리 공유(통합 메모리)·jetson_clocks, 전력 vs 성능 트레이드오프를 로봇 운영 관점에서 본다.