Windows의 소스에서 빌드

소스에서 TensorFlow pip 패키지를 빌드하고 Windows에 설치합니다.

Windows용 설정

다음 빌드 도구를 설치하여 Windows 개발 환경을 구성합니다.

Python 및 TensorFlow 패키지 종속성 설치

Windows용 Python 3.5.x 또는 Python 3.6.x 64비트 출시를 설치합니다. 선택적 기능으로 pip를 선택하고 %PATH% 환경 변수에 추가합니다.

TensorFlow pip 패키지 종속성을 설치합니다.

pip3 install six numpy wheel
pip3 install keras_applications==1.0.6 --no-deps
pip3 install keras_preprocessing==1.0.5 --no-deps

종속성은 REQUIRED_PACKAGES 아래 setup.py 파일에 나열되어 있습니다.

Bazel 설치

TensorFlow를 컴파일하는 데 사용되는 빌드 도구인 Bazel을 설치합니다. Bazel 버전의 경우 Windows용 테스트된 빌드 구성을 참조하세요. Bazel을 구성하여 C++을 빌드합니다.

Bazel 실행 파일의 위치를 %PATH% 환경 변수에 추가합니다.

MSYS2 설치

TensorFlow를 빌드하는 데 필요한 bin 도구를 위해 MSYS2를 설치합니다. MSYS2가 C:\msys64에 설치된 경우 C:\msys64\usr\bin%PATH% 환경 변수에 추가합니다. 그런 다음 cmd.exe를 사용하여 실행합니다.

pacman -S git patch unzip

Visual C++ 빌드 도구 2019 설치

Visual C++ 빌드 도구 2019를 설치합니다. Visual Studio 2019와 함께 제공되지만 별도로 설치할 수 있습니다.

  1. Visual Studio 다운로드로 이동합니다.
  2. 재배포 가능 패키지 및 빌드 도구를 선택합니다.
  3. 다음을 다운로드하여 설치합니다.
    • Microsoft Visual C++ 2019 재배포 가능 패키지
    • Microsoft 빌드 도구 2019

GPU 지원 설치(선택사항)

Windows GPU 지원 가이드에 따라 GPU에서 TensorFlow를 실행하는 데 필요한 드라이버 및 추가 소프트웨어를 설치합니다.

TensorFlow 소스 코드 다운로드

Git를 사용하여 TensorFlow 저장소를 클론합니다. git는 MSYS2와 함께 설치됩니다.

git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

저장소는 기본적으로 master 개발 브랜치로 설정됩니다. 빌드할 출시 브랜치를 체크아웃할 수도 있습니다.

git checkout branch_name  # r1.9, r1.10, etc.

빌드 구성

TensorFlow 소스 트리의 루트에서 다음을 실행하여 시스템 빌드를 구성합니다.

python ./configure.py

이 스크립트는 TensorFlow 종속성 위치를 묻는 메시지를 표시하고 추가 빌드 구성 옵션(예: 컴파일러 플래그)을 요청합니다. 다음은 python ./configure.py의 샘플 실행을 보여줍니다(세션은 다를 수 있음).

구성 옵션

GPU 지원의 경우 CUDA 및 cuDNN의 버전을 지정합니다. 시스템에 여러 버전의 CUDA 또는 cuDNN이 설치되어 있다면 기본값을 사용하지 않고 명시적으로 버전을 설정합니다. ./configure.py는 시스템의 CUDA 라이브러리로 연결되는 심볼릭 링크를 만들기 때문에 CUDA 라이브러리 경로를 업데이트하는 경우 빌드하기 전에 이 구성 단계를 다시 실행해야 합니다.

pip 패키지 빌드

TensorFlow 2.x

tensorflow:master 저장소가 기본적으로 2.x 빌드로 업데이트되었습니다. Bazel을 설치하고 bazel build를 사용하여 TensorFlow 패키지를 만듭니다.

bazel build //tensorflow/tools/pip_package:build_pip_package

TensorFlow 1.x

마스터에서 TensorFlow 1.x 버전을 빌드하려면 bazel build --config=v1을 사용하여 TensorFlow 1.x 패키지를 만듭니다.

bazel build --config=v1 //tensorflow/tools/pip_package:build_pip_package

CPU만

bazel을 사용하여 CPU만 지원하는 TensorFlow 패키지 빌더를 만듭니다.

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

GPU 지원

GPU를 지원하는 TensorFlow 패키지 빌더를 만들려면 다음을 실행합니다.

bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package

Bazel 빌드 옵션

패키지를 만들 때 문제를 방지하려면 빌드 시 이 옵션을 사용합니다(tensorflow:issue#22390).

--define=no_tensorflow_py_deps=true

빌드 옵션은 Bazel 명령줄 참조를 참조하세요.

소스에서 TensorFlow를 빌드하면 많은 RAM이 사용될 수 있습니다. 시스템 메모리가 제한된 경우 --local_ram_resources=2048을 사용하여 Bazel의 RAM 사용량을 제한합니다.

GPU 지원을 포함해서 빌드하는 경우 --copt=-nvcc_options=disable-warnings를 추가하여 nvcc 경고 메시지가 표시되지 않도록 합니다.

패키지 빌드

bazel build 명령어는 pip 패키지를 빌드하는 프로그램인 build_pip_package 실행 파일을 만듭니다. 예를 들어 다음은 C:/tmp/tensorflow_pkg 디렉터리에 .whl 패키지를 빌드합니다.

bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg

동일한 소스 트리 아래에 CUDA 구성과 비 CUDA 구성을 모두 빌드할 수 있지만 동일한 소스 트리에서 이러한 두 구성 간에 전환하는 경우 bazel clean을 실행하는 것이 좋습니다.

패키지 설치

TensorFlow 버전 및 플랫폼에 따라 생성되는 .whl 파일의 파일 이름이 달라집니다. pip3 install을 사용하여 패키지를 설치합니다. 예를 들면 다음과 같습니다.

pip3 install C:/tmp/tensorflow_pkg/tensorflow-version-cp36-cp36m-win_amd64.whl

MSYS 셸을 사용하여 빌드

MSYS 셸을 사용하여 TensorFlow를 빌드할 수도 있습니다. 아래에 나열된 내용을 변경한 후 Windows 네이티브 명령줄(cmd.exe)의 이전 안내를 따릅니다.

MSYS 경로 변환 사용 안함

MSYS는 Unix 경로처럼 보이는 인수를 Windows 경로로 자동 변환합니다. 이 기능은 bazel과 호환되지 않습니다. //path/to:bin 라벨은 슬래시로 시작하기 때문에 Unix 절대 경로로 간주됩니다.

export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

PATH 설정

Bazel 및 Python 설치 디렉터리를 $PATH 환경 변수에 추가합니다. Bazel이 C:\tools\bazel.exe에 설치되고 Python이 C:\Python36\python.exe에 설치된 경우 다음을 사용하여 PATH를 설정합니다.

# Use Unix-style with ':' as separator
export PATH="/c/tools:$PATH"
export PATH="/c/Python36:$PATH"

GPU를 지원하려면 CUDA 및 cuDNN bin 디렉터리를 $PATH에 추가합니다.

export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/bin:$PATH"
export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/extras/CUPTI/libx64:$PATH"
export PATH="/c/tools/cuda/bin:$PATH"

테스트된 빌드 구성

CPU

버전Python 버전컴파일러빌드 도구
tensorflow-2.0.03.5~3.7MSVC 2017Bazel 0.26.1
tensorflow-1.14.03.5~3.7MSVC 2017Bazel 0.24.1~0.25.2
tensorflow-1.13.03.5~3.7MSVC 2015 업데이트 3Bazel 0.19.0~0.21.0
tensorflow-1.12.03.5-3.6MSVC 2015 업데이트 3Bazel 0.15.0
tensorflow-1.11.03.5-3.6MSVC 2015 업데이트 3Bazel 0.15.0
tensorflow-1.10.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.3
tensorflow-1.9.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.3
tensorflow-1.8.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.3
tensorflow-1.7.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.3
tensorflow-1.6.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.3
tensorflow-1.5.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.3
tensorflow-1.4.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.3
tensorflow-1.3.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.3
tensorflow-1.2.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.3
tensorflow-1.1.03.5MSVC 2015 업데이트 3Cmake v3.6.3
tensorflow-1.0.03.5MSVC 2015 업데이트 3Cmake v3.6.3

GPU

버전Python 버전컴파일러빌드 도구cuDNNCUDA
tensorflow_gpu-2.0.03.5~3.7MSVC 2017Bazel 0.26.17.410
tensorflow_gpu-1.14.03.5~3.7MSVC 2017Bazel 0.24.1~0.25.27.410
tensorflow_gpu-1.13.03.5~3.7MSVC 2015 업데이트 3Bazel 0.19.0~0.21.07.410
tensorflow_gpu-1.12.03.5-3.6MSVC 2015 업데이트 3Bazel 0.15.079
tensorflow_gpu-1.11.03.5-3.6MSVC 2015 업데이트 3Bazel 0.15.079
tensorflow_gpu-1.10.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.379
tensorflow_gpu-1.9.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.379
tensorflow_gpu-1.8.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.379
tensorflow_gpu-1.7.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.379
tensorflow_gpu-1.6.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.379
tensorflow_gpu-1.5.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.379
tensorflow_gpu-1.4.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.368
tensorflow_gpu-1.3.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.368
tensorflow_gpu-1.2.03.5-3.6MSVC 2015 업데이트 3Cmake v3.6.35.18
tensorflow_gpu-1.1.03.5MSVC 2015 업데이트 3Cmake v3.6.35.18
tensorflow_gpu-1.0.03.5MSVC 2015 업데이트 3Cmake v3.6.35.18