TensorFlow pip 패키지를 소스 코드에서 빌드하고 Windows에 설치합니다.
Windows 설치 프로그램
Windows 개발 환경을 구성하려면 다음 빌드 도구를 설치하십시오.
Python과 TensorFlow 패키지 종속성을 설치하세요.
Windows용 Python 3.9 이상 64비트 버전을 설치하세요. pip를 선택적 기능으로 선택하고 %PATH% 환경 변수에 추가하세요.
TensorFlow pip 패키지 종속성을 설치하세요:
pip3 install -U pippip3 install -U six numpy wheel packagingpip3 install -U keras_preprocessing --no-deps
필요한 패키지는 setup.py 파일의 REQUIRED_PACKAGES 섹션에 나열되어 있습니다.
Bazel을 설치하세요
TensorFlow 컴파일에 사용되는 빌드 도구인 Bazel을 설치하세요 . Bazel 버전은 Windows용 테스트된 빌드 구성을 참조하세요. C++ 빌드를 위해 Bazel을 구성하세요.
Bazel 실행 파일의 위치를 %PATH% 환경 변수에 추가하십시오.
MSYS2를 설치하세요
TensorFlow 빌드에 필요한 바이너리 도구를 설치하려면 MSYS2를 설치하세요 . MSYS2가 C:\msys64 에 설치된 경우, %PATH% 환경 변수에 C:\msys64\usr\bin 추가하세요. 그런 다음 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 에 포함되어 있지만 별도로 설치할 수도 있습니다.
- Visual Studio 다운로드 페이지 로 이동하세요.
- Visual Studio용 도구 또는 기타 도구, 프레임워크 및 재배포 가능 패키지를 선택하십시오.
- 다운로드 및 설치:
- Visual Studio 2022용 빌드 도구
- Visual Studio 2022용 Microsoft Visual C++ 재배포 가능 패키지
LLVM을 설치하세요
- LLVM 다운로드 페이지 로 이동하세요.
- Windows와 호환되는 LLVM을 다운로드하여 C:/Program Files/LLVM 경로에 설치하십시오. 예: LLVM-17.0.6-win64.exe
GPU 지원 설치(선택 사항)
TensorFlow를 GPU에서 실행하는 데 필요한 드라이버 및 추가 소프트웨어를 설치하려면 Windows GPU 지원 가이드를 참조하십시오.
TensorFlow 소스 코드를 다운로드하세요
Git을 사용하여 TensorFlow 저장소를 복제하세요( git MSYS2에 포함되어 있습니다).
git clone https://github.com/tensorflow/tensorflow.gitcd 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 저장소가 기본적으로 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
CLANG으로 빌드하세요
TenorFlow를 CLANG 컴파일러로 빌드하려면 `--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 캐시를 정리하는 명령어입니다. `bazel clean` 명령어에 `--expunge` 플래그를 사용하면 캐시된 파일이 영구적으로 삭제됩니다.
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 지원을 포함하여 빌드하는 경우, nvcc 경고 메시지를 표시하지 않으려면 --copt=-nvcc_options=disable-warnings 추가하십시오.
패키지를 빌드합니다
pip 패키지를 빌드하려면 `--repo_env=WHEEL_NAME` 플래그를 지정해야 합니다. 제공된 이름에 따라 패키지가 생성됩니다. 예를 들면 다음과 같습니다.
TensorFlow CPU 패키지를 빌드하려면 다음 단계를 따르세요.
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
나이틀리 패키지를 빌드하려면 tensorflow 대신 tf_nightly 설정하세요. 예를 들어 CPU 나이틀리 패키지를 빌드하려면 다음과 같이 설정합니다.
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는 유닉스 경로처럼 보이는 인수를 자동으로 윈도우 경로로 변환하는데, 이는 bazel 에서는 제대로 작동하지 않습니다. (레이블 //path/to:bin 슬래시로 시작하기 때문에 유닉스 절대 경로로 간주됩니다.)
export MSYS_NO_PATHCONV=1export MSYS2_ARG_CONV_EXCL="*"
PATH를 설정하세요
Bazel과 Python의 설치 디렉토리를 $PATH 환경 변수에 추가하세요. Bazel이 C:\tools\bazel.exe 에, Python이 C:\Python\python.exe 에 설치된 경우 다음과 같이 PATH 설정하세요.
# Use Unix-style with ':' as separatorexport PATH="/c/tools:$PATH"export PATH="/c/path/to/Python:$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.21.0 | 3.10-3.13 | 클랭 18.1.4 | 바젤 7.4.1 |
| 텐서플로우-2.20.0 | 3.9-3.13 | 클랭 18.1.4 | 바젤 7.4.1 |
| 텐서플로우-2.19.0 | 3.9-3.12 | 클랭 18.1.4 | 바젤 6.5.0 |
| 텐서플로우-2.18.0 | 3.9-3.12 | 클랭 17.0.6 | 바젤 6.5.0 |
| 텐서플로우-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 | CMake v3.6.3 |
| 텐서플로우-1.9.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 |
| 텐서플로우-1.8.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 |
| 텐서플로우-1.7.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 |
| 텐서플로우-1.6.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 |
| 텐서플로우-1.5.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 |
| 텐서플로우-1.4.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 |
| 텐서플로우-1.3.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 |
| 텐서플로우-1.2.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 |
| 텐서플로우-1.1.0 | 3.5 | MSVC 2015 업데이트 3 | CMake v3.6.3 |
| 텐서플로우-1.0.0 | 3.5 | MSVC 2015 업데이트 3 | CMake v3.6.3 |
GPU
| 버전 | 파이썬 버전 | 컴파일러 | 빌드 도구 | cuDNN | 쿠다 |
|---|---|---|---|---|---|
| 텐서플로우_gpu-2.10.0 | 3.7-3.10 | MSVC 2019 | 바젤 5.1.1 | 8.1 | 11.2 |
| 텐서플로우_GPU-2.9.0 | 3.7-3.10 | MSVC 2019 | 바젤 5.0.0 | 8.1 | 11.2 |
| 텐서플로우_GPU-2.8.0 | 3.7-3.10 | MSVC 2019 | 바젤 4.2.1 | 8.1 | 11.2 |
| 텐서플로우_GPU-2.7.0 | 3.7-3.9 | MSVC 2019 | 바젤 3.7.2 | 8.1 | 11.2 |
| 텐서플로우_GPU-2.6.0 | 3.6-3.9 | MSVC 2019 | 바젤 3.7.2 | 8.1 | 11.2 |
| 텐서플로우_GPU-2.5.0 | 3.6-3.9 | MSVC 2019 | 바젤 3.7.2 | 8.1 | 11.2 |
| 텐서플로우_GPU-2.4.0 | 3.6-3.8 | MSVC 2019 | 바젤 3.1.0 | 8.0 | 11.0 |
| 텐서플로우_GPU-2.3.0 | 3.5-3.8 | MSVC 2019 | 바젤 3.1.0 | 7.6 | 10.1 |
| 텐서플로우_GPU-2.2.0 | 3.5-3.8 | MSVC 2019 | 바젤 2.0.0 | 7.6 | 10.1 |
| 텐서플로우_GPU-2.1.0 | 3.5-3.7 | MSVC 2019 | 바젤 0.27.1-0.29.1 | 7.6 | 10.1 |
| 텐서플로우_GPU-2.0.0 | 3.5-3.7 | MSVC 2017 | 바젤 0.26.1 | 7.4 | 10 |
| 텐서플로우_gpu-1.15.0 | 3.5-3.7 | MSVC 2017 | 바젤 0.26.1 | 7.4 | 10 |
| 텐서플로우_gpu-1.14.0 | 3.5-3.7 | MSVC 2017 | 바젤 0.24.1-0.25.2 | 7.4 | 10 |
| 텐서플로우_gpu-1.13.0 | 3.5-3.7 | MSVC 2015 업데이트 3 | 바젤 0.19.0-0.21.0 | 7.4 | 10 |
| 텐서플로우_gpu-1.12.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | 바젤 0.15.0 | 7.2 | 9.0 |
| 텐서플로우_gpu-1.11.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | 바젤 0.15.0 | 7 | 9 |
| 텐서플로우_gpu-1.10.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 | 7 | 9 |
| 텐서플로우_GPU-1.9.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 | 7 | 9 |
| 텐서플로우_GPU-1.8.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 | 7 | 9 |
| 텐서플로우_GPU-1.7.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 | 7 | 9 |
| 텐서플로우_GPU-1.6.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 | 7 | 9 |
| 텐서플로우_GPU-1.5.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 | 7 | 9 |
| 텐서플로우_GPU-1.4.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 | 6 | 8 |
| 텐서플로우_GPU-1.3.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 | 6 | 8 |
| 텐서플로우_GPU-1.2.0 | 3.5-3.6 | MSVC 2015 업데이트 3 | CMake v3.6.3 | 5.1 | 8 |
| 텐서플로우_gpu-1.1.0 | 3.5 | MSVC 2015 업데이트 3 | CMake v3.6.3 | 5.1 | 8 |
| 텐서플로우_gpu-1.0.0 | 3.5 | MSVC 2015 업데이트 3 | CMake v3.6.3 | 5.1 | 8 |