Linux에서 GPU 특정 패키지 설정

이 섹션에서는 CNTK NVIDIA GPU를 활용하기 위해 설정해야 하는 패키지를 간략하게 설명합니다.

GPU 호환성 확인 및 최신 드라이버 가져오기

CNTK GPU 기능을 사용할 수 있는 CUDA 호환 그래픽 카드가 필요합니다. 카드가 여기와 여기(이전 카드의 경우)에서 CUDA와 호환되는지 확인할 수 있습니다. GPU 카드 CC(컴퓨팅 기능)는 3.0 이상이어야 합니다.

필요한 카드가 있는 경우 최신 드라이버를 설치합니다.

  • 카드를 선택하고 여기에서 드라이버 팩을 다운로드합니다(일반적으로 파일로 .run 사용 가능).

  • X Windows 관리자가 실행 중인 경우 드라이버 설치가 실패할 수 있습니다. 컴퓨터에 대한 원격 터미널 세션을 열고 X Windows 관리자를 중지합니다. 정확한 명령은 플랫폼 설명서를 참조하세요.

예: Ubuntu의 경우 다음 명령을 사용합니다(X Windows 관리자라고 가정lightdm).

sudo stop lightdm
  • 아래 예제와 같이 드라이버를 설치합니다(파일 이름이 시스템에 따라 다를 수 있음).
sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run
sudo ./NVIDIA-Linux-x86_64-384.111.run

기본 설치 옵션을 수락하는 것이 좋습니다.

드라이버 설치 프로그램은 누보 커널 드라이버에 대해 불만을 제기할 수 있습니다. 사용하지 않도록 설정하기 위한 지침은 플랫폼 설명서를 참조하세요. Ubuntu 의 경우 이 지침 집합을 사용할 수 있습니다.

  • 위의 단계에서 중지된 경우 X Windows 관리자를 시작합니다. 정확한 명령은 플랫폼 설명서를 참조하세요.

예: Ubuntu의 경우 다음 명령을 사용합니다(X Windows 관리자의 경우lightdm).

sudo start lightdm

CUDA 9

아래 절차에서는 파일 배포를 사용하여 CUDA를 설치하는 .run 방법을 설명합니다. 설치를 사용 DEB 하거나 RPM 패키지할 수도 있습니다. CUDA Online 설명서NVIDIA CUDA 9.0 다운로드 페이지 및 설치 지침에서 시스템에 대한 패키지를 찾을 수 있습니다.

NVIDIA CUDA 9.0 Toolkit 다운로드하여 설치합니다.

  • 여기에서 플랫폼에 .run 대한 파일을 찾아 다운로드합니다.

  • X Windows 관리자가 실행 중인 경우 설치가 실패할 수 있습니다. 컴퓨터에 대한 원격 터미널 세션을 열고 X Windows 관리자를 중지합니다. 정확한 명령은 플랫폼 설명서를 참조하세요.

예: Ubuntu의 경우 다음 명령을 사용합니다(X Windows 관리자의 lightdm 경우).

sudo stop lightdm
  • CUDA 9.0 Toolkit 설치합니다(.run파일 이름은 시스템에 따라 다를 수 있음).
chmod +x ./cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run

설치 관리자가 묻는 메시지가 표시되면:

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit:

이전 섹션의 단계를 수행하여 최신 드라이버를 이미 설치했는지 선택합니다no. 아직 완료하지 않은 경우 CUDA yes도구 키트를 설치한 후 최신 드라이버로 업데이트하는 것이 좋습니다 .

CUDA 9.0 패키지에서 드라이버 설치를 거부한 경우 설치가 끝나면 다음과 같은 경고가 표시됩니다.

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 9.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run -silent -driver

이 경고는 무시합니다.

위의 단계에서 중지된 경우 X Windows 관리자를 시작합니다. 정확한 명령은 플랫폼 설명서를 참조하세요.

예: Ubuntu의 경우 다음 명령을 사용합니다(X Windows 관리자의 lightdm 경우).

sudo start lightdm

현재 세션 및 .bashrc 프로필에 다음 환경 변수를 추가합니다(CUDA 설치 중에 기본 경로를 수정한 경우 그에 따라 아래 값을 변경합니다.)

export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH

다음 단계는 선택 사항입니다. 다음 섹션으로 건너뛸 수 있습니다.

옵션. CUDA 9.0 설치 확인

CUDA 샘플을 컴파일하여 CUDA 설치를 확인할 수 있습니다(CUDA 설치 중에 기본 경로가 사용되었다고 가정). 모든 샘플을 빌드하는 작업은 긴 작업입니다.

cd ~/NVIDIA_CUDA-9.0_Samples/
make

빌드가 성공한 후 유틸리티를 호출합니다 deviceQuery .

~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery/deviceQuery

모든 것이 제대로 작동하는 경우 아래와 유사한 출력을 가져와야 합니다.

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 960"
  CUDA Driver Version / Runtime Version          9.0 / 9.0
  CUDA Capability Major/Minor version number:    5.2
  Total amount of global memory:                 2025 MBytes (2123235328 bytes)
  ( 8) Multiprocessors, (128) CUDA Cores/MP:     1024 CUDA Cores
  GPU Max Clock rate:                            1253 MHz (1.25 GHz)
  Memory Clock rate:                             3505 Mhz
  Memory Bus Width:                              128-bit
  L2 Cache Size:                                 1048576 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 2 copy engine(s)
  Run time limit on kernels:                     No
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 3 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.0, CUDA Runtime Version = 9.0, NumDevs = 1, Device0 = GeForce GTX 960
Result = PASS

GPU 배포 키트

CUDA 버전 8부터 GPU 배포 키트는 CUDA 패키지의 일부이며 더 이상 별도로 설치할 필요가 없습니다.

cuDNN

NVIDIA CUDA cuDNN(심층 신경망 라이브러리)을 설치합니다.

중요

이전에 이전 버전용 cuDNN을 설치한 경우 CUDA 9.0 호환 버전으로 업그레이드해야 합니다.

중요

아래 지정된 대로 정확한 버전 및 대상 경로를 사용하여 cuDNN을 설치합니다. 이는 CNTK 빌드 구성 프로그램에서 필요하기 때문에 필요합니다.

  • 다음 명령을 사용합니다.
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libcudnn7_7.0.4.31-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7_7.0.4.31-1+cuda9.0_amd64.deb

옵션. NCCL

NVIDIA의 NCCL 라이브러리 는 Linux에서의 집단 다중 GPU 통신을 위한 최적화된 기본 형식을 제공합니다. CNTK 단일 호스트에서 실행되는 병렬 작업에 대해 이러한 가속 기본 형식을 활용할 수 있습니다(여기서는 CNTK 병렬 학습 소개).

NVIDIA NCCL 라이브러리를 다운로드하려면 여기의 지침을 따르세요.

wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libnccl-dev_2.1.2-1+cuda9.0_amd64.deb
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libnccl2_2.1.2-1+cuda9.0_amd64.deb
sudo dpkg -i libnccl2_2.1.2-1+cuda9.0_amd64.deb libnccl-dev_2.1.2-1+cuda9.0_amd64.deb

그런 다음 CNTK 구성 옵션을 --with-nccl=<path> 사용하여 NVIDIA NCCL을 사용하여 빌드를 사용하도록 설정합니다. 예를 들어 NCCL이 기본 폴더 /usr가 아닌 폴더에 설치되어 있는 경우 NVIDIA NCCL 지원을 사용하여 빌드하는 데 추가 옵션(추가 옵션)을 사용합니다 configure --with-nccl=<nccl install folder> .

참고

현재 NVIDIA NCCL에 대한 CNTK 지원은 CNTK 이진을 사용하여 32/64 그라데이션 비트가 있는 데이터 병렬 SGD로 제한됩니다. 추가 병렬화 메서드 및 CNTK v2에 대한 지원은 나중에 추가될 예정입니다. CNTK 공식 릴리스는 NCCL을 사용하도록 설정하여 빌드되었습니다. 모든 Linux Python 휠에는 이미 NCCL 이진 파일이 포함되어 있습니다. Linux의 Brainscript 사용자의 경우 NCCL을 설치해야 합니다. 사용자가 NCCL을 사용하지 않으려면 원본에서 CNTK 빌드하세요. 구성은 /usr 아래에 설치된 NCCL을 자동으로 검색하므로 빌드하기 전에 NCCL을 제거하세요.

CUB

Python용 CNTK 설치하는 경우 다음 섹션으로 건너뛸 수 있습니다. 그렇지 않으면 더 진행합니다.

아래 명령을 사용하여 NVIDIA CUB를 가져와서 설치합니다.

중요

아래 지정된 대로 정확한 버전 및 대상 경로를 사용하여 NVIDIA CUB를 설치합니다. 이는 CNTK 빌드 구성 프로그램에서 필요하기 때문에 필요합니다.

다음 명령을 사용합니다.

wget https://github.com/NVlabs/cub/archive/1.7.4.zip
unzip ./1.7.4.zip
sudo cp -r cub-1.7.4 /usr/local