GPU 구성
LabPod는 세 가지 GPU 할당 모드를 지원합니다. 관리자 Resources 페이지 → GPU 정책에서 물리적 GPU별로 모드를 구성합니다.
전체 GPU (Container Device Interface, CDI)
섹션 제목: “전체 GPU (Container Device Interface, CDI)”GPU를 요청하는 워크스페이스는 물리적 GPU 하나를 통째로 받습니다. 공유하지 않으며 GPU 하나당 한 번에 워크스페이스 하나만 사용합니다.
사전 요구사항:
- 동작하는 NVIDIA 드라이버가 설치되어 있고
nvidia-smi가 동작함. nvidia-container-toolkit설치됨 (설치 스크립트가 처리합니다)./etc/cdi/nvidia.yaml에 Container Device Interface(CDI) 스펙 존재 (스크립트가nvidia-ctk cdi generate로 생성합니다).
관리자 정책: Resources 페이지에서 GPU 정책을 whole로 설정하거나 auto로 두세요 (관리자 제약 없이
전체/분할/MIG 중 무엇을 쓸지 연구자가 워크스페이스를 만들 때 직접 고릅니다).
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 드라이버와 nvidia-smi가 필요합니다.
관리자 정책: Resources 페이지에서 대상 GPU의 GPU 정책을 **분할 (Fractional)**로 설정합니다.
사용자 워크스페이스 생성: 사용자가 GPU 모드 = 분할 GPU를 선택한 후 필요한 메모리 (MB)와 컴퓨팅 비율을 설정합니다. 서버는 해당 GPU에서 실행 중인 모든 워크스페이스의 합계가 물리적 한계를 넘지 않는지 확인합니다.
확인:
sudo labpod admin doctor# 다음을 확인: GPU sharing: ok (path=...) (또는 "disabled (...)" / "error: ..." 형태로 상세 내용 표시)# Run these as rootlabpod admin doctor# 다음을 확인: GPU sharing: ok (path=...) (또는 "disabled (...)" / "error: ..." 형태로 상세 내용 표시)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는 시작할 때와 요청할 때 슬라이스를 읽습니다. 추가 변수는 필요하지 않습니다.
NVIDIA 도구가 설치되어 있으면 LabPod이 nvidia-smi -L로 MIG 인벤토리를 자동으로 읽습니다.
새 설치에는 별도의 인벤토리 소스 설정이 필요하지 않습니다.
추적되지 않은 GPU 사용량 표시기
섹션 제목: “추적되지 않은 GPU 사용량 표시기”nvidia-smi가 LabPod 워크스페이스에 속하지 않는 GPU 컴퓨팅 프로세스를 감지하면 관리자 Resources 페이지가 경고를 표시합니다. 보통 누군가가 컨테이너 밖에서 호스트에 직접 훈련을 돌리거나, 워크스페이스가 삭제된 뒤에도 프로세스가 남아 있는 경우입니다.
NVIDIA 도구가 설치되어 있으면 LabPod이 이 검사를 자동으로 켭니다. 새 설치에는 이를 켜는 별도 설정이 필요하지 않습니다.
승인 시 우회 (권장하지 않음):
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는 다음을 확인합니다:
- 분할 GPU 공유 라이브러리를 읽을 수 있는지 (
LABPOD_GPU_SHARING_LIB_PATH가 설정된 경우). - GPU 프로세스 인스펙터 (
nvidia-smi)가 열거된 GPU UUID마다 도달 가능한지.
워크스테이션 전체를 사전 점검하려면 설치 스크립트의 --check 모드를 사용하세요.
GPU 인벤토리
섹션 제목: “GPU 인벤토리”NVIDIA 도구가 설치되어 있으면 LabPod이 nvidia-smi로 GPU를 자동으로 열거합니다. CPU 전용
호스트에서는 빈 GPU 인벤토리를 사용하므로 새 설치는 어느 경우에도 따로 설정할 필요가 없습니다.