[업데이트 1] bazel 및 Python 3.6을 사용하여 소스 코드에서 Windows 용 TensorFlow GPU / CPU를 빌드하고 설치하는 방법

이것은 이전 이야기에 대한 업데이트입니다. 새로운 기능 :
- 텐서 플로우 v1.11
- CUDA v10.0
- cuDNN v7.3
공식 사이트에 가이드가 있습니다. 매우 포괄적이지는 않지만 때로는 유용합니다.
개요
- Windows 용 Git 설치
- Bazel 설치
- MSYS2 x64 및 명령 행 도구 설치
- Visual Studio 2015 빌드 도구를 포함한 Visual Studio 2017 빌드 도구 설치
- Python 3.6 64 비트 설치
- NVIDIA CUDA 10.0 및 cuDNN 7.3 설치 (GPU 가속 용)
- 빌드 환경 구성
- TensorFlow v1.11 소스 코드 복제 및 필수 패치 적용
- 빌드 매개 변수 구성
- 소스에서 TensorFlow 빌드
- Python 3.6 용 TensorFlow 휠 파일 생성
- Python 3.6 용 TensorFlow 휠 파일 설치 및 결과 확인
1 단계 : Windows 용 Git 설치
Git for Windows를 다운로드하여 설치하십시오. 내가 여기 가져가 git.exe에 대한 경로가 % PATH % 환경 변수에 추가되었는지 확인하십시오. 나는 Git을
C : \ Bin \ Git
이 튜토리얼의 폴더.
2 단계 : MSYS2 x64 및 명령 줄 도구 설치
여기에서 64 비트 배포판을 다운로드하여 설치하십시오. Bazel은 grep, patch, unzip 및 Unix-tools의 다른 포트를 사용하여 소스를 빌드합니다. 각각에 대해 독립 실행 형 바이너리를 찾을 수는 있지만 MSYS2 번들을 사용하는 것이 좋습니다. 나는 그것을 설치
C : \ Bin \ msys64
이 튜토리얼의 폴더. 도구가있는 폴더를 % PATH % 환경 변수에 추가해야합니다. 제 경우에는“C : \ Bin \ msys64 \ usr \ bin”입니다.
시작 메뉴에서 "MSYS2 MinGW 64 비트"바로 가기를 시작하십시오. 다음 명령을 실행하여 업데이트하십시오 (“MSYS2 MinGW 64 비트”가 다시 시작되면 다시 시작하십시오).
팩맨-수
그런 다음 다음을 실행하십시오.
팩맨-수
빌드 도구는 빌드에 필요합니다.
팩맨 -S 패치 압축 해제
“exit”명령으로“MSYS2 MinGW 64 비트”쉘을 닫습니다. 더 이상 필요 없습니다.
3 단계 : Visual Studio 2015 빌드 도구를 포함한 Visual Studio 2017 빌드 도구 설치
TensorFlow v1.11을 빌드하려면 Visual Studio 2017 빌드 도구에서“데스크탑 용 VC ++ 2015.3 v14.00 (v140) 툴셋”을 설치해야합니다.

4 단계 : Bazel 설치
최신 바젤을 다운로드하십시오. bazel-
bash 위치에 BAZEL_SH 글로벌 환경 변수를 추가하십시오. 내 길은
C : \ Bin \ msys64 \ usr \ bin \ bash.exe
“데스크탑 용 VC ++ 2015.3 v14.00 (v140) 툴셋”툴 체인 위치에 BAZEL_VC 글로벌 환경 변수를 추가하십시오.
C : \ 프로그램 파일 (x86) \ Microsoft Visual Studio 14.0 \ VC
5 단계 : Python 3.6 64 비트 설치
TensorFlow는 Python 3.7을 지원하지 않으므로 3.6 버전을 설치해야합니다.
TensorFlow v1.11이 Anaconda / Miniconda를 더 이상 빌드하도록 지원하지 않는 것 같습니다. 이상한 오류가 발생합니다. 그래서 파이썬 가상 환경을 빌드에 사용합니다.
Python 3.6은 여기에서 다운로드 할 수 있습니다. 설치하고 python.exe의 위치를 % PATH % 변수에 추가하십시오.
6 단계 : NVIDIA CUDA 10.0 및 cuDNN 7.3 설치 (GPU 가속 용)
이 섹션은 CUDA를 지원하는 NVIDIA 그래픽 카드가있는 경우에 해당됩니다. 그렇지 않으면이 섹션을 건너 뛰십시오.
도움이 필요하면 CUDA의 단계별 설치를 참조하십시오. 해당 가이드를 복사하여 붙여 넣지 만 세부 정보를 잘라냅니다.
https://developer.nvidia.com/cuda-downloads로 이동하여 Windows 용 CUDA 10.0 설치 프로그램 [사용자 버전]을 다운로드하십시오. 나에게 버전은 Windows 10입니다.
기본 설정으로 기본 위치에 설치하지만 VisualStudio 통합 옵션을 선택 취소하십시오. 필요한 경우 GPU 드라이버를 업데이트하고 재부팅합니다.
실행 (Win + R) cmd로 이동하십시오.
다음 명령은 nvcc 버전을 확인하고 경로 환경 변수에 설정되어 있는지 확인합니다.
nvcc-버전
다음 https://developer.nvidia.com/cudnn으로 이동하십시오 (회원 자격 필요).
로그인 후 다음을 다운로드하십시오.
Windows 용 cuDNN v7.3.1 라이브러리 [사용자 버전] Windows 10. 다운로드 한 폴더로 이동하여 zip 파일을 추출하십시오.
압축이 풀린 폴더로 이동하여 cuda 폴더 (예 : bin, include, lib)에서 모든 파일과 폴더를 복사하고 "C : \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0"에 붙여 넣습니다.
마지막 단계는 "C : \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64"를 % PATH % 환경 변수에 추가하는 것입니다.
7 단계 : 빌드 환경 구성
시작 메뉴에서 x64 용 VC ++ 2015 셸 (“VS2015 x64 기본 도구 명령 프롬프트”바로 가기)을 시작합니다.
다음으로 Python 환경을 생성, 활성화 및 구성해야합니다. 아래의“VS2015 x64 기본 도구 명령 프롬프트”셸 명령 내에서 실행하십시오 (위치에 따라 올바른 경로).
pip3 설치 -U virtualenv
virtualenv-시스템 사이트 패키지 C : \ Users \ amsokol \ tensorflow-v1.11
C : \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ activate.bat
셸은 명령이 적용된 후 다음과 같아야합니다.

필수 Python 패키지를 설치하십시오.
pip3 여섯 numpy 휠 설치
pip3 설치 keras_applications == 1.0.5 --no-deps
pip3 설치 keras_preprocessing == 1.0.3 --no-deps
“pip3 list”를 실행하여 필수 패키지가 설치되었는지 확인하십시오.

지금은 여기까지입니다. 껍질을 닫지 마십시오.
8 단계 : TensorFlow 소스 코드 복제 및 필수 패치 적용
우선 TensorFlow 소스 코드를 복제 할 폴더를 선택해야합니다. 내 경우에는“C : \ Users \ amsokol \ Development \ tensorflow-build”입니다. 쉘로 돌아가서 다음을 실행하십시오.
cd C : \ Users \ amsokol \ Development \ tensorflow-build
복제 소스 코드 :
자식 클론 https://github.com/tensorflow/tensorflow
1.11 버전의 최신 체크 아웃 :
CD 텐서 플로우
자식 체크 아웃 v1.11.0
이제 소스가 있습니다.
고유 타사 라이브러리에 버그가 있습니다. 빌드하기 전에 수정해야합니다.
- 여기에 패치를 다운로드하고 파일 이름 eigen_half.patch를 써드 파티 폴더에 저장하십시오.
- patch_file = clean_dep (“// third_party : eigen_half.patch”)를 eigen_archive 섹션에 tensorflow / workspace.bzl 파일에 추가하십시오.
tensorflow / workspace.bzl 파일의 결과는 다음과 같아야합니다.
... tf_http_archive ( 이름 = "고유 _ 아카이브", urls = [ "https://mirror.bazel.build/bitbucket.org/eigen/eigen/get/fd6845384b86.tar.gz", "https://bitbucket.org/eigen/eigen/get/fd6845384b86.tar.gz", ], sha256 = "d956415d784fa4e42b6a2a45c32556d6aec9d0a3d8ef48baee2522ab762556a9", strip_prefix = "고유-고유 -fd6845384b86", build_file = clean_dep ( "// third_party : eigen.BUILD"), patch_file = clean_dep ( "// third_party : eigen_half.patch"), ) ...
끝난.
9 단계 : 빌드 매개 변수 구성
소스 코드 루트 폴더에 있는지 확인하십시오.
cd C : \ 사용자 \ amsokol \ 개발 \ tensorflow-build \ tensorflow
구성자를 실행하십시오.
파이썬 ./configure.py
먼저 파이썬의 위치를 묻습니다. 기본값을 유지하려면 Enter를 누르십시오.
... bazel 0.17.2가 설치되었습니다.
파이썬의 위치를 지정하십시오. [기본값은 C : \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe입니다.] :
그런 다음 Python 라이브러리 경로의 위치를 묻습니다. 기본값을 유지하려면 Enter를 누르십시오.
역 추적 (가장 최근 통화) : <모듈>의 파일 "<문자열>", 1 행 AttributeError : 'site'모듈에 'getsitepackages'속성이 없습니다. 가능한 파이썬 라이브러리 경로를 찾았습니다. C : \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site- 패키지 사용할 Python 라이브러리 경로를 입력하십시오. 기본값은 [C : \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages]입니다.
그런 다음 nGraph 지원에 대해 묻습니다. 우리는 필요하지 않습니다. “n”을 누릅니다 :
nGraph를 지원하는 TensorFlow를 구축 하시겠습니까? [y / N] : n TensorFlow에 대해 nGraph 지원이 활성화되지 않습니다.
그런 다음 CUDA 지원에 대해 묻습니다.
CUDA 지원으로 TensorFlow를 빌드 하시겠습니까? [y / N] :
GPU 가속을 사용하려면 "y"로 대답하십시오. 그렇지 않으면 "n"을 누르십시오.
CUDA 컨 피규 레이터에 대해 예인 경우 추가 질문을합니다.
CUDA SDK 버전으로 답변 10.0 :
사용하려는 CUDA SDK 버전을 지정하십시오. [CUDA 9.0을 기본값으로 비워 두십시오] : 10.0
기본 CUDA 툴킷 위치를 유지하려면 Enter를 누르십시오.
CUDA 10.0 툴킷이 설치된 위치를 지정하십시오. 자세한 내용은 README.md를 참조하십시오. [기본값은 C : / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0] :
cuDNN 버전으로 답변 7.3.1 :
사용하려는 cuDNN 버전을 지정하십시오. [cuDNN 7.0을 기본값으로 비워 두십시오] : 7.3.1
기본 cuDNN 라이브러리 위치를 유지하려면 Enter를 누르십시오.
cuDNN 7 라이브러리가 설치된 위치를 지정하십시오. 자세한 내용은 README.md를 참조하십시오. [기본값은 C : / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0] :
다음 질문은 CUDA 컴퓨팅 기능에 대한 것입니다. https://developer.nvidia.com/cuda-gpus에서 장치의 계산 기능을 찾을 수 있습니다. GTX 1070을 사용하고 있는데 6.1입니다.
쉼표로 구분 된 Cuda 계산 기능 목록을 지정하십시오. https://developer.nvidia.com/cuda-gpus에서 장치의 계산 기능을 찾을 수 있습니다. 각 추가 컴퓨팅 기능은 빌드 시간과 이진 크기를 크게 증가시킵니다. [기본값 : 3.5,7.0] : 6.1
다음 질문은 최적화 플래그를 설정하는 것입니다. 6 세대 Intel CPU가 있는데 / arch : AVX2에 응답합니다.
bazel 옵션 "--config = opt"가 지정된 경우 컴파일 중에 사용할 최적화 플래그를 지정하십시오. [기본값은 / arch : AVX] : / arch : AVX2
마지막 질문은 고유에 관한 것입니다. “y”라고 대답하십시오. 컴파일 시간이 크게 줄어 듭니다.
컴파일 시간을 줄이기 위해 일부 C ++ 컴파일에 대해 고유 한 강력한 인라인을 재정의 하시겠습니까? [Y / n] : y 고유의 강력한 인라인이 재정의되었습니다.
구성이 완료되었습니다. 구축 할 수 있습니다.
10 단계 : 소스에서 TensorFlow 빌드
소스 코드 루트 폴더에 있는지 확인하십시오.
cd C : \ 사용자 \ amsokol \ 개발 \ tensorflow-build \ tensorflow
빌드하는 데 시간이 오래 걸립니다. Windows Defender Antivirus 실시간 보호를 포함한 바이러스 백신 소프트웨어를 끄는 것이 좋습니다.
빌드를 실행하십시오.
bazel build --config = opt // tensorflow / tools / pip_package : build_pip_package
앉아서 잠시 휴식을 취하십시오.
11 단계 : Python 3.6 용 TensorFlow 휠 파일 생성
Python wheel 파일을 작성하려면 명령을 실행하십시오.
mkdir .. \ out
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out
실패합니다 :

알려진 문제가 있습니다. “bazel-bin \ tensorflow \ tools \ pip_package”폴더를보십시오. 길이가 "simple_console_for_windows.zip"인 파일이 포함되어 있습니다. 이게 문제 야. Bazel에는 2GB 파일에 실패하는 32 비트 zip 유틸리티가 포함되어 있습니다. 자세한 내용과 해결 방법은 링크를 참조하십시오.
- https://github.com/tensorflow/tensorflow/issues/20332
- https://stackoverflow.com/questions/52394305/creating-pip-package-for-tensorflow-with-gpu-support-results-in-0-byte-simple-co
문제를 해결하는 단계가 있습니다.
cd. \ bazel-bin \ tensorflow \ tools \ pip_package
“simple_console_for_windows.zip-0.params”파일을 열고“mnist.zip”이 포함 된 행을 제거하십시오.
...
runfiles / org_tensorflow / tensorflow / contrib / eager / python / examples / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / contrib / eager / python / examples / gan / mnist.zip
...
도움이됩니다. zip 파일로 다른 줄을 제거하는 데 도움이되지 않는 경우 (자세한 내용 참조). 이 활동의 목적은“simple_console_for_windows.zip”길이를 2GB보다 작게 만드는 것입니다.
빈“simple_console_for_windows.zip”파일을 삭제하십시오.
다음으로 홈 폴더를보십시오. “_bazel_
cd C : \ 사용자 \ amsokol \ _bazel_amsokol \ lx6zoh4k \ execroot \ org_tensorflow
“simple_console_for_windows.zip”파일을 수동으로 작성하십시오.
external \ bazel_tools \ tools \ zip \ zipper \ zipper.exe vcC bazel-out / x64_windows-opt / bin / tensorflow / tools / pip_package / simple_console_for_windows.zip @ bazel-out / x64_windows-opt / bin / tensorflow / tools / pip_package / simple_console_for_windows.zip-0.params
Python wheel 파일을 작성하려면 명령을 실행하십시오.
cd C : \ 사용자 \ amsokol \ 개발 \ tensorflow-build \ tensorflow
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out
“.. \ out”폴더에 tensorflow-1.11.0-cp36-cp36m-win_amd64.whl 파일을 생성합니다.
12 단계 : Python 3.6 용 TensorFlow 휠 파일 설치 및 결과 확인
Python wheel 파일을 설치하려면 명령을 실행하십시오.
pip3 설치 .. \ out \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl
"tensorflow"디렉토리를 그대로 두십시오 (Tensoflow 소스 코드 폴더 내에서 Python 스크립트를 실행할 때 오류가 발생하는 경우가 있습니다. 이유를 모르겠습니다).
cd ..
다운로드 스크립트를 여기에서 확인하거나 복사하여 붙여 넣어 실행하려면 :
tensorflow를 tf로 가져 오기 hello = tf.constant ( '안녕하세요, 텐서 플로우!') 세션 = tf.Session () print (session.run (hello))
시스템이 다음을 출력하면 모든 것이 정상입니다.
안녕하세요, 텐서 플로우!
내 출력 :

이제 Windows 시스템에 TensorFlow를 성공적으로 설치했습니다.
그것이 효과가 있다면 아래 의견에 알려주십시오. 또는 오류가있는 경우 감사!