GPU 구성
LabPod는 세 가지 GPU 할당 모드를 지원합니다. 관리자 Resources 페이지 → GPU 정책에서 물리적 GPU별로 각 모드를 구성합니다.
전체 GPU (Container Device Interface, CDI)
섹션 제목: “전체 GPU (Container Device Interface, CDI)”GPU를 요청하는 각 워크스페이스는 하나의 완전한 물리적 GPU를 받습니다. 공유는 없으며, 한 번에 GPU당 하나의 워크스페이스만 사용합니다.
사전 요구사항:
- NVIDIA 드라이버 535.54.03 이상이 설치되어 있고
nvidia-smi가 동작함. nvidia-container-toolkit설치됨 (설치 스크립트가 처리합니다)./etc/cdi/nvidia.yaml에 Container Device Interface(CDI) 스펙 존재 (스크립트가nvidia-ctk cdi generate를 통해 생성합니다).
관리자 정책: Resources 페이지에서 GPU 정책을 whole로 설정하거나 auto로 두세요 (기본적으로 전체 GPU 요청을 허용합니다).
GPU 모드 = 전체 GPU로 워크스페이스를 시작하면, LabPod가 Podman에 --device nvidia.com/gpu=<index>를 전달합니다. 워크스페이스는 전체 GPU를 봅니다.
분할 GPU 공유
섹션 제목: “분할 GPU 공유”여러 워크스페이스가 하나의 물리적 GPU를 동시에 공유합니다. 각 워크스페이스는 필요한 GPU 메모리와 컴퓨팅 양을 선언합니다. 서버는 할당량을 추적해 물리적 GPU 용량을 넘기는 새 워크스페이스는 거부합니다.
사전 요구사항:
분할 GPU는 기본 OFF이며, 기본 설치는 공유 라이브러리를 빌드하지 않습니다. 호스트에 GPU 공유 런타임 라이브러리 (libvgpu.so)가 있어야 합니다. 권장 방법은 공개 설치 스크립트로, Podman 컨테이너 안에서 HAMi-core를 빌드하고(호스트 빌드 도구 불필요) LABPOD_GPU_SHARING_LIB_PATH를 자동으로 설정합니다:
curl -fsSL https://labpod.ai/install.sh | sudo bash -s -- --with-hami# Run these as rootcurl -fsSL https://labpod.ai/install.sh | bash -s -- --with-hami빌드는 ~3.3 GB CUDA 이미지를 내려받습니다. 일회성 빌드타임 비용이며, 이후 podman image rm으로 회수할 수 있습니다.
직접 빌드했거나 외부에서 받은 라이브러리를 쓰려면 LabPod가 이를 찾도록 직접 지정하세요:
# /etc/labpod/labpod.env에서:LABPOD_GPU_SHARING_LIB_PATH=/path/to/libvgpu.so이 변수가 설정되어 있는데 파일이 없으면 서버가 시작을 거부합니다.
LabPod GPU 호스트에는 NVIDIA 드라이버 535.54.03 이상이 필요합니다.
관리자 정책: Resources 페이지에서 대상 GPU의 GPU 정책을 **분할 (Fractional)**로 설정합니다.
사용자 워크스페이스 생성: 사용자가 GPU 모드 = 분할 GPU를 선택한 후 필요한 메모리 (MB)와 컴퓨팅 비율을 설정합니다. 서버는 해당 GPU에서 실행 중인 모든 워크스페이스의 합계가 물리적 한계 내에 있는지 확인합니다.
확인:
sudo labpod admin doctor# 다음을 확인: GPU sharing runtime: OK (또는 경로와 함께 "not found" 오류)# Run these as rootlabpod admin doctor# 다음을 확인: GPU sharing runtime: OK (또는 경로와 함께 "not found" 오류)MIG 슬라이스 (A100/H100)
섹션 제목: “MIG 슬라이스 (A100/H100)”NVIDIA Multi-Instance GPU (MIG)는 하드웨어 수준에서 물리적 GPU를 독립적인 슬라이스로 분할합니다. LabPod는 현재 슬라이스 인벤토리를 읽어 워크스페이스당 하나의 슬라이스를 할당합니다.
사전 요구사항:
- NVIDIA A100, H100, H200 또는 유사한 MIG 지원 GPU.
- 운영자가
nvidia-smi를 사용하여 MIG 모드를 활성화하고 슬라이스를 사전 구성함:
# 예시: GPU 0에서 MIG 모드 활성화 및 슬라이스 생성sudo nvidia-smi -i 0 -mig 1sudo nvidia-smi mig -i 0 -cgi 1g.10gb,1g.10gb,2g.20gb -C# Run these as root# 예시: GPU 0에서 MIG 모드 활성화 및 슬라이스 생성nvidia-smi -i 0 -mig 1nvidia-smi mig -i 0 -cgi 1g.10gb,1g.10gb,2g.20gb -C관리자 정책: 대상 GPU의 GPU 정책을 mig로 설정합니다. LabPod는 시작할 때와 요청할 때 슬라이스를 읽습니다. 추가 변수는 필요하지 않습니다.
MIG 인벤토리 소스 (선택적 재정의):
# /etc/labpod/labpod.env에서:LABPOD_MIG_INVENTORY=nvidia-smi # 기본값: nvidia-smi -L을 파싱하여 MIG 슬라이스 열거LABPOD_MIG_INVENTORY=none # 이 호스트에 MIG 없음추적되지 않은 GPU 사용량 표시기
섹션 제목: “추적되지 않은 GPU 사용량 표시기”관리자 Resources 페이지는 nvidia-smi가 LabPod 워크스페이스에 속하지 않는 GPU 컴퓨팅 프로세스를 감지하면 경고를 표시합니다. 보통 누군가가 컨테이너 밖에서 호스트에 직접 훈련을 돌리거나, 워크스페이스가 삭제된 뒤에도 프로세스가 남아 있는 경우입니다.
GPU 프로세스 인스펙터:
# /etc/labpod/labpod.env에서:LABPOD_GPU_PROCESS_INSPECTOR=nvidia-smi # 기본값LABPOD_GPU_PROCESS_INSPECTOR=none # 검사 비활성화승인 시 우회 (권장하지 않음):
LABPOD_ALLOW_GPU_DRIFT=1 # 새 워크스페이스에 대한 추적되지 않은 사용량 게이트 건너뜀점유된 GPU 해제 방법:
nvidia-smi --query-compute-apps=pid,process_name,gpu_uuid --format=csvsudo kill -TERM <pid># 30초 후에도 살아 있으면:sudo kill -KILL <pid># Run these as rootnvidia-smi --query-compute-apps=pid,process_name,gpu_uuid --format=csvkill -TERM <pid># 30초 후에도 살아 있으면:kill -KILL <pid>GPU 구성 확인
섹션 제목: “GPU 구성 확인”sudo labpod admin doctor# Run these as rootlabpod admin doctordoctor가 확인하는 것:
- CDI 스펙이
/etc/cdi/nvidia.yaml에 존재하는지 (전체 GPU 모드). - 분할 GPU 공유 라이브러리를 읽을 수 있는지 (
LABPOD_GPU_SHARING_LIB_PATH가 설정된 경우). - GPU 프로세스 인스펙터 (
nvidia-smi)가 열거된 각 GPU UUID에 대해 도달 가능한지.
전체 워크스테이션 사전 점검을 위해 설치 스크립트의 --check 모드를 사용하세요.
GPU 인벤토리 소스
섹션 제목: “GPU 인벤토리 소스”# /etc/labpod/labpod.env에서:LABPOD_GPU_INVENTORY=nvidia-smi # 기본값: nvidia-smi를 통해 GPU 열거LABPOD_GPU_INVENTORY=none # 드라이버 없는 호스트에서는 GPU 워크스페이스 없음nvidia-smi 호출을 건너뛰고 Resources 페이지에서 불필요한 오류를 억제하려면 CPU 전용 워크스테이션에서 none을 사용하세요.