NGC(NVIDIA GPU Cloud)는 심층 학습 및 과학적 계산에 최적화된 GPU 가속 클라우드 플랫폼입니다. AI 및 ML 워크플로의 성능을 향상하기 위해 NGC에서 실행 중인 vSphere Bitfusion 클라이언트에 PVRDMA 어댑터를 추가할 수 있습니다.

NGC용 AI 및 ML 이미지에는 RDMA 지원을 위한 MOFED(Mellanox Open Fabrics Enterprise Distribution) 패키지가 포함되어 있습니다. PVRDMA에서 지원되는 오픈 소스 rdma-core 패키지는 이러한 이미지에 포함되지 않으며 두 가지 유형의 패키지가 동일한 컨테이너에 공존할 수 없습니다. NGC 컨테이너에서 PVRDMA를 사용하도록 설정하려면 MOFED 라이브러리를 삭제하고 오픈 소스 rdma-core 패키지를 설치해야 합니다.

이 절차에 따라 컨테이너로 실행할 수 있는 이미지를 구축할 수 있는 Dockerfile을 생성할 수 있습니다. Dockerfile 예제는 Ubuntu Linux 배포 및 Ubuntu 배포용 오픈 소스 rdma-core 패키지를 포함하는 TensorRT용 NVIDIA 컨테이너 이미지를 기반으로 하는 이미지를 생성합니다.

사전 요구 사항

  • vSphere 환경에 PVRDMA 분산 네트워크가 구성되어 있는지 확인합니다. 자세한 내용은 "vSphere 네트워킹" 설명서를 참조하십시오.
  • PVRDMA를 사용하도록 vSphere Bitfusion 서버를 구성했는지 확인합니다. PVRDMA를 사용하도록 vSphere Bitfusion 서버를 구성하는 방법의 내용을 참조하십시오.
  • Docker가 설치되어 있는지 확인합니다.

프로시저

  1. UBUNTU_CODENAME을 가져오고 NVIDIA 컨테이너 이미지에서 MOFED deb 패키지를 찾습니다.
    NVIDIA 컨테이너 이미지를 Dockerfile의 기본 이미지로 사용합니다.
    1. Docker에서 sudo docker run -it --rm -u root --ipc=host --privileged --net=host --cap-add=IPC_LOCK --pid=host NGC_Containter 명령을 실행하여 NGC 컨테이너를 시작합니다. 여기서 NGC_Containter는 TensorRT에 대한 NVIDIA 컨테이너 이미지의 URL의 이름입니다. 예를 들면 nvcr.io/nvidia/tensorrt:20.12-py3입니다.
    2. NGC 컨테이너에서 cat /etc/os-release 명령을 실행하여 UBUNTU_CODENAME을 가져옵니다.
      예를 들어 Ubuntu 20.04의 UBUNTU_CODENAMEfocal입니다.
    3. ls -l /opt/mellanox/DEBS/* 명령을 실행하여 /opt/melanox/DEBS/ 폴더의 컨텐츠를 나열합니다.
    4. 표시된 파일 목록에서 MOFED deb 패키지를 찾습니다.
      예를 들어 ibverbs-providers_51mlnx1-1.51246_amd64.deb, ibverbs-utils_51mlnx1-1.51246_amd64.deb, libibverbs-dev_51mlnx1-1.51246_amd64.deblibibverbs1_51mlnx1-1.51246_amd64.deb는 MOFED deb 패키지입니다.
      참고: NGC 컨테이너마다 다른 MOFED 패키지가 포함되어 있거나 MOFED 패키지가 전혀 없을 수 있습니다.
  2. Dockerfile을 생성합니다.
    예: FROM nvcr.io/nvidia/tensorrt:20.12-py3
    1. MOFED deb 패키지를 제거합니다.
      예를 들어 RUN apt-get purge -y ibverbs-providers ibverbs-utils libibverbs-dev libibverbs1 명령을 추가합니다.
    2. Ubuntu용 rdma-core 패키지를 설치합니다.
      예를 들어 RUN apt-get update && apt-get install -y --reinstall -t focal rdma-core libibverbs1 ibverbs-providers infiniband-diags ibverbs-utils perftest 명령을 추가합니다. 여기서 focal은 Ubuntu 20.04 배포의 이름입니다.
    3. NVIDIA TensorRT 샘플 프로젝트를 빌드합니다.
      예를 들어 WORKDIR /workspace/tensorrt/samples 명령을 추가합니다.
    4. NVIDIA TersorRT에 필요한 Python 종속성을 설치합니다.
      예를 들어 RUN /opt/tensorrt/python/python_setup.sh 명령을 추가합니다.
    5. MNIST 데이터 집합을 설치합니다.
      예를 들어 다음 명령을 추가합니다.
      WORKDIR /workspace/tensorrt/data/mnist
      RUN python download_pgms.py
    6. Ubuntu용 vSphere Bitfusion 클라이언트를 설치합니다.
      예를 들어 다음 명령을 추가합니다.
      WORKDIR /workspace
      RUN wget https://packages.vmware.com/bitfusion/ubuntu/20.04/bitfusion-client-ubuntu2004_3.0.1-4_amd64.deb
      RUN apt-get update && DEBIAN_FRONTEND=noninteractive TZ=America/Los_Angeles apt-get install -y ./bitfusion-client-ubuntu2004_3.0.1-4_amd64.deb
    이는 전체 Dockerfile의 예제입니다.
    FROM nvcr.io/nvidia/tensorrt:20.12-py3
    
    RUN apt-get purge -y ibverbs-providers ibverbs-utils libibverbs-dev libibverbs1
    
    RUN apt-get update && apt-get install -y --reinstall -t focal rdma-core libibverbs1 ibverbs-providers infiniband-diags ibverbs-utils libcapstone3 perftest
    
    WORKDIR /workspace/tensorrt/samples
    RUN make -j4
    
    RUN /opt/tensorrt/python/python_setup.sh
    
    WORKDIR /workspace/tensorrt/data/mnist
    RUN python download_pgms.py
    
    WORKDIR /workspace
    RUN wget https://packages.vmware.com/bitfusion/ubuntu/20.04/bitfusion-client-ubuntu2004_3.0.1-4_amd64.deb
    RUN apt-get update && DEBIAN_FRONTEND=noninteractive TZ=America/Los_Angeles apt-get install -y ./bitfusion-client-ubuntu2004_3.0.1-4_amd64.deb
  3. Docker를 사용하여 Dockerfile에서 이미지를 구축합니다.
    예를 들어 sudo docker build -t Dockerimage_name 명령을 실행합니다. 여기서 Dockerimage_name은 새 이미지의 이름입니다.
  4. vSphere Bitfusion 클라이언트를 활성화합니다.
    의 내용을 참조하십시오.
  5. (선택 사항) Docker 파일을 실행하고 PVRDMA 어댑터가 구성된 vSphere Bitfusion 서버를 대상으로 지정합니다.
    예를 들어 다음 명령을 실행합니다. 여기서 Dockerimage_name은 새 이미지의 이름이고 BF_Server_IPvSphere Bitfusion 서버의 IP 주소입니다.
    sudo docker run -it --rm -u root --ipc=host --privileged --net=host --cap-add=IPC_LOCK --pid=host Dockerimage_name
    cd /workspace/tensorrt/bin
    bitfusion run -n 1 -l BF_Server_IP -- ./sample_mnist

결과

데이터 트래픽에 대해 PVRDMA를 사용하도록 설정한 vSphere Bitfusion 클라이언트가 포함된 NGC 컨테이너 이미지를 생성했습니다.

다음에 수행할 작업

vSphere Bitfusion에서 PVRDMA 네트워크 연결을 테스트하는 방법