Windows의 소스에서 빌드,Windows의 소스에서 빌드

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

Windows용 설정

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

Python 및 TensorFlow 패키지 종속 항목 설치

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

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

pip3 install -U 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을 구성합니다.

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

MSYS2 설치

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

pacman -Syu (requires a console restart)
pacman -S git patch unzip
pacman -S git patch unzip rsync

Visual C++ 빌드 도구 2022 설치

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

  1. Visual Studio 다운로드 로 이동합니다.
  2. Visual Studio용 도구 또는 기타 도구, 프레임워크 및 재배포 가능 항목을 선택합니다.
  3. 다운로드 및 설치:
    • Visual Studio 2022용 빌드 도구
    • Visual Studio 2022용 Microsoft Visual C++ 재배포 가능 패키지

LLVM 설치

  1. LLVM 다운로드 로 이동하세요.
  2. C:/Program Files/LLVM(예: LLVM-17.0.6-win64.exe)에 Windows 호환 LLVM을 다운로드하여 설치합니다.

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.

선택 사항: 환경 변수 설정

패키지 생성 문제를 방지하려면 빌드 명령을 실행하기 전에 다음 명령을 실행하십시오. (패키지를 설치하는 동안 아래 명령이 설정된 경우 무시하십시오.) set 실행하여 모든 경로가 올바르게 설정되었는지 확인합니다. echo %Environmental Variable% 실행합니다. 예를 들어 특정 환경 변수에 대해 설정된 경로를 확인하려면 echo %BAZEL_VC% 실행합니다.

Python 경로 설정 문제 tensorflow:issue#59943 , tensorflow:issue#9436 , tensorflow:issue#60083

set PATH=path/to/python;%PATH% # [e.g. (C:/Python311)]
set PATH=path/to/python/Scripts;%PATH% # [e.g. (C:/Python311/Scripts)] 
set PYTHON_BIN_PATH=path/to/python_virtualenv/Scripts/python.exe 
set PYTHON_LIB_PATH=path/to/python virtualenv/lib/site-packages 
set PYTHON_DIRECTORY=path/to/python_virtualenv/Scripts 

Bazel/MSVC/CLANG 경로 설정 문제 tensorflow:issue#54578

set BAZEL_SH=C:/msys64/usr/bin/bash.exe 
set BAZEL_VS=C:/Program Files/Microsoft Visual Studio/2022/BuildTools 
set BAZEL_VC=C:/Program Files/Microsoft Visual Studio/2022/BuildTools/VC 
set Bazel_LLVM=C:/Program Files/LLVM (explicitly tell Bazel where LLVM is installed by BAZEL_LLVM, needed while using CLANG)
set PATH=C:/Program Files/LLVM/bin;%PATH% (Optional, needed while using CLANG as Compiler)

선택사항: 빌드 구성

TensorFlow 빌드는 저장소 루트 디렉터리의 .bazelrc 파일로 구성됩니다. ./configure 또는 ./configure.py 스크립트를 사용하여 일반 설정을 조정할 수 있습니다.

구성을 변경해야 하는 경우 저장소의 루트 디렉터리에서 ./configure 스크립트를 실행하세요.

python ./configure.py

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

pip 패키지 빌드 및 설치

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

패키지 빌더 빌드

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

bazel build //tensorflow/tools/pip_package:wheel

CPU 전용

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

MSVC로 구축
bazel build --config=opt --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
CANG으로 빌드

CLANG 컴파일러로 TenorFlow를 빌드하려면 --config= win_clang 사용하세요.

bazel build --config=win_clang --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu

GPU 지원

GPU를 지원하는 TensorFlow 패키지 빌더를 만들려면 다음 안내를 따르세요.

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

유효하지 않거나 오래된 캐시 데이터로 인한 오류를 해결하기 위해 bazel 캐시를 정리하는 명령, --expunge 플래그를 사용한 bazel clean은 파일을 영구적으로 제거합니다.

bazel clean 
bazel clean --expunge  

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 경고 메시지를 억제합니다.

패키지 빌드

pip 패키지를 빌드하려면 --repo_env=WHEEL_NAME 플래그를 지정해야 합니다. 제공된 이름에 따라 패키지가 생성됩니다. 예를 들어:

텐서플로우 CPU 패키지를 빌드하려면:

bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu

nightly 패키지를 빌드하려면 tensorflow 대신 tf_nightly 설정하세요. 예를 들어 CPU nightly 패키지를 빌드하려면:

bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tf_nightly_cpu

결과적으로 생성된 휠은 다음 위치에 위치하게 됩니다.

bazel-bin/tensorflow/tools/pip_package/wheel_house/

패키지 설치

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

pip install bazel-bin/tensorflow/tools/pip_package/wheel_house/tensorflow-version-tags.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 환경 변수에 Bazel 및 Python 설치 디렉터리를 추가합니다. Bazel이 C:\tools\bazel.exe 에 설치되고 Python이 C:\Python\python.exe 에 설치된 경우 다음을 사용하여 PATH 설정합니다.

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

GPU 지원을 위해 $PATH 에 CUDA 및 cuDNN bin 디렉터리를 추가하세요.

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.17.0 3.9-3.12 클랭 17.0.6 바젤 6.5.0
텐서플로우-2.16.1 3.9-3.12 클랭 17.0.6 바젤 6.5.0
텐서플로우-2.15.0 3.9-3.11 MSVC 2019 바젤 6.1.0
텐서플로우-2.14.0 3.9-3.11 MSVC 2019 바젤 6.1.0
텐서플로우-2.12.0 3.8-3.11 MSVC 2019 바젤 5.3.0
텐서플로우-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.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