연습 - NVIDIA DeepStream Graph Composer 애플리케이션을 컨테이너화된 워크로드에 패키지
NVIDIA DeepStream Graph Composer가 IVA 애플리케이션 개발에 어떻게 도움이 될 수 있는지 살펴보았습니다. 이제 추가 도구가 이러한 애플리케이션을 데이터 센터 및 에지 환경에 배포하는 데 어떻게 도움이 되는지 살펴보겠습니다.
컨테이너화는 개발 및 테스트 중에 많은 이점도 제공합니다. 다음은 이러한 템플릿의 예입니다.
- 동종 하드웨어에서 워크로드를 실행할 때 동작의 일관성이 있습니다.
- 파일 시스템 계층화로 인한 증분 업데이트 덕분에 배포 시간을 줄일 수 있습니다.
- 자체 문서화 특성으로 인해 종속성에 대한 문서화가 명확합니다.
이러한 이점을 얻으려면 container-builder 도구를 사용하여 이전 예제를 컨테이너로 패키지합니다.
시작하기 전에 NGC(NVIDIA GPU Containers) 서비스에서 계정을 설정해야 합니다. 이 서비스는 GPU 가속 컨테이너를 배포하기 위한 NVIDIA의 공식 리포지토리입니다. 워크로드를 사용하려면 컨테이너화된 워크로드에서 사용할 DeepStream 기본 컨테이너를 끌어오기 위해 이 리포지토리에 대한 액세스 권한이 필요합니다. 계정을 만들거나 기존 계정으로 로그인하려면 NVIDIA NGC 로그인 페이지를 참조하세요.
NVIDIA NGC 로그인 페이지로 이동하여 로그인하거나 새 계정을 만듭니다. NVIDIA NGC에 로그인한 후 오른쪽 위 모서리에서 사용자 이름을 선택하고 설정을 선택합니다. 다음 옵션이 표시됩니다.
API 키 가져오기를 선택합니다. 표시되는 화면에서 오른쪽 위에서 API 키 생성을 선택합니다. 그런 다음, 결과 프롬프트에서 확인을 선택합니다.
호스트 컴퓨터의 터미널에서 다음 명령을 실행하여 Docker 런타임에 자격 증명을 제공합니다.
sudo docker login nvcr.io
사용자 이름을 입력하라는 메시지가 표시되면 $oauthtoken을 표시된 대로 정확히 입력합니다. 암호를 입력하라는 메시지가 표시되면 생성된 API 키 값을 입력합니다. "로그인 성공"이라는 메시지가 표시됩니다.
이제 nvcr.io에 액세스할 수 있으므로 NVIDIA NGC를 통해 제공되는 기본 이미지를 사용하는 컨테이너를 빌드할 수 있습니다. container-builder 도구는 구성 파일을 제공하여 이미지를 빌드할 수 있습니다. 참조 그래프 패키지에 제공된 예제 중 하나를 사용합니다.
container-builder를 호출하여 deepstream-test1 애플리케이션을 패키지하려면 호스트 컴퓨터에서 다음 명령을 실행합니다.
cd /opt/nvidia/deepstream/deepstream-6.0/reference_graphs/deepstream-test1 sudo container_builder -c ds_test1_container_builder_dgpu.yaml -d /opt/nvidia/graph-composer/config/target_x86_64_cuda_11_4.yaml
성공적으로 완료된 후에는 "성공적으로 태그가 지정된 deepstream_test1_dgpu:latest"라는 메시지가 포함된 출력이 표시됩니다.
참고
이전 명령을 실행할 때 "docker.errors.DockerException" 오류가 표시되는 경우 호스트 컴퓨터에 Docker 런타임이 설치되어 있지 않음을 나타낼 수 있습니다. 계속하려면 Docker 설치 방법에 대한 이 모듈의 "NVIDIA DeepStream Graph Composer 종속성 설치" 섹션의 지침을 검토합니다.
참고
"docker.errors.BuildError: 권한 없음: 인증 필요"가 표시되는 경우 이 메시지는 Docker에서 사용할 NVIDIA NGC 계정을 제대로 인증하지 않았을 수 있음을 나타냅니다.
이런 컨테이너화된 워크로드를 실행하기 전에 EGL 형식의 출력 싱크(형식 = 2)를 사용하여 워크로드로 인해 컨테이너에서 실행될 때 X11 디스플레이 환경에 대한 액세스 권한을 부여해야 합니다.
호스트 컴퓨터의 터미널에서 다음 명령을 실행하여 X11 서비스에 대한 액세스가 가능하도록 설정합니다.
sudo xhost +
호스트 컴퓨터의 터미널에서 다음 코드를 실행하여 컨테이너화된 워크로드가 예상대로 실행되는지 확인합니다.
sudo docker run -it --rm --gpus all -v /tmp/.X11-unix/:/tmp/.X11-unix/ -e DISPLAY=:0 deepstream_test1_dgpu
이 명령은
deepstream_test1_dgpu
컨테이너 이미지의 인스턴스를 시작하고 컴퓨터에서 사용 가능한 모든 GPU 하드웨어에 대한 액세스를 제공하는 동시에 X11 소켓 및 현재DISPLAY
에 대한 액세스도 제공합니다.execute_graph.sh
를 사용하여 호출된 이전 실행과 유사한 출력이 표시됩니다.
이제 배포를 위해 작동하는 컨테이너화된 워크로드를 보안 컨테이너 레지스트리에 게시할 준비가 되었습니다.