Windows의 소스에서 빌드

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

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

Windows용 설정

다음 빌드 도구를 설치하여 Windows 개발 환경을 구성하십시오.

Python 및 TensorFlow 패키지 종속성 설치

Windows용 Python 3.7+ 64비트 릴리스를 설치합니다. 선택적 기능으로 pip 를 선택하고 %PATH% 환경 변수에 추가합니다.

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

pip3 install -U six numpy wheel packaging
pip3 install -U keras_preprocessing --no-deps

종속성은 REQUIRED_PACKAGES 아래의 setup.py 파일에 나열됩니다.

바젤 설치

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

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

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 재배포 가능 패키지
    • 마이크로소프트 빌드 도구 2019

GPU 지원 설치(선택 사항)

GPU에서 TensorFlow를 실행하는 데 필요한 드라이버 및 추가 소프트웨어를 설치하려면 Windows GPU 지원 가이드를 참조하세요.

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 빌드는 저장소의 루트 디렉터리에 있는 .bazelrc 파일에 의해 구성됩니다. ./configure 또는 ./configure.py 스크립트를 사용하여 공통 설정을 조정할 수 있습니다.

구성을 변경해야 하는 경우 리포지토리의 루트 디렉터리에서 ./configure 스크립트를 실행합니다.

python ./configure.py

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

구성 옵션

GPU 지원 의 경우 CUDA 및 cuDNN의 버전을 지정하십시오. 시스템에 여러 버전의 CUDA 또는 cuDNN이 설치되어 있는 경우 기본값에 의존하지 말고 버전을 명시적으로 설정하십시오. ./configure.py 는 시스템의 CUDA 라이브러리에 대한 심볼릭 링크를 생성하므로 CUDA 라이브러리 경로를 업데이트하는 경우 빌드하기 전에 이 구성 단계를 다시 실행해야 합니다.

pip 패키지 빌드 및 설치

pip 패키지는 두 단계로 빌드됩니다. bazel build 명령은 "package-builder" 프로그램을 만듭니다. 그런 다음 package-builder를 실행하여 패키지를 생성합니다.

패키지 빌더 빌드

tensorflow:master repo는 기본적으로 빌드 2.x로 업데이트되었습니다. Bazel을 설치 하고 bazel build 를 사용하여 TensorFlow 패키지 빌더를 생성합니다.

bazel build //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 명령은 build_pip_package 라는 실행 파일을 생성합니다. 이 실행 파일은 pip 패키지를 빌드하는 프로그램입니다. 예를 들어 다음은 C:/tmp/tensorflow_pkg 디렉토리에 .whl 패키지를 빌드합니다.

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

동일한 소스 트리에서 CUDA 및 비 CUDA 구성을 모두 빌드할 수 있지만 동일한 소스 트리에서 이 두 구성 사이를 전환할 때 bazel clean 을 실행하는 것이 좋습니다.

패키지 설치

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

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

MSYS 셸을 사용하여 빌드

TensorFlow는 MSYS 셸을 사용하여 구축할 수도 있습니다. 아래 나열된 사항을 변경한 다음 Windows 기본 명령줄( cmd.exe )에 대한 이전 지침을 따릅니다.

MSYS 경로 변환 비활성화

MSYS는 Unix 경로처럼 보이는 인수를 Windows 경로로 자동 변환하며 이는 bazel 에서 작동하지 않습니다. (레이블 //path/to:bin 은 슬래시로 시작하므로 Unix 절대 경로로 간주됩니다.)

export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

PATH 설정

$PATH 환경 변수에 Bazel 및 Python 설치 디렉터리를 추가합니다. 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/v11.0/bin:$PATH"
export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/extras/CUPTI/libx64:$PATH"
export PATH="/c/tools/cuda/bin:$PATH"

테스트된 빌드 구성

CPU

버전 파이썬 버전 컴파일러 빌드 도구
텐서플로우-2.11.0 3.7-3.10 MSVC 2019 바젤 5.3.0
텐서플로우-2.10.0 3.7-3.10 MSVC 2019 바젤 5.1.1
텐서플로우-2.9.0 3.7-3.10 MSVC 2019 바젤 5.0.0
텐서플로우-2.8.0 3.7-3.10 MSVC 2019 바젤 4.2.1
텐서플로우-2.7.0 3.7-3.9 MSVC 2019 바젤 3.7.2
텐서플로우-2.6.0 3.6-3.9 MSVC 2019 바젤 3.7.2
텐서플로우-2.5.0 3.6-3.9 MSVC 2019 바젤 3.7.2
텐서플로우-2.4.0 3.6-3.8 MSVC 2019 바젤 3.1.0
텐서플로우-2.3.0 3.5-3.8 MSVC 2019 바젤 3.1.0
텐서플로우-2.2.0 3.5-3.8 MSVC 2019 바젤 2.0.0
텐서플로우-2.1.0 3.5-3.7 MSVC 2019 바젤 0.27.1-0.29.1
텐서플로우-2.0.0 3.5-3.7 MSVC 2017 바젤 0.26.1
텐서플로우-1.15.0 3.5-3.7 MSVC 2017 바젤 0.26.1
텐서플로우-1.14.0 3.5-3.7 MSVC 2017 바젤 0.24.1-0.25.2
텐서플로우-1.13.0 3.5-3.7 MSVC 2015 업데이트 3 바젤 0.19.0-0.21.0
텐서플로우-1.12.0 3.5-3.6 MSVC 2015 업데이트 3 바젤 0.15.0
텐서플로우-1.11.0 3.5-3.6 MSVC 2015 업데이트 3 바젤 0.15.0
텐서플로우-1.10.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3
텐서플로우-1.9.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3
텐서플로우-1.8.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3
텐서플로우-1.7.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3
텐서플로우-1.6.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3
텐서플로우-1.5.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3
텐서플로우-1.4.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3
텐서플로우-1.3.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3
텐서플로우-1.2.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3
텐서플로우-1.1.0 3.5 MSVC 2015 업데이트 3 씨메이크 v3.6.3
텐서플로우-1.0.0 3.5 MSVC 2015 업데이트 3 씨메이크 v3.6.3

GPU

버전 파이썬 버전 컴파일러 빌드 도구 cuDNN 쿠다
tensorflow_gpu-2.11.0 3.7-3.10 MSVC 2019 바젤 5.3.0 8.1 11.2
tensorflow_gpu-2.10.0 3.7-3.10 MSVC 2019 바젤 5.1.1 8.1 11.2
tensorflow_gpu-2.9.0 3.7-3.10 MSVC 2019 바젤 5.0.0 8.1 11.2
tensorflow_gpu-2.8.0 3.7-3.10 MSVC 2019 바젤 4.2.1 8.1 11.2
tensorflow_gpu-2.7.0 3.7-3.9 MSVC 2019 바젤 3.7.2 8.1 11.2
tensorflow_gpu-2.6.0 3.6-3.9 MSVC 2019 바젤 3.7.2 8.1 11.2
tensorflow_gpu-2.5.0 3.6-3.9 MSVC 2019 바젤 3.7.2 8.1 11.2
tensorflow_gpu-2.4.0 3.6-3.8 MSVC 2019 바젤 3.1.0 8.0 11.0
tensorflow_gpu-2.3.0 3.5-3.8 MSVC 2019 바젤 3.1.0 7.6 10.1
tensorflow_gpu-2.2.0 3.5-3.8 MSVC 2019 바젤 2.0.0 7.6 10.1
tensorflow_gpu-2.1.0 3.5-3.7 MSVC 2019 바젤 0.27.1-0.29.1 7.6 10.1
tensorflow_gpu-2.0.0 3.5-3.7 MSVC 2017 바젤 0.26.1 7.4 10
tensorflow_gpu-1.15.0 3.5-3.7 MSVC 2017 바젤 0.26.1 7.4 10
tensorflow_gpu-1.14.0 3.5-3.7 MSVC 2017 바젤 0.24.1-0.25.2 7.4 10
tensorflow_gpu-1.13.0 3.5-3.7 MSVC 2015 업데이트 3 바젤 0.19.0-0.21.0 7.4 10
tensorflow_gpu-1.12.0 3.5-3.6 MSVC 2015 업데이트 3 바젤 0.15.0 7.2 9.0
tensorflow_gpu-1.11.0 3.5-3.6 MSVC 2015 업데이트 3 바젤 0.15.0 7 9
tensorflow_gpu-1.10.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3 7 9
tensorflow_gpu-1.9.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3 7 9
tensorflow_gpu-1.8.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3 7 9
tensorflow_gpu-1.7.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3 7 9
tensorflow_gpu-1.6.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3 7 9
tensorflow_gpu-1.5.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3 7 9
tensorflow_gpu-1.4.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3 6 8
tensorflow_gpu-1.3.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3 6 8
tensorflow_gpu-1.2.0 3.5-3.6 MSVC 2015 업데이트 3 씨메이크 v3.6.3 5.1 8
tensorflow_gpu-1.1.0 3.5 MSVC 2015 업데이트 3 씨메이크 v3.6.3 5.1 8
tensorflow_gpu-1.0.0 3.5 MSVC 2015 업데이트 3 씨메이크 v3.6.3 5.1 8