다음을 통해 공유


Windows에서 CNTK 설정

Visual Studio 2017을 사용하여 Windows의 소스 코드에서 수동으로 CNTK를 빌드하려는 경우 이 페이지를 참조하세요.

CNTK 빌드 환경을 설정하거나 시스템에 CNTK를 설치하는 다른 종류의 지원을 원하는 경우 대신 여기 로 이동해야 합니다.

참고

이 페이지에서는 CNTK의 마스터 분기를 빌드하려고 한다고 가정합니다.

64비트 OS

CNTK에는 64비트 Windows 설치가 필요합니다. Windows 8.1, Windows 10 및 Windows Server 2012 R2 이상에서 빌드 프로세스를 테스트했습니다. 다른 환경은 공식적으로 지원되지 않습니다. 호환성 문제는 CNTK 프로덕션 빌드 및 테스트 구성을 확인합니다.

환경 변수 및 구성 요소

시스템에서 CNTK를 빌드하려면 다양한 환경 변수의 정의 및 구성이 필요합니다. CNTK의 Windows 빌드에서 사용하는 환경 변수에 대한 개요는 이 페이지에서 찾을 수 있습니다. 또한 이 페이지에서는 CNTK를 빌드하기 위한 필수 및 선택적 구성 요소와 기본 설치 위치에 대한 개요를 제공합니다.

Visual Studio 2017

Windows용 Microsoft Visual Studio 2017을 설치합니다. 다운로드에 대한 링크는 여기에서 찾을 수 있습니다.

Visual Studio 2017의 커뮤니티 버전은 CNTK를 빌드하기에 충분합니다.

설치 프로세스 중에 '유니버설 Windows 플랫폼 개발', '.NET 데스크톱 개발', 'C++를 사용한 데스크톱 개발' 및 'Python 개발' 워크로드를 선택하세요.

im1

또한 개별 구성 요소 화면에서 설치에 'VC++ 2017 버전 15.4 v14.11 도구 집합' 및 'UWP용 Visual C++ 런타임'을 추가해야 합니다.

im1

마지막으로 데스크톱 C++ [x86 및 x64]용 'Windows 10 SDK(10.0.16299.0)'를 추가합니다.

im1

기존 Visual Studio 2017 설치

시스템에 'VC++ 2017 버전 15.4 v14.11 도구 집합', 'UWP용 Visual C++ 런타임' 및 데스크톱 C++ [x86 및 x64]용 'Windows 10 SDK(10.0.16299.0)'가 설치되어 있어야 합니다. Windows "제어판 - 프로그램 ->> 프로그램 및 기능"을 열고 설치된 프로그램 목록에서 'Visual Studio Community 2017'을 선택합니다. 그러면 Visual Studio 설치가 다시 시작되고 앞서 언급한 구성 요소가 시스템에 설치되어 있는지 확인할 수 있습니다(위 그림 참조).

참고

Visual Studio 설치 관리자가 환경 변수를 설정하지 않은 경우 VS2017INSTALLDIR 수동으로 설정합니다. 정확한 설치 디렉터리가 다음 패턴C:\Program Files (x86)\Microsoft Visual Studio\<version>\<offering>에 따라 Visual Studio의 버전(이 경우 2017) 및 제품(Community, Enterprise 등)에 따라 달라집니다.

Visual Studio 2017 Enterprise 버전의 경우 다음을 실행합니다.

setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise"

Visual Studio 2017 Community Edition의 경우 다음을 실행합니다.

setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community"

Git

Git은 CNTK 코드 베이스를 사용하려면 필요합니다. 다음 도구를 사용할 수 있습니다.

CNTK GitHub 리포지토리에 참여

여기서는 Windows용 Git을 설치했다고 가정합니다. Git 설치 관리자의 기본 옵션(특히 'Windows 명령 프롬프트에서 Git 사용' 및 "줄 끝 구성" 프롬프트에서 "체크 아웃 Windows 스타일, UNIX 스타일 줄 끝 커밋" 옵션 사용)을 사용하여 Git을 설치했다고 가정합니다.

디렉터리에 CNTK 소스 코드의 복제본을 c:\repos\cntk 만듭니다. 다른 위치를 선호하는 경우 그에 따라 명령을 조정해야 합니다.

표준 Windows 명령 셸을 열고 다음 명령을 실행합니다.

c: && md \repos && cd \repos
git clone --recursive https://github.com/Microsoft/cntk
cd cntk

이렇게 하면 표준 빌드에 필요한 모든 소스 코드가 시스템에 배치됩니다. CNTK 코드를 수정하려는 경우 개발 및 테스트에 대한 정보를 읽어야 합니다.

하위 모델 Multiverso는 학습에 DataParallelASGD 를 사용하도록 설정하는 데 사용됩니다. DataParallelASGD 지원이 필요하지 않은 경우 환경 변수 CNTK_ENABLE_ASGD 추가하고 해당 값을 false로 설정합니다. 예를 들어 CMD 프롬프트에서 이를 실행한 다음 CMD 셸 및 Visual Studio를 다시 열어 변경 내용을 선택합니다.

setx CNTK_ENABLE_ASGD false

MKL

기본 CNTK 수학 라이브러리는 Intel MKL(Intel Math Kernel Library)입니다. 이 페이지를 따라 설치합니다.

MKL-DNN

  • MKL-DNN 원본을 다운로드하고 대상 경로로 MKL_PATH 사용하여 빌드합니다. Windows의 설치 MKL-DNN에서 빌드 지침 확인

  • 환경 변수 MKL_PATH 를 디렉터리로 설정합니다.예:

    setx MKL_PATH c:\local\mklml-mkldnn-0.14

MS-MPI

페이지 제목에 단순히 "버전 7"로 표시된 이 다운로드 페이지에서 MICROSOFT MPI(MS-MPI) 버전 7(7.0.12437.6)을 설치합니다. 다운로드 단추를 클릭한 다음 둘 다 msmpisdk.msi 선택합니다.MSMpiSetup.exe

승격

시스템에 Boost 라이브러리 를 설치하려면 다음 단계를 수행합니다.

  • Sourceforge의 이 다운로드 위치에서 Boost 버전 1.60(이진 파일 필요msvc-14.0)을 다운로드하고 설치합니다.
  • 환경 변수 BOOST_INCLUDE_PATH 를 Boost 설치로 설정합니다( 예:
    setx BOOST_INCLUDE_PATH c:\local\boost_1_60_0-msvc-14.0
  • 환경 변수 BOOST_LIB_PATH 를 Boost 라이브러리(예: )로 설정합니다.
    setx BOOST_LIB_PATH c:\local\boost_1_60_0-msvc-14.0\lib64-msvc-14.0
  • Boost 테스트 프레임워크를 Visual Studio에 통합하려면 Visual Studio 갤러리에서 Visual Studio에서 Boost 테스트용 실행기를 설치할 수 있습니다.

Protobuf

CNTK용으로 컴파일된 Protobuf 3.1.0 버전이 필요합니다. 이 버전을 직접 컴파일하거나 이미(미리 컴파일된) 준비된 Protobuf 3.1.0 버전을 사용할 수 있습니다(이 페이지에 설명되어 있음). 시스템에서 CNTK용 Protobuf 라이브러리를 빌드하려는 경우 여기에서 세부 정보를 찾을 수 있습니다.

이 위치에서 미리 컴파일된 버전의 CNTK용 Protobuf가 포함된 ZIP 파일을 다운로드합니다.

로컬 디스크의 폴더에 보관 파일을 추출하고, 예를 들어 C:\local\protobuf-3.1.0-vs15 해당 위치를 가리키는 환경 변수 PROTOBUF_PATH 를 설정합니다. 예를 들면 다음과 같습니다.

    setx PROTOBUF_PATH c:\local\protobuf-3.1.0-vs15

GPU 특정 패키지

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

CNTK에서 GPU를 사용하지 않고 CPU만 사용하는 경우 다음 일반 섹션으로 직접 건너뛸 수 있습니다. 그렇지 않으면 이 페이지로 진행합니다.

해당 위치를 가리키는 환경 변수 CUDNN_PATH 를 설정합니다.예:

    setx CUDNN_PATH C:\local\cudnn-9.0-v7.0\cuda

해당 위치를 가리키는 환경 변수 CUB_PATH 를 설정합니다.예:

    setx CUB_PATH c:\local\cub-1.7.4\

옵션. SWIG.

Python에서 CNTK를 활용하려면 SWIG를 설치해야 합니다. SWIG는 CNTK 평가 라이브러리(C#/.NET 또는 Java용)를 빌드하기 위한 요구 사항이기도 합니다.

이 사이트에서 버전을 SWIG 3.0.10 다운로드하세요.

로컬 디스크의 폴더에 보관 파일을 추출하고, 예를 들어 C:\local\swigwin-3.0.10 해당 위치를 가리키는 환경 변수 SWIG_PATH 를 설정합니다. 예를 들면 다음과 같습니다.

    setx SWIG_PATH C:\local\swigwin-3.0.10

빠른 설치 확인: 위의 지침을 따르고 동일한 경로를 사용한 경우 명령 dir C:\local\swigwin-3.0.10\swig.exe 이 성공하고 하나의 파일이 표시됩니다.

옵션. OpenCV

CNTK 2.2에서는 OpenCV(오픈 소스 Computer Vision)를 설치해야 하지만 CNTK 2.3의 경우 선택 사항입니다. 추가 단계를 보려면 이 페이지를 따르세요.

OpenCV 빌드 폴더를 가리키는 환경 변수 OPENCV_PATH_V31 를 설정합니다(예: ).

setx OPENCV_PATH_V31 c:\local\Opencv3.1.0\build

빠른 설치 확인: 위의 지침을 따르고 동일한 경로를 사용한 경우 명령 dir C:\local\Opencv3.1.0\build 이 성공합니다.

옵션. zlib 및 libzip

CNTK 이미지 판독기를 빌드하려는 경우 zliblibzip 라이브러리가 필요합니다.

zlib 및 libzip

ZLib 및 LibZip은 소스 코드로 배포되며, 이러한 패키지를 다시 컴파일해야 하며, 편의를 위해 만든 미리 컴파일된 버전을 사용할 수도 있습니다(이 섹션에 설명되어 있음). 라이브러리를 직접 빌드하려면 여기에서 자세한 지침을 찾을 수 있습니다.

이 위치에서 CNTK용 libzip/zlib 압축 라이브러리의 미리 컴파일된 버전이 포함된 ZIP 파일을 다운로드합니다.

로컬 디스크의 폴더(예: 해당 위치를 가리키는 환경 변수 ZLIB_PATH 를 설정)에 보관 파일을 추출합니다. 예를 들면 다음과 같습니다.C:\local\zlib-vs15

    setx ZLIB_PATH c:\local\zlib-vs15

빠른 설치 확인: 위의 지침을 따르고 동일한 경로를 사용한 경우 명령 dir C:\local\zlib-vs15\bin 이 성공하고 몇 개의 DLL을 표시합니다.

옵션. Anaconda Python 설치

Python 지원을 사용하여 CNTK를 빌드하려는 경우 아직 빌드하지 않은 경우 SWIG 를 설치합니다. 또한 Python 환경이 필요합니다. 기본 Python 설치에는 Anaconda Python을 사용합니다.

Anaconda 설치가 없는 경우 Windows용 Anaconda Python을 설치합니다. 설치 프로그램에 지정된 표준 구성을 따를 수 있습니다(InstallationType=JustMe; AddToPath=아니요; RegisterPython=No). 다음에서는 Python Anaconda3 4.1.1 을 설치했다고 가정합니다 C:\local\Anaconda3-4.1.1-Windows-x86_64.

옵션. CNTK UWP 빌드

참고

CNTK 버전 2.1의 새로운 기능

UWP용 CNTK 평가 라이브러리를 빌드하려면 여기에 설명된 추가 설치 단계를 따라야 합니다.

CNTK Python 환경

CNTK는 Python 2.7, Python 3.5 및 Python 3.6을 지원합니다. CNTK와 함께 작동하도록 Python 설치에서 전용 환경을 만드는 것이 좋습니다. 이러한 방식으로 CNTK 및 설치된 지원 패키지는 다른 Python 프로젝트에 영향을 주지 않습니다. 필요한 Python 패키지에 대한 설명이 포함된 여러 파일(yml-파일)을 제공합니다. 패키지는 CNTK 클론 내의 scripts\install\windows 디렉터리에 있습니다. 대상 Python 버전과 일치하는 파일을 선택하세요.

Python 버전 파일 이름
Python 2.7 conda-windows-cntk-py27-environment.yml
Python 3.5 conda-windows-cntk-py35-environment.yml
Python 3.6 conda-windows-cntk-py36-environment.yml

예를 들어 라는 cntk-py35환경에서 Python 3.5 환경을 만듭니다. 다른 환경 이름을 원하는 경우 다음 단계를 적절하게 조정하세요. Python 2.7 또는 Python 3.6 환경을 만들려면 사용하려는 Python 버전과 일치하도록 YML의 이름을 조정하세요.

다음은 GitHub의 CNTK 소스 코드를 디렉터리로 복제한 것으로 가정합니다 c:\repos\cntk.

  • 새 conda 환경을 만들고 활성화하려면 Windows 명령 셸에서 다음 명령을 실행합니다. cntk-py35
    cd C:\local\Anaconda3-4.1.1-Windows-x86_64\scripts
    conda env create --file c:\repos\cntk\scripts\install\windows\conda-windows-cntk-py35-environment.yml  --name cntk-py35
    activate C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35

환경(예: cntk-py35)이 있는 경우 다음 명령을 사용하여 최신 필수 패키지로 업데이트할 수 있습니다.

    cd C:\local\Anaconda3-4.1.1-Windows-x86_64\scripts
    conda env update --file c:\repos\cntk\scripts\install\windows\conda-windows-cntk-py35-environment.yml --name cntk-py35
    activate C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35

Python용 CNTK 환경 변수

CNTK 빌드를 시작하고 CNTK용 Python 라이브러리를 빌드하기 전에 환경 변수 CNTK_PY.._PATH 를 설정/정의하고 PYTHONPATH

CNTK_PY. _PATH

Python 환경에 대한 빌드 환경 변수를 설정합니다(적용되는 하나 이상 선택).

    setx CNTK_PY36_PATH [paths for your Python 3.6 environment]
    setx CNTK_PY35_PATH [paths for your Python 3.5 environment]
    setx CNTK_PY27_PATH [paths for your Python 2.7 environment]

지금까지 설치를 수행했다면 이는

    setx CNTK_PY35_PATH C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35

또는 환경 변수에 CNTK_PY36_PATHCNTK_PY35_PATHCNTK_PY27_PATH 대한 값은 에서 실행하여 확인할 수 있습니다.conda ..activate cmd.exe [name-or-path-of-your-environment]

PYTHONPATH

PYTHONPATH 는 Python에서 가져올 모듈을 찾을 위치의 경로를 설정합니다. CNTK를 빌드하는 경우 이 환경 변수에 빌드 프로세스의 출력 경로를 추가해야 합니다. CNTK를 c:\repos\cntk 복제한 경우

    setx PYTHONPATH c:\repos\cntk\bindings\python;%PYTHONPATH%

옵션. Java

CNTK 평가 라이브러리에 대한 Java 바인딩을 빌드하려면 아직 수행하지 않은 경우 SWIG 도구를 설치합니다. 또한 JDK(Java Development Kit)가 필요합니다. 현재 64비트 JDK 8(JDK 버전 1.8.0_131)을 사용합니다.

환경 변수 JAVA_HOME 설정하여 Java 설치 디렉터리를 가리킵니다. 다음 설정에서는 JDK 1.8.0_131을 C:\local\jdk1.8.0_131 설치했다고 가정합니다.

    setx JAVA_HOME "c:\local\jdk1.8.0_131"

이전 CNTK 버전 제거

이전에 컴퓨터에 CNTK Python 패키지 버전을 설치한 경우 먼저 PYTHONPATH 환경 변수에서 CNTK 관련 경로를 제거하여 제거합니다. 수행: echo %PYTHONPATH% 현재 값을 확인하고 명령을 사용하여 setx CNTK 관련 경로가 사라지도록 PYTHONPATH를 설정합니다. PYTHONPATH를 비워 두면 비워 집니다.

제거를 수행합니다. pip uninstall cntk


그러면 설치 부분이 종료됩니다. CNTK 빌드를 계속해 보겠습니다.


CNTK 빌드

현재 Visual Studio 2017에서 CUDA 9와 기본 VCTools 간에 호환성 문제가 있습니다. CNTK를 사용하려면 CUDA 9를 사용하여 빌드하려면 VCTools 14.11이 필요합니다. 이러한 작업을 하려면 다음을 수행합니다.

  • 명령 프롬프트 열기
  • 호출 "%VS2017INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.11

그러면 VCTools가 CUDA 9 호환 버전으로 설정됩니다. 명령 프롬프트에서 GitHub에서 복제된 CNTK 프로젝트의 루트에서 CNTK.sln을 시작합니다. CNTK.sln이 VCTools의 기본 CUDA9 호환되지 않는 버전으로 실행되는 경우 "1>c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133): 심각한 오류 C1189: #error: -- 지원되지 않는 Microsoft Visual Studio 버전! 버전 2012, 2013, 2015 및 2017만 지원됩니다!"

방금 변경하고 환경 변수를 사용하는 경우 이미 열려 있는 Visual Studio 인스턴스를 닫아야 합니다. 그렇지 않으면 변경된 환경 변수의 콘텐츠가 Visual Studio 내에 반영되지 않습니다.

  • 솔루션 탐색기 CNTK 솔루션을 마우스 오른쪽 단추로 클릭하고Properties
  • 열린 창에서 단추 선택 Configuration Properties 및 누르 Configuration Manager...
  • Configuration Manager 원하는 구성을 선택합니다.
    • 디버그 또는 릴리스
    • GPU 또는 CPU 전용입니다. CPU 전용 구성의 이름은 명시적으로 지정됩니다. 다른 모든 구성은 GPU 사용(즉, Release 릴리스를 의미)을 의미합니다 . GPU 사용 모드)
    • GPU 구성에 필요한 구성 요소를 설치하지 않은 경우 항상 CPU 전용 구성을 선택해야 합니다.

CNTK 솔루션을 빌드합니다. 빌드 프로세스에서 만든 구성 요소는 설치한 필수 구성 요소에 따라 달라집니다. 자세한 내용은 Windows 환경 변수 를 자세히 설명하는 페이지를 참조해야 합니다.

Python 모듈을 빌드하는 경우 다음 사항에 유의하세요.

  • Python 모듈은 구성에서 Release 만 생성됩니다.
  • 그러면 CNTK Python 모듈이 내부에 bindings\python\cntk 빌드되고 빌드 출력 폴더의 하위 폴더 Python 에 패키지(.whl()도 생성됩니다(예: x64\Release\Python).
  • 경로에 빌드 출력 폴더(예: x64\Release)가 포함되어 있고 PYTHONPATH 디렉터리가 포함되어 bindings\python 있는지 확인합니다. 이것은 Pip 패키지 설치에 대해 표시된 설정과 반대입니다. 여기서는 Python 환경에 설치된 패키지가 아니라 CNTK 리포지토리 클론에서 CNTK 모듈을 로드하므로 설정 PYTHONPATH의 차이도 있습니다.

CNTK 빌드 기능 테스트

CNTK가 시스템에서 제대로 작동하는지 확인하려면 헬로 월드 - 로지스틱 회귀 자습서에서 예제를 신속하게 실행할 수 있습니다. 이 예제에서는 간단한 네트워크를 학습시키고 CPU 또는 GPU를 사용하도록 지시할 수 있으며, 이는 CNTK가 제대로 작동하는지 신속하게 확인하는 데 도움이 됩니다.

아래에서는 CNTK 리포지토리가 복제 c:\repos\cntkbuild\x64\release 되어 (릴리스) 빌드의 하위 디렉터리로 사용되었다고 가정합니다.

  • 명령 프롬프트 열기
  • CNTK 이진 파일의 경로를 제공하고(아래 첫 번째 명령을 사용하여 환경 변수 또는 명령 프롬프트 세션의 경우) 디렉터리로 Tutorials\HelloWorld-LogisticRegression 변경합니다.
set PATH=C:\repos\cntk\x64\release;%PATH%
cd C:\repos\cntk\Tutorials\HelloWorld-LogisticRegression

먼저 다음 예제를 사용해 보세요.

cntk configFile=lr_bs.cntk makeMode=false

샘플이 실행되는 경우(예: 오류 메시지가 없는 경우) 먼저 구성 읽기와 관련된 출력과 실제 네트워크 학습의 출력을 가져옵니다.

GPU를 사용하여 CNTK 시도

GPU 사용을 위해 CNTK를 빌드한 경우 다음 명령을 실행하여 GPU를 사용해 보세요.

cntk configFile=lr_bs.cntk makeMode=false deviceId=auto

출력 시작 부분에 GPU가 사용되었음을 확인하는 줄이 표시됩니다.

Model has 9 nodes. Using GPU 0.

GPU ID는 다를 수 있습니다. 매개 변수는 deviceId 계산에 사용할 프로세서를 정의합니다.

  • deviceId=-1 는 CPU를 사용한다는 의미입니다. 기본값
  • deviceId=X 여기서 X는 정 >수 =0이면 GPU X를 사용합니다. deviceId=0 즉, GPU 0 등을 의미합니다.
  • deviceId=auto 는 GPU를 사용하고 GPU를 자동으로 선택한다는 의미입니다.

CNTK Python API 시도

설치 스크립트를 통해 또는 수동으로 CNTK Python 환경을 만들었다고 가정합니다. 명령 프롬프트를 열고 CNTK Python 환경(예: 실행)을 활성화합니다.

activate cntk-py35

빠른 테스트로 폴더를 Tutorials\NumpyInterop 변경하고 실행 python FeedForwardNet.py합니다. 학습 후에 다음과 유사한 출력이 표시됩니다.

Finished Epoch [1]: loss = 0.297748 * 25600 2.383s (10742.8 samples per second)
 error rate on an unseen minibatch 0.040000

Visual Studio에서 CNTK 소스 코드 디버깅

  • Python 도구, CNTK 및 Visual Studio를 사용하려면 여기를 참조하세요.
  • Visual Studio를 사용하여 CNTK에서 BrainScript를 디버그하려면 다음 단계를 수행 합니다.

CNTK 코드에 기여

코드 수정을 계획하는 경우 개발 및 테스트에 대한 정보를 읽어야 합니다.