부록 부록
A.1 실습 환경 셋업 레퍼런스
이 부록은 본문이 반복 참조한 실습 환경(OS·드라이버·CUDA·컨테이너·멀티노드·클라우드·엣지 devkit)의 셋업·검증·진단을 한곳에 모은 레퍼런스다. 개념·기본 워크스루는 0.3(학습 환경 준비) 에 있고, 이 장은 0.3이 "상세는 A.1"로 미룬 더 깊은 셋업(드라이버 분기·여러 CUDA 공존·에어갭·멀티노드·Jetson/DRIVE 상세·진단 체크리스트)을 다룬다. 통독용이 아니라 필요할 때 찾아보는 참조다.
A.1.1 이 부록은 무엇인가 / 0.3과의 관계
0.3은 이 책 실습의 공통 전제 환경을 세우고(드라이버↔CUDA↔프레임워크 호환·컨테이너 우선·층층이 검증), 깊은 셋업을 이 부록으로 미뤘다. 이 장은 그 레퍼런스다 — 새 개념을 가르치기보다, 셋업 경로·진단·출처를 정리한다.
- 이 부록의 사용법: 통독하지 말고 증상·작업별로 찾아라 — "드라이버 안 올라감"은 A.1.3, "여러 CUDA 공존"은 A.1.4, "에어갭"은 A.1.5, "멀티노드"는 A.1.6, "Jetson 플래싱"은 A.1.8, "안 될 때"는 A.1.9(진단 체크리스트).
- 0.3 우선: 기본은 0.3으로 충분하다 — 이 장은 특수·심화 상황(데이터센터·멀티노드·에어갭·엣지)을 다룬다. 단일 데스크톱·클라우드 학습이면 0.3만으로 책 대부분을 따라간다.
- 본문 연결: 네트워킹(4.11·4.12)·NCCL(4.13·4.14)·k8s(7.2·7.3)·AI Enterprise(7.1)·Jetson(9.1~9.4)·DRIVE(8.2~8.7)·프로파일링(2.13·2.14)의 환경 부분이 여기로 모인다.
정직(S-5, 이 장 전체에 강함): 이 부록의 모든 버전·패키지명·명령·경로·이미지 태그·가격은 시점 의존이다 — 빠르게 변한다(BK-03·05). 이 장은 "어떤 경로가 있고·무엇을 보고 결정하나·어떻게 검증하나"의 구조를 주고, 구체 값은 그 시점 공식 문서(CUDA 릴리스 노트·드라이버 문서·NGC·JetPack·CSP 문서)로 대조하라. 명령은 개념 골격(
<...>는 시점 값). 외우지 말고 출처를 기억하라.
A.1.2 OS·커널·전제
GPU 스택의 토대는 OS·커널이다 — 드라이버가 커널 모듈이라 커널과 맞물린다.
| 항목 | 전제(확인 필요) |
|---|---|
| 지원 OS | 드라이버·CUDA가 지원하는 배포판·버전(Ubuntu LTS·RHEL 등) → CUDA Toolkit 릴리스 노트의 "지원 OS" 표로 확인 |
| 커널 헤더 | 드라이버 빌드(DKMS)에 커널 헤더·빌드 도구 필요 → linux-headers-$(uname -r)·gcc·make |
| 커널 버전 | 너무 새/옛 커널은 드라이버 미지원일 수 → 지원 범위 확인 |
| Secure Boot | 켜져 있으면 커널 모듈 서명 필요(MOK 등록) → 끄거나 서명 |
| 기존 드라이버 | nouveau(오픈소스) 비활성화 필요(blacklist) |
- 지원 OS·커널(확인 필요): 드라이버·CUDA는 특정 배포판·커널 범위를 지원한다 — CUDA Toolkit 릴리스 노트의 지원 OS 표로 확인. 데이터센터는 보통 Ubuntu LTS·RHEL 등 검증된 배포판. 너무 최신 커널은 드라이버가 아직 미지원일 수.
- 커널 헤더·빌드 도구: 드라이버를 DKMS(커널 모듈 재빌드)로 설치하면
linux-headers-$(uname -r)·gcc·make가 필요 — 없으면 모듈 빌드 실패. 커널 업데이트 시 모듈 재빌드(DKMS가 자동화). - Secure Boot: 켜져 있으면 커널 모듈에 서명이 필요(MOK 등록) — 안 하면 드라이버 모듈 로드 실패. 끄거나(BIOS) 서명 절차. 데이터센터·기업 환경 흔한 함정.
- nouveau 비활성화: 오픈소스 nouveau 드라이버가 GPU를 점유하고 있으면 NVIDIA 드라이버와 충돌 → blacklist(설치기가 보통 처리하나 수동 필요할 수).
lsmod | grep nouveau로 확인. - 확인 명령:
uname -r(커널),lsb_release -a(배포판),mokutil --sb-state(Secure Boot),lsmod | grep nouveau.
참조: GPU 스택은 커널 모듈(드라이버)부터 시작하니 OS·커널 전제가 맞아야 한다 — 지원 OS·커널 범위(릴리스 노트)·커널 헤더(DKMS)·Secure Boot(모듈 서명)·nouveau 비활성화. 데이터센터·에어갭은 특히 OS를 검증된 배포판으로 고정. 구체 지원 범위는 시점 문서로.
A.1.3 드라이버 — 분기·설치 경로·Forward Compatibility
드라이버는 호스트에 한 벌(0.3)이고, 분기·설치 경로가 여럿이다.
드라이버 분기(확인 필요 — 명칭·정책 변동):
| 분기 | 설명 |
|---|---|
| 최신(latest/new feature) | 새 기능·새 GPU, 자주 갱신 |
| 프로덕션/LTS 분기 | 안정·장기 지원(데이터센터·서버 권장) |
| 데이터센터 드라이버 | 데이터센터 GPU용(별도 패키지·검증) |
설치 경로:
| 경로 | 설명 |
|---|---|
| 배포판 패키지(apt/dnf) | 통합·간편(권장 일반) |
| NVIDIA .run 설치기 | 직접·세밀(특수) |
| 데이터센터 드라이버 저장소 | 서버·검증 조합 |
| 컨테이너는 드라이버를 안 가짐 | 호스트 드라이버 공유(0.3) |
- 드라이버 분기(확인 필요): 최신(새 기능·새 GPU·잦은 갱신) vs 프로덕션/LTS(안정·장기 — 데이터센터·서버) vs 데이터센터 드라이버(데이터센터 GPU 전용·검증). 명칭·정책은 변동 — 안정성이 중요하면 프로덕션/LTS 분기, 최신 GPU·기능이면 최신. 데이터센터 GPU는 데이터센터 드라이버.
- 설치 경로: ① 배포판 패키지(apt/dnf — 통합·의존성 자동·권장 일반) ②
.run설치기(직접·세밀·특수, 의존성 수동) ③ 데이터센터 저장소(서버·검증). 일반은 배포판 패키지, 특수·에어갭은.run이나 로컬 저장소. - Forward Compatibility(0.3.2.2 보강): 보통 드라이버 ≥ CUDA 요구 하한(상향 호환)이라 드라이버를 업그레이드하는 것이 정공법. 그러나 데이터센터에서 드라이버를 업그레이드하지 못하고 새 CUDA를 써야 하면 CUDA Forward Compatibility 패키지로 "옛 드라이버 + 새 CUDA"를 — 단 데이터센터 GPU 한정·제약 많음(특정 조합만·복잡). 일반 환경은 "드라이버 업"이 정공법.
- 버전 핀·고정: 데이터센터·재현 환경은 드라이버 버전을 핀 고정(자동 업데이트로 깨지지 않게) —
apt-mark hold등. 커널 업데이트와 함께 모듈 재빌드(DKMS) 주의. - 확인·진단:
nvidia-smi(드라이버 버전·동작),cat /proc/driver/nvidia/version,dmesg | grep -i nvidia(로드 실패 원인),modinfo nvidia.
참조: 드라이버는 분기(최신 vs 프로덕션/LTS vs 데이터센터) 와 설치 경로(배포판 패키지·
.run·저장소) 를 상황에 맞게 — 안정성=프로덕션/LTS·데이터센터 드라이버, 일반=배포판 패키지. Forward Compatibility는 데이터센터 GPU 한정 예외(정공법은 드라이버 업). 재현은 버전 핀. 분기·버전은 시점 문서로.
A.1.4 CUDA Toolkit·라이브러리 — 공존·버전 핀
CUDA Toolkit·라이브러리는 컨테이너 우선(0.3)이 기본이나, 호스트 설치·여러 버전 공존이 필요할 때의 레퍼런스.
| 구분 | 내용 |
|---|---|
| 컨테이너 우선(0.3 기본) | NGC 이미지가 CUDA·cuDNN·프레임워크 봉인 → 매트릭스 부담↓·재현·격리(권장) |
| 호스트에 여러 CUDA 공존(필요 시) | /usr/local/cuda-<X.Y> 에 버전별 설치 · /usr/local/cuda 심볼릭 링크로 기본 전환 · PATH·LD_LIBRARY_PATH로 버전 선택(또는 환경 모듈) · CUDA_HOME 환경변수 |
| 라이브러리 짝(확인 필요) | cuDNN·cuBLAS·NCCL·TensorRT가 CUDA 메이저에 종속 → 각 Support Matrix로 짝 확인(0.3.3) |
- 컨테이너 우선(0.3 재확인): CUDA·라이브러리·프레임워크는 NGC 이미지로 — 검증된 조합 봉인, 매트릭스 부담↓. 이 책 기본. 호스트엔 드라이버 + Container Toolkit만.
- 여러 CUDA 공존(호스트 설치 시): 프로젝트마다 다른 CUDA가 필요하면 —
/usr/local/cuda-<X.Y>에 버전별 설치,/usr/local/cuda심볼릭 링크로 기본 전환,PATH·LD_LIBRARY_PATH·CUDA_HOME으로 버전 선택(또는 환경 모듈module load cuda/X.Y). 단 컨테이너가 더 간결(공존 관리 부담↓). - 라이브러리 짝(0.3.3): cuDNN·cuBLAS·NCCL·TensorRT가 CUDA 메이저에 종속 — 각 Support Matrix로 짝 확인. 컨테이너면 봉인되어 자동 정합. 호스트 설치면 직접 맞춰야(함정).
- 버전 핀·재현: 학습 재현은 CUDA·라이브러리·프레임워크 버전을 고정(컨테이너 태그 핀·
requirements.txt·conda env). "되던 것이 안 됨"의 절반이 무심코 업데이트. - 확인:
nvcc --version(설치된 Toolkit —nvidia-smi의 CUDA Version과 다름, 0.3.7),ls /usr/local/ | grep cuda,echo $CUDA_HOME.
참조: CUDA·라이브러리는 컨테이너 우선(NGC 봉인) 이 기본 — 매트릭스·공존 부담↓·재현. 호스트에 여러 CUDA 공존이 필요하면 버전별 디렉터리·심볼릭 링크·환경 모듈로 전환하되, 컨테이너가 더 간결. 라이브러리 짝(Support Matrix)·버전 핀이 재현의 핵심 요인.
nvcc(Toolkit) ≠nvidia-smi(드라이버 최대 CUDA, 0.3.7).
A.1.5 컨테이너 — Container Toolkit·NGC·에어갭
컨테이너 우선(0.3)의 상세 — Container Toolkit·NGC·레지스트리·에어갭.
| 구분 | 내용 |
|---|---|
| NVIDIA Container Toolkit(호스트) | 컨테이너에 GPU·드라이버 주입 · 설치·런타임 등록(docker/containerd/CRI-O) · --gpus all 또는 device=N(0.3)·k8s는 device plugin(7.2) |
| NGC(NVIDIA GPU Cloud) | 검증된 컨테이너·모델 카탈로그 · nvcr.io/nvidia/<프레임워크>:<YY.MM>-py3 (월간 릴리스, 조합 봉인) · 로그인(NGC API key)·pull |
| 에어갭(오프라인) 환경 | 이미지를 사전 다운로드·내부 레지스트리에 미러 · docker save/load 또는 private registry(Harbor 등) · 드라이버·패키지도 로컬 저장소·.run으로 |
- Container Toolkit(0.3.4.3): 호스트에 설치해 컨테이너에 GPU·드라이버 주입 — docker·containerd·CRI-O 런타임에 등록.
--gpus all(0.3)·k8s는 device plugin(7.2). 설치·등록은 시점 공식 문서. - NGC: NVIDIA의 검증된 컨테이너·모델 카탈로그(
nvcr.io) — 프레임워크 이미지(nvcr.io/nvidia/pytorch:<YY.MM>-py3월간 릴리스), TensorRT·Triton·NeMo·Isaac 등. 조합 봉인(드라이버 하한·CUDA·cuDNN·프레임워크)이 매트릭스를 대신(0.3). 로그인(API key)·pull. - 에어갭(오프라인·보안 환경): 인터넷이 없는 데이터센터·기업·국방 — ① 이미지를 사전 다운로드·내부 레지스트리 미러(Harbor 등)·
docker save/load② 드라이버·패키지도 로컬 저장소(apt mirror)·.run③ NGC 이미지를 내부로. 0.3이 미룬 "에어갭"이 여기. 사전 준비·미러가 핵심. - AI Enterprise(7.1): 기업은 NVIDIA AI Enterprise로 지원·검증·보안 패칭된 컨테이너·드라이버를(7.1) — 에어갭·규제 환경에 안정성. 무료 NGC 대비 지원·인증.
- 이미지 크기·캐시: NGC 이미지는 수 GB — 로컬 캐시·레이어 공유·내부 레지스트리로 대역·시간 절약. 빌드는 멀티스테이지·최소 이미지로.
참조: 컨테이너 환경은 Container Toolkit(GPU 주입·k8s device plugin 7.2) + NGC(검증 이미지·조합 봉인) 가 핵심. 에어갭(오프라인)은 이미지·드라이버·패키지를 사전 미러·로컬 저장소로(0.3이 미룬 상세). 기업·규제는 AI Enterprise(7.1) 로 지원·검증. 설치·태그·절차는 시점 문서로.
A.1.6 멀티 GPU·멀티노드 — 토폴로지·NCCL·네트워킹
분산 학습(제4부)·대규모는 멀티 GPU·멀티노드 셋업이 필요 — 0.3이 미룬 영역.
| 구분 | 셋업(본문 제4부 참조) |
|---|---|
| 단일 노드 멀티 GPU | 토폴로지 확인 — nvidia-smi topo -m(NVLink·PCIe·NUMA 4.6·4.7) · NVLink·NVSwitch 가용성·대역(4.6) · GPU 선택 — CUDA_VISIBLE_DEVICES |
| 멀티노드 | 네트워킹 — InfiniBand·Spectrum-X(4.11)·GPUDirect RDMA(4.12) · NCCL 셋업·튜닝(4.13·4.14) — NCCL_* 환경변수·nccl-tests 검증 · 오케스트레이션 — Slurm·k8s(7.2·7.3)·MPI · 시간·노드 동기·공유 스토리지(GPUDirect Storage 4.12) |
- 단일 노드 멀티 GPU:
nvidia-smi topo -m으로 GPU 간 연결(NVLink·PCIe·NUMA 4.6·4.7) 확인 — 토폴로지가 통신·배치를 정한다.CUDA_VISIBLE_DEVICES로 GPU 선택. NVLink 가용성·대역(4.6). - 멀티노드 네트워킹(4.11·4.12): 노드 간은 InfiniBand·Spectrum-X(무손실·RDMA 4.11)·GPUDirect RDMA(NIC↔GPU 직접 4.12). 네트워크 셋업·드라이버(OFED 등)·토폴로지가 분산 성능을 좌우.
- NCCL(4.13·4.14): 집합연산 라이브러리 —
NCCL_*환경변수(토폴로지·알고리즘·네트워크 선택)·nccl-tests(대역·정확성 검증). 분산 학습 디버깅의 핵심(4.14). 환경변수로 튜닝·진단. - 오케스트레이션: 멀티노드 작업은 Slurm(HPC)·k8s(7.2·7.3 — 갱 스케줄링·토폴로지 인지)·MPI로. 노드 간 시간 동기·공유 스토리지(GPUDirect Storage 4.12)·작업 스케줄.
- 검증:
nvidia-smi topo -m(토폴로지),nccl-tests(통신 대역·정확), DCGM(7.3 — 헬스·텔레메트리), 작은 분산 작업으로 단계 검증(단일→멀티 GPU→멀티노드).
참조: 멀티 GPU·멀티노드는 토폴로지(
nvidia-smi topo -m·NVLink 4.6)→네트워킹(InfiniBand·GPUDirect 4.11·4.12)→NCCL(환경변수·nccl-tests 4.13·4.14)→오케스트레이션(Slurm·k8s 7.2·7.3) 순으로 세우고 검증. 분산 디버깅은 NCCL·토폴로지·네트워크. 본문 제4부·7.2·7.3가 상세. 단계별(단일→멀티) 검증.
A.1.7 클라우드·관리형 — CSP·DGX
로컬 GPU가 없거나 특정 세대가 필요하면 클라우드·관리형(0.3.6.3 상세).
| 옵션(가격·사양 변동 — 확인 필요) | 내용 |
|---|---|
| CSP GPU 인스턴스 | 주요 클라우드의 GPU VM · 원하는 GPU 세대 선택 → 컨테이너 우선(0.3) 그대로 · 쿼터·가용 리전·스팟/온디맨드·과금 주의 |
| DGX Cloud / 관리형 | NVIDIA 측 관리형 학습 환경 · 검증된 스택·멀티노드, 대규모 학습 |
| 노트북(Colab류) | 진입 최저·재현 약함(0.3.6.3) |
| k8s·클러스터 | GPU Operator(7.2)·DCGM(7.3)·스케일 |
| 비용·재현 | 시간당 과금 → 작업 끝나면 중지(유휴 비용) · 버전 고정 컨테이너로 재현(관리형은 환경 변동) |
- CSP GPU 인스턴스: 주요 클라우드의 GPU VM — 원하는 GPU 세대(Hopper·Blackwell 등)를 골라 컨테이너 우선(0.3) 그대로. 쿼터(GPU 할당 한도)·가용 리전·스팟 vs 온디맨드(스팟 저렴·중단 위험)·과금(시간당) 주의. 가격·사양은 변동 크니 확인 필요.
- DGX Cloud / 관리형: NVIDIA 측 관리형 학습 환경 — 검증된 스택·멀티노드·대규모 학습. 셋업 부담↓·지원. 대규모 학습·기업에.
- 노트북(Colab류, 0.3.6.3): 진입 최저(브라우저)이나 재현 약함(세션·드라이버·GPU 변동)·제한(시간·디스크). 학습·실험엔 좋으나 프로덕션·재현엔 부적합.
- k8s·클러스터(7.2·7.3): GPU 클러스터는 GPU Operator(드라이버·플러그인 자동 7.2)·DCGM(텔레메트리·헬스 7.3)·스케일·가상화(7.4·7.5). 본문 제7부.
- 비용·재현 규율: ① 유휴 비용 — 시간당 과금이라 작업 끝나면 중지(잊으면 비용이 커짐). ② 재현 — 관리형은 환경이 변하니 버전 고정 컨테이너로 감싼다. ③ 데이터 전송·스토리지 비용도.
참조: 클라우드·관리형은 CSP GPU VM(세대 선택·컨테이너 우선·쿼터/과금)·DGX Cloud/관리형(검증 스택·대규모)·노트북(진입 쉬움·재현 약함)·k8s 클러스터(GPU Operator·DCGM 7.2·7.3). 유휴 비용 중지·버전 고정 재현이 규율. 가격·사양은 변동 크니 시점 확인. 비NVIDIA: 다른 가속 클라우드도 있으나 CUDA 종속 실습은 안 옮겨짐(BK-04).
A.1.8 엣지 devkit — Jetson·DRIVE
자율주행·로보틱스 실습은 엣지 SoC(데스크톱 GPU 아님)를 가정 — 0.3.6.4가 위치만 짚은 상세(본문 9.1~9.4·8.2~8.7).
| 플랫폼 | 셋업(본문 상세 참조) |
|---|---|
| Jetson(로보틱스 9.1~9.4) | JetPack/L4T(aarch64) — x86 CUDA 아님, SDK Manager로 플래싱(9.2) · 플래싱 — 호스트 PC + recovery 모드 + SDK Manager(완전 이미지 9.2) · 컨테이너 — L4T 베이스 이미지·NVIDIA 런타임(9.3) · 상태 — nvidia-smi 다름·tegrastats/jtop(9.4) · 전력 모드 — nvpmodel·jetson_clocks(9.4) |
| DRIVE(자율주행 8.2~8.7) | DRIVE OS·DriveWorks(8.6·8.7·8.13) — 자동차급·안전 · 개발 키트·하이퍼바이저·RTOS(8.6) — ASIL 맥락(8.8~8.11) · 일반 공개성·접근이 Jetson보다 제한(OEM·파트너 중심) |
- Jetson(9.1~9.4): 로보틱스 엣지 — JetPack/L4T(aarch64, x86 CUDA 아님 9.2). 플래싱: 호스트 PC + Jetson을 recovery 모드 + SDK Manager로 완전 이미지(9.2 — PC 설치와 다름). 컨테이너: L4T 베이스 이미지·NVIDIA 런타임(9.3 — 호스트 JetPack 호환). 상태:
nvidia-smi가 데스크톱과 다름 →tegrastats·jtop(9.4). 전력:nvpmodel·jetson_clocks(9.4). 모듈 선택 9.1. - DRIVE(8.2~8.7): 자율주행 엣지 — DRIVE OS·DriveWorks(자동차급·하이퍼바이저·RTOS·안전 8.6·8.7·8.13), ASIL 기능안전(8.8~8.11) 맥락. 접근성: DRIVE는 Jetson보다 공개성·접근이 제한(OEM·파트너·자동차 개발 중심) — 일반 학습자는 Jetson·시뮬(8.15·9.11)로 상당 부분 대체.
- 시뮬로 대체(0.3.6.4 견해): 엣지 하드웨어가 없으면 시뮬레이션(Isaac Sim 9.11·DRIVE Sim 8.15)으로 상당 부분 학습 가능 — 하드웨어 없이 인지·플래닝·시뮬. 실기는 devkit 확보 시.
- 검증: Jetson은
tegrastats·jtop(9.4)·JetPack 버전·컨테이너 GPU 동작. 본문 9.2·9.3·9.4가 상세 절차.
참조: 엣지는 Jetson(JetPack/L4T·SDK Manager 플래싱·tegrastats/jtop·nvpmodel — 본문 9.1~9.4) 과 DRIVE(DRIVE OS·DriveWorks·ASIL — 8.2~8.13, 접근 제한 OEM 중심). 데스크톱 GPU와 다름(aarch64·통합 메모리·플래싱). 하드웨어 없으면 시뮬(8.15·9.11) 로 대체. 상세 절차는 본문 로보틱스·자율주행 부.
A.1.9 검증·진단 체크리스트
"안 될 때" 한곳에서 좁히는 층층이 진단 체크리스트(0.3.5 확장).
층층이 진단(아래에서 위로 — 한 층씩 확인):
| 층 | 명령 | 확인 |
|---|---|---|
| [0] 하드웨어 | lspci | grep -i nvidia | GPU 인식? |
| [1] 드라이버 | nvidia-smi | 드라이버·커널 모듈 동작? |
| dmesg | grep -i nvidia | 로드 실패 원인? | |
| [2] 컨테이너 | docker run --gpus all <img> nvidia-smi | Container Toolkit? |
| [3] CUDA RT | deviceQuery (Result=PASS·sm_XX) | CUDA 런타임·CC? |
| [4] 라이브러리 | cuDNN/NCCL 짝·nccl-tests | 라이브러리·통신? |
| [5] 프레임워크 | torch.cuda.is_available()·matmul | 프레임워크 GPU? |
| [6] 멀티노드 | nvidia-smi topo -m·nccl-tests | 토폴로지·분산? |
각 층이 PASS여야 위 층이 의미 있음 — 실패한 가장 낮은 층부터.
- 층층이 원칙(0.3): 위에서 헤매지 말고 가장 낮은 실패 층부터 — 하드웨어(0)→드라이버(1)→컨테이너(2)→CUDA 런타임(3)→라이브러리(4)→프레임워크(5)→멀티노드(6). 낮은 층이 깨지면 위는 무의미.
- 증상→층 매핑(0.3.5 확장):
nvidia-smi안 됨 → [1] 드라이버. 호스트 OK·컨테이너 안 됨 → [2] Container Toolkit·--gpus.cuda.is_available()=False→ [2]/[5] CUDA↔드라이버·CPU 빌드.no kernel image→ [3]/[5] sm_XX 미스매치. 분산 느림·행 → [4]/[6] NCCL·토폴로지·네트워크. - 핵심 진단 도구:
nvidia-smi(드라이버·GPU·프로세스),dmesg(커널 로그),deviceQuery(CUDA 런타임·CC),nccl-tests(통신), DCGM(7.3 — 텔레메트리·헬스·Xid 에러), Nsight Systems/Compute(2.13·2.14 — 프로파일링, 추가 권한 필요할 수). Jetson은tegrastats/jtop(9.4). - Xid 에러(7.3):
dmesg·DCGM의 Xid 에러는 GPU 하드웨어·드라이버 문제 코드 — 코드별 의미를 문서로(ECC·throttle·falloff). 하드웨어 이상 진단.
참조: 진단은 층층이(하드웨어→드라이버→컨테이너→CUDA→라이브러리→프레임워크→멀티노드) — 가장 낮은 실패 층부터. 도구:
nvidia-smi·dmesg·deviceQuery·nccl-tests·DCGM(7.3)·Nsight(2.13·2.14)·tegrastats(9.4). 증상→층 매핑(0.3.5)으로 빠르게. Xid 에러로 하드웨어 진단.
A.1.10 흔한 함정 (셋업 특화)
- Secure Boot로 모듈 로드 실패. 서명 안 된 드라이버 모듈 거부 → MOK 서명 또는 Secure Boot 끄기(A.1.2).
- 커널 업데이트 후 드라이버 깨짐. 모듈 재빌드 안 됨 → DKMS·헤더·재빌드(A.1.2·A.1.3).
- 드라이버 버전 핀 안 함. 자동 업데이트로 분산·재현 깨짐 → 핀 고정(A.1.3·A.1.4).
- 호스트에 여러 CUDA 난립. PATH·LD_LIBRARY_PATH 혼란 → 컨테이너 우선·환경 모듈(A.1.4).
- 에어갭에 온라인 절차 적용. 인터넷 가정 명령 실패 → 사전 미러·로컬 저장소(A.1.5).
- 멀티노드 NCCL 미튜닝. 네트워크·토폴로지 안 맞아 느림/행 → NCCL 환경변수·nccl-tests(4.13·4.14·A.1.6).
- 클라우드 유휴 비용. 작업 끝나고 인스턴스 안 끔 → 중지·자동 종료(A.1.7).
- Jetson에 x86 절차. aarch64·플래싱 다름 → JetPack/L4T·SDK Manager(9.2·A.1.8).
- Forward Compat 남용. 데이터센터 GPU 한정인데 일반 환경서 시도 → 드라이버 업이 정공법(A.1.3).
- 버전을 본문·블로그에서 외움. 시점 의존 → 공식 매트릭스 대조(0.3·A.1 전체).
A.1.11 빠른 참조 — 무엇을 어디서
"무엇을 보고 결정/검증하나" 빠른 표(출처·명령):
| 질문 | 출처·명령 |
|---|---|
| 지원 OS·커널? | CUDA Toolkit 릴리스 노트(지원 OS 표) |
| 드라이버 최소 버전? | CUDA Toolkit 릴리스 노트(드라이버 표) |
| 프레임워크↔CUDA? | 프레임워크 지원 매트릭스 |
| cuDNN/NCCL/TRT 짝? | 각 Support Matrix |
| 내 GPU CC(sm_XX)? | CUDA GPUs 표·deviceQuery |
| 검증된 조합 이미지? | NGC 카탈로그(nvcr.io) |
| 드라이버 동작? | nvidia-smi·dmesg |
| CUDA 런타임·CC? | deviceQuery(Result=PASS) |
| 설치된 Toolkit? | nvcc --version (≠ nvidia-smi) |
| GPU 토폴로지? | nvidia-smi topo -m |
| 통신 검증? | nccl-tests |
| 헬스·텔레메트리? | DCGM(7.3)·Xid |
| Jetson 상태? | tegrastats·jtop(9.4) |
| 프로파일링? | Nsight Systems/Compute(2.13·2.14) |
- 이 표가 이 부록의 한 줄 요약: 셋업·진단의 핵심은 "무엇을 설치할까"가 아니라 "어디를 보고 결정/검증하나"(0.3.3) — 구체 값은 시점 의존이니 출처·명령을 기억하라.
- 출처 우선순위: ① 공식 문서(릴리스 노트·Support Matrix·NGC·JetPack)가 1차 ② 본문 해당 장(2.13·2.14·4.13·7.2·9.2·9.4 등)이 맥락 ③ 이 부록이 지도. 블로그·외운 숫자는 대조용일 뿐.
참조: 셋업·진단은 "어디를 보고 결정/검증하나"의 표로 압축된다(위) — 구체 값은 시점 의존이니 출처·명령(릴리스 노트·Support Matrix·NGC·
nvidia-smi·deviceQuery·nccl-tests·DCGM·Nsight·tegrastats)을 기억. 이것이 0.3·A.1의 핵심 — 외우지 말고 어디서 확인하나.
A.1.12 요약 · 다음 장
- 0.3(개념·기본)의 상세 레퍼런스 — 통독 아닌 작업·증상별 참조. 기본은 0.3으로 충분, 이 장은 특수·심화(데이터센터·멀티노드·에어갭·엣지).
- OS·드라이버: 지원 OS·커널·Secure Boot·nouveau(A.1.2), 드라이버 분기(최신/프로덕션/데이터센터)·설치 경로·Forward Compat(데이터센터 한정)·버전 핀(A.1.3).
- CUDA·컨테이너: 컨테이너 우선(NGC 봉인)·여러 CUDA 공존·라이브러리 짝·버전 핀(A.1.4), Container Toolkit·NGC·에어갭(미러)·AI Enterprise(7.1)(A.1.5).
- 스케일·클라우드·엣지: 멀티노드(토폴로지·NCCL·네트워킹 4.11~4.14·7.2·7.3)(A.1.6), 클라우드/DGX(쿼터·과금·재현)(A.1.7), Jetson(JetPack·플래싱)·DRIVE(9.1~9.4·8.2~8.13)(A.1.8).
- 진단: 층층이 체크리스트(하드웨어→…→멀티노드)·도구(nvidia-smi·deviceQuery·nccl-tests·DCGM·Nsight·tegrastats)(A.1.9), 빠른 참조 표(A.1.11). 정직: 모든 값 시점 의존 — 출처·명령을 기억(S-5).
다음 장(부록): A.2 용어집·약어. 이 책 전체에 나온 아키텍처·SDK·도메인 용어와 약어를 한곳에 정리한 사전 — GPC·SM·텐서코어부터 CUDA·TensorRT·NCCL·NITROS·VLA까지, 빠르게 찾아보는 레퍼런스. 본문을 읽다 모르는 용어를 여기서.