소스에서 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 와 함께 제공되지만 별도로 설치할 수 있습니다.
- Visual Studio 다운로드 로 이동합니다.
- 재배포 가능 항목 및 빌드 도구 선택 ,
- 다운로드 및 설치:
- 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
소스에서 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 separatorexport 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 |