DevOps

Windows WSL에서 Podman + Ollama 챗봇 완성하기 (NVIDIA GPU)

IT오이시이 2026. 4. 24. 15:37
728x90

 

Windows WSL에서 Podman + Ollama 챗봇 완성하기 ( 노트북 NVIDIA GPU)

2026년 4월 24일  | AI/ML, 컨테이너, 시스템 관리


 

Windows 노트북에서 Ollama + WebUI를 이용하여 챗봇을 구성했는데 GPU가 NVIDIA 를 사용하지 않아서 작성을 했습니다.

 

🖥️ 왜 이 설정이 중요한가?

Windows에서 로컬 LLM을 돌리려면 GPU 가속이 필수입니다. Docker는 편리하지만 rootless 보안과 Podman의 가벼운 특성을 활용하고 싶다면 WSL + Podman machine + NVIDIA GPU 조합이 최적입니다.

이번 글에서는 실제 동작하는 환경podman-machine-default(Fedora 43)에서 RTX 4070 GPU를 Ollama와 Open WebUI에 연결하는 단계별 절차를 정리합니다.

핵심: podman machine ssh로 들어간 VM에서 GPU가 먼저 확인되어야 컨테이너도 GPU를 쓸 수 있습니다.


🏗️ 1. 전체 구조 이해하기

핵심 작동 원리:

  1. WSL2 기반 Podman Machine 구성
    - Windows WSL에서 GPU를 사용가능해야함
  2. NVIDIA Container Toolkit 설치 및 GPU 확인
    -
    CDI(nvidia-ctk)로 GPU 장치를 정의해야 함
    - Podman machine(Fedora 43 VM) 내부에서 nvidia-smi가 동작해야 함
  3. Ollama Docker 실행
    - 컨테이너 실행 시 --device nvidia.com/gpu=all 명시해야 함
    - rootless 권한(--group-add keep-groups) 맞춰야 함
  4. WebUI 연동으로 챗봇 구현
  5. Trouble Shooting (RTX 4070 GPU 정상 작동 확인)
Windows (NVIDIA Driver) 
    ↓
WSL2 / Podman Machine (Fedora 43) 
    ↓ NVIDIA Container Toolkit + CDI
Podman Rootless Container (GPU 전달)
    ↓ --device nvidia.com/gpu=all
Ollama + Open WebUI (RTX 4070 가속)

 


🔍 2.  Windows Host 환경 

 

2.1 Windows Host에  Podman + WSL 설치 확인

 

* Windows Host에는 NVIDIA 드라이버가 정상 설치되어 있어야 합니다.
* Podman이 설치되어 있어야 합니다.

 

ㅁ  Podman desktop 을 설치하고 다음 사항을 확인 합니다.

- podman desktop의 작동 
podman system connection list
podman machine start


# * -- machine start를 하면 podman desktop의 관리 화면에 container리스트가 확인됩니다

# 머신을 재기동 하는 방법은 아래와 같습니다. 
podman machine stop
podman machine set --rootful
podman machine start


# * podman machine set --rootful 
# - 호스트와 컨테이너 간의 파일 시스템을 마운트(Volume Mount)할 때, 
#   호스트의 특정 디렉터리 권한과 컨테이너 내부 사용자의 UID/GID가 일치하지 않아
#   "Permission Denied" 오류가 발생하는 경우 사용합니다.
# - 파일 권한 오류나 GPU 접근 문제가 발생할 때 podman machine set --rootful을 사용하면 해결할 수 있습니다.
# - 다만 rootful 모드는 보안적으로 더 민감하므로, 꼭 필요한 경우에만 사용하는 것이 권장됩니다.



2.2 Windows + podman 에서  GPU 상태 확인

[Windows host]

# Windows PowerShell에서

PS C:\> nvidia-smi
nvidia-smi  -L
wsl -l -v
podman machine ls
podman machine ssh

 Windows에서  nvidia-smi or   nvidia-smi  -L

# Podman machine 내부에서 GPU 설정 확인
cat /etc/redhat-release          # Fedora release 43 (Forty Three)
nvidia-smi                       # RTX 4070이 보이는가?

 

ㅁ 다음과 같이 Container에서 GPU 설정 확인되어야 합니다.
  -  3장에서 WSL 설정 부터 차례로 진행해야 합니다.

[Windows host 에서 다음을 실행]
# Container 별로 GPU 인식을 확인합니다.
[root@WIN-EIM8HKM01Q1 ~]# podman exec -it open-webuiv2_cuda  nvidia-smi -L
GPU 0: NVIDIA GeForce RTX 4070 Laptop GPU (UUID: GPU-a6ca11e7-9c72-25bd-71ef-d74275aa310d)

[root@WIN-EIM8HKM01Q1 ~]# podman exec -it ollamav2  nvidia-smi -L
GPU 0: NVIDIA GeForce RTX 4070 Laptop GPU (UUID: GPU-a6ca11e7-9c72-25bd-71ef-d74275aa310d)

 

✅ 성공 기준: nvidia-smi에서 RTX 4070과 드라이버 정보가 표시됨

❌ 실패 시: Windows NVIDIA 드라이버 → WSL GPU 지원 → Podman machine 순서로 점검

 


⚙️ 3. WSL > Podman Machine GPU 설정

 

3.1 WSL + podman machine 에서 다음을 설치 합니다.

[ nvidia-ctk : Toolkit 구성]
* libnvidia-container: 컨테이너 내부에서 GPU 장치 노출
* nvidia-ctk: CDI 스펙 생성 및 관리
* cdi.yaml: Podman이 GPU 장치를 인식할 수 있도록 설정 파일 제공

 

3.1.1  WSL + podman machine에  NVIDIA Container Toolkit 설치

PS C:\> podman machine ssh

# podman machine ssh 내부에서 실행
sudo dnf install -y nvidia-container-toolkit

or

$ curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
 tee /etc/yum.repos.d/nvidia-container-toolkit.repo && \
 yum install -y nvidia-container-toolkit && \
 nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml && \
 nvidia-ctk cdi list

 

3.1.2  CDI 스펙 생성 (핵심!)

sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
nvidia-ctk cdi list

 

 

✅ 성공 시 출력:

# nvidia-ctk  cdi list
INFO[0000] Found 1 CDI devices
nvidia.com/gpu=all
Device nvidia.com/gpu=0
Device nvidia.com/gpu=all

 

 


🧪 3.2. Podman machine에서 container GPU 전달 테스트

가장 중요한 검증 단계입니다.

PS C:\> podman machine ssh

podman run --rm -it \
  --device nvidia.com/gpu=all \
  --group-add keep-groups \
  --security-opt=label=disable \
  ubuntu:22.04 nvidia-smi -L

✅ 성공 시: 컨테이너 내부에서 RTX 4070 확인
❌ 실패 시: CDI, 권한, SELinux 문제

PS C:\> podman machine ssh
Connecting to vm podman-machine-default. To close connection, use `~.` or `exit`
Last login: Fri Apr 24 15:31:57 2026 from ::1
[root@WIN-EIM8HKM01Q1 ~]# podman run --rm -it \
>   --device nvidia.com/gpu=all \
>   --group-add keep-groups \
>   --security-opt=label=disable \
>   ubuntu:22.04 nvidia-smi -L
GPU 0: NVIDIA GeForce RTX 4070 Laptop GPU (UUID: GPU-a6ca11e7-9c72-25bd-71ef-d74275aa310d)

 


🚀 4. Ollama + WebUI 완전 구성

4.1 Podman Compose 파일

version: "3.1"

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollamav2
    restart: unless-stopped
    devices:
      - nvidia.com/gpu=all
    volumes:
      - ollama:/root/.ollama
    environment:
      - OLLAMA_HOST=0.0.0.0
      - NVIDIA_VISIBLE_DEVICES=all
      - NVIDIA_DRIVER_CAPABILITIES=compute,utility
    ports:
      - "11434:11434"
    networks:
      - backend
    healthcheck:
      test: ["CMD-SHELL", "ollama list || exit 1"]
      interval: 600s
      retries: 5

  open-webui:
    image: ghcr.io/open-webui/open-webui:cuda
    container_name: open-webuiv2
    restart: unless-stopped
    devices:
      - nvidia.com/gpu=all
    ports:
      - "${WEBUI_PORT:-3000}:8080"
    volumes:
      - open-webui:/app/backend/data
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    depends_on:
      ollama:
        condition: service_healthy
    networks:
      - backend

networks:
  backend:
    driver: bridge

volumes:
  ollama:
  open-webui:

5.2 실행

# podman machine ssh 내부에서
podman-compose up -d

# 모델 다운로드 (작은 모델부터!)
podman exec ollamav2 ollama pull llama3.2:3b

5.3 접속

http://localhost:3000 → Open WebUI
Ollama API → http://localhost:11434

✅ 6. GPU 실제 사용 확인

6.1 실시간 모니터링

# 터미널 1: GPU 사용량 확인
watch -n 1 nvidia-smi

# 터미널 2: Ollama 로그
podman logs -f ollamav2

6.2 성공 기준

✅ WebUI에서 llama3.2 모델 선택
✅ 채팅 응답이 CPU보다 5~10배 빠름  
✅ nvidia-smi에서 VRAM 사용량 증가
✅ Ollama 로그에 GPU 관련 메시지

 

아래와 같이  Nvidia GPU 를 사용하고 있습니다. (아주 작게 보이지만 실행됩니다.)


🔧 7. 트러블슈팅 체크리스트

문제 원인 해결책
VM에서 nvidia-smi 실패 Windows 드라이버 문제 NVIDIA Studio Driver 최신화
컨테이너에서만 실패 CDI 미생성 nvidia-ctk cdi generate
권한 오류 (NVML) rootless 문제 --group-add keep-groups
SELinux 차단 보안 정책 --security-opt=label=disable
WebUI 연결 실패 네트워크 OLLAMA_BASE_URL 확인

⚠️ 주의사항 박스

🚨 RTX 4070 노트북 VRAM 제한 (8GB)
- 처음엔 3B~7B 모델만 사용
- llama3.2:3b, phi3:mini 권장
- 70B 모델은 OOM 발생 확률 높음

🚨 Podman Machine 재시작 시
- CDI 파일 (/etc/cdi/nvidia.yaml) 유지 확인
- `nvidia-ctk cdi generate` 재실행

🚨 Windows 재부팅 후
- `podman machine start`
- GPU 테스트 컨테이너로 검증

🎯 8. 마무리 - 완성된 로컬 챗봇

이제 Windows WSL → Podman machine(Fedora 43) → Ollama + WebUI로 완전한 GPU 가속 챗봇 환경이 구축되었습니다.

💡 핵심 성공 요인
1. podman machine 내부 GPU 확인
2. CDI 스펙 정확 생성  
3. rootless 권한 조정
4. 작은 모델부터 검증

실행 시간: 약 30분
비용: 0원 (로컬 GPU 활용)
데이터 유출: 없음 (완전 오프라인)


📌 참고 자료


질문 있으시면 댓글로!
현재 환경에서 막히는 부분이 있다면 정확한 에러 메시지와 함께 알려주세요. 단계별로 해결해드리겠습니다! 🚀

 

 

(참고 : 다른 설치 메뉴얼을 참고 바랍니다.)

[InfraPlatform] - 윈도우에서 Podman 설치 및 활용하기

[DevOps] - Windows WSL에서 Podman + Ollama 챗봇 완성하기 (NVIDIA GPU)

[InfraPlatform] - 🚀 Windows WSL + Podman Desktop 로 Ollama + Open WebUI GPU 챗봇 구축하기 (RTX 4070 노트북)

 

728x90
반응형