AIR-030에서 LLM 추론(Inference) 환경 구축하기

Jetson에서 컨테이너를 이용한 AI 애플리케이션 패키징: JetPack 의존성 및 배포 문제 해결하기

NVIDIA는 JetPack 6.x (6.0 / 6.2) 버전부터 Ubuntu 22.04 기반의 환경(L4T 36.x 시리즈)을 공식 채택했습니다. 이는 개발자들에게 매우 반가운 업그레이드이지만, AI 애플리케이션의 의존성이 JetPack의 마이너 버전마다 각각 나뉘어 있다는 숙제는 여전히 남아 있습니다.

본 가이드에서는 Docker 컨테이너 기술을 활용하여 JetPack 6.0 및 6.2 환경에서 AI 모델과 애플리케이션을 빠르고 안정적으로, 그리고 버전 제약 없이 배포하는 방법을 소개합니다.


1. JetPack 6.x의 의존성 문제

JetPack 6.0과 6.2는 다음과 같은 차이가 있습니다.

JetPack 버전 L4T 버전 Ubuntu 주요 라이브러리
6.0 36.3.0 22.04 CUDA 12.2, TensorRT 8.6
6.2 36.4.3 22.04 CUDA 12.6, TensorRT 10.3

두 버전 모두 Ubuntu 22.04를 기반으로 하지만, GPU 드라이버, CUDA 툴킷, TensorRT 엔진 버전이 서로 다릅니다. 이로 인해 다음과 같은 문제가 발생할 수 있습니다.

  • JetPack 6.0에서 컴파일된 TensorRT 엔진이 6.2에서 정상 작동하지 않을 수 있음

  • PyTorch GPU 버전이 특정 CUDA 및 드라이버 버전과 일치해야 하므로 크로스 버전 배포 시 오류 발생 가능성 높음

  • 여러 대의 장치에 동일한 추론 애플리케이션을 일관되게 배포하기 어려움


2. 컨테이너화(Containerization)의 장점

JetPack 의존성 분리

Docker 컨테이너를 사용하여 AI 런타임 환경(CUDA, cuDNN, TensorRT, PyTorch 등 포함)을 패키징하면, 모든 의존성 버전을 컨테이너 내부에 고정할 수 있습니다. 이를 통해 하위 JetPack 버전의 제약에서 벗어날 수 있습니다.

  • 호환성: 동일한 컨테이너를 JetPack 6.0과 6.2 환경 모두에서 실행할 수 있습니다.

  • 유지보수: NVIDIA 공식 L4T 컨테이너 베이스 이미지(예: dustynv/pytorch:2.1-r36.2.0)를 사용하면 L4T 36.2 버전과의 호환성이 보장됩니다. 향후 JetPack이 업그레이드되더라도 GPU 드라이버가 호환되는 한 기존 배포 환경을 그대로 유지할 수 있습니다.


3. 구축 방법 (How To)

Docker 런타임 설정

컨테이너 내부에서 GPU를 사용하려면(예: 빌드 과정에서 NVCC 컴파일러 사용 등), 기본 Docker 런타임을 nvidia로 설정하는 것이 권장됩니다.

1단계 : nvidia-container 설치 및 Docker 설정

sudo apt update
sudo apt install -y nvidia-container curl
curl https://get.docker.com | sh && sudo systemctl --now enable docker
sudo nvidia-ctk runtime configure --runtime=docker

2단계 : 서비스 재시작 및 사용자 권한 부여

sudo systemctl restart docker
sudo usermod -aG docker $USER
newgrp docker

3단계 : Docker 설정 파일 수정 /etc/docker/daemon.json 파일을 생성하거나 열어 다음 내용을 추가합니다.

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "default-runtime": "nvidia"
}

4단계 : Docker 재시작

sudo systemctl restart docker


4. Jetson Orin용 CUDA 컨테이너 활용

NVIDIA는 Jetson 환경을 위한 최적화된 컨테이너를 제공합니다. Jetson-containers 도구를 설치하여 관리 효율을 높입니다.

cd $HOME
git clone https://github.com/dusty-nv/jetson-containers
bash jetson-containers/install.sh


5. 생성형 AI 예시: Ollama 추론 실행

최신 LLM 모델인 Gemma 3를 AIR-030에서 실행하는 방법입니다.

  1. Docker 이미지 다운로드
docker pull dustynv/ollama:0.6.8-r36.4

  1. 컨테이너 실행
jetson-containers run dustynv/ollama:0.6.8-r36.4

  1. Gemma 3 모델로 Ollama 실행
ollama run gemma3


[!TIP] 성능 최적화 팁: AIR-030(Jetson Orin)에서 대규모 모델을 돌릴 때는 메모리 부족 현상을 방지하기 위해 사용하지 않는 GUI 서비스를 끄거나 Swap 메모리를 충분히 확보하는 것이 좋습니다.

이 가이드와 관련하여 특정 AI 모델의 TensorRT 최적화 방법이 궁금하신가요? 요청하시면 추가 정보를 안내해 드릴 수 있습니다.