NVIDIA/gds-nvidia-fs

NVIDIA GPUDirect Storage Driver

NVIDIA gds-nvidia-fs

무엇인가요 – Linux 커널 모듈(nvidia-fs.ko)로서 NVIDIA의 GPUDirect Storage(GDS) 드라이버를 구현합니다. 지원되는 스토리지 시스템이 DMA/RDMA를 통해 GPU 메모리로 데이터를 직접 이동하거나 GPU 메모리에서 데이터를 직접 이동할 수 있게 하여, CPU와 호스트 메모리를 거치지 않도록 합니다.

왜 중요한가요 – 현대의 AI/ML 워크로드는 GPU에 고속으로 테라바이트 단위의 데이터를 공급해야 하는 경우가 많습니다. 기존 경로는 데이터를 CPU를 통해 복사하므로 대역폭 제한이 발생합니다. 이 드라이버는 제로-복사 경로를 제공하여, 학습, 추론, 데이터 집약형 분석에서 처리량을 크게 향상시키고 지연을 줄일 수 있습니다.


핵심 기능

기능 세부 사항
직접 GPU I/O NVMe/NVMe-OF, ScaleFlux 계산 스토리지, 또는 RDMA 지원 파일시스템과 GPU 메모리 간에 호스트 RAM에 일시 저장하지 않고 데이터를 이동 가능.
지원되는 스토리지 백엔드 • NVMe/NVMe-OF/ScaleFlux CSD 위의 XFS 및 EXT4 (순서 모드)
• RDMA를 통한 NFS (MOFED ≥ 5.1)
• 분산 RDMA 파일시스템: DDN Exascaler, WekaFS, VAST
하드웨어 요구사항 NVIDIA Tesla 또는 Quadro GPU (Pascal 세대 이상), 호환 가능한 NVMe 또는 분산 스토리지, Linux 커널 ≥ 4.15, MOFED ≥ 5.1, CUDA ≥ 10.0, 드라이버 ≥ 418.40
커널 통합 로드 가능한 커널 모듈(nvidia-fs.ko)로 빌드됨.
문서 공식 GDS 문서: https://docs.nvidia.com/gpudirect-storage/index.html

일반적인 사용 사례 워크플로우

  1. 환경 준비 – 지원되는 NVIDIA GPU, 적절한 스토리지(예: NVMe SSD 또는 RDMA 지원 파일시스템), 그리고 필요한 소프트웨어 스택(Linux 커널, MOFED, CUDA 툴킷, NVIDIA 드라이버) 설치.
  2. 드라이버 빌드
    cd src
    export CONFIG_MOFED_VERSION=$(ofed_info -s | cut -d '-' -f 2)
    sudo make
    
  3. 모듈 로드
    sudo insmod nvidia-fs.ko
    
  4. **CUDA 애플리케이션 또는 RAPIDS, PyTorch-Dataloader, TensorFlow 등의 라이브러리에서 cufile API를 사용하여 지원되는 스토리지의 파일을 열고 GPU 버퍼에 직접 읽기/쓰기.
  5. 혜택 – 더 높은 실제 I/O 대역폭과 낮은 CPU 오버헤드로, 대규모 모델 학습 또는 추론에 대한 데이터 파이프라인 처리량이 향상됨.

시작하기

# 리포지토리 클론 (예시 URL)
git clone https://github.com/NVIDIA/gds-nvidia-fs.git
cd gds-nvidia-fs/src

# 호스트에서 감지된 MOFED 버전을 내보내기
export CONFIG_MOFED_VERSION=$(ofed_info -s | cut -d '-' -f 2)

# 커널 모듈 빌드 및 설치
sudo make
sudo insmod nvidia-fs.ko

로드 후 드라이버는 커널에 등록되어 NVIDIA GPUDirect Storage(cufile) 라이브러리를 호출하는 애플리케이션에서 사용 가능해집니다.


누구에게 적합한가요

  • 대규모 모델 학습을 위한 고성능 데이터 파이프라인을 구축하는 AI/ML 엔지니어.
  • CPU 측 I/O 버블넥을 줄여 GPU 활용도를 극대화하고자 하는 데이터센터 운영자.
  • 스토리지 인식 GPU 컴퓨팅, 계산 스토리지, RDMA 기반 시스템을 연구하는 연구자.

제한 사항 및 참고 사항

  • 드라이버는 Linux 커널 4.15 이상에서만 작동하며, RDMA 지원을 위해 MOFED(Mellanox OFED) 스택이 필요합니다.
  • XFS/EXT4는 순서 모드에서 마운트되어야 하며, 다른 마운트 옵션은 지원되지 않습니다.
  • 저수준 커널 구성 요소이므로 일반적으로 사용자는 상위 레벨 라이브러리(예: NVIDIA의 cufile API)를 통해 상호작용합니다.

요약 – nvidia-fs는 NVIDIA GPUDirect Storage를 가능하게 하는 커널 레벨 구성 요소로, 현대의 스토리지 시스템에서 GPU 메모리로 초고속, 제로-복사로 데이터를 이동할 수 있게 하여, 차세대 AI 워크로드의 핵심 구성 요소입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트