[Ενημέρωση 2] Πώς να δημιουργήσετε και να εγκαταστήσετε το TensorFlow GPU / CPU για Windows από πηγαίο κώδικα χρησιμοποιώντας βάση και Python 3.6

Αυτή είναι μια ενημέρωση για την προηγούμενη ιστορία μου. Τι νέο υπάρχει εδώ:

  • TensorFlow v1.12
  • CUDA v10.0
  • cuDNN v7.4
  • bazel 0.19.0
  • Apache Ignite υποστήριξη

Υπάρχει οδηγός σε επίσημο site. Δεν είναι πολύ περιεκτικό αλλά πολύ χρήσιμο.

Περίληψη

  1. Εγκαταστήστε το Git για Windows
  2. Εγκαταστήστε το Bazel
  3. Εγκαταστήστε το MSYS2 x64 και τα εργαλεία της γραμμής εντολών
  4. Εγκαταστήστε εργαλεία δημιουργίας του Visual Studio 2017, συμπεριλαμβανομένων των Εργαλείων δημιουργίας Visual Studio 2015
  5. Εγκαταστήστε Python 3.6 64-bit
  6. Εγκαταστήστε NVIDIA CUDA 10.0 και cuDNN 7.4 (για επιτάχυνση GPU)
  7. Ρυθμίστε το περιβάλλον δημιουργίας
  8. Κλωνοποιήστε τον πηγαίο κώδικα TensorFlow v1.12 και εφαρμόστε την υποχρεωτική ενημερωμένη έκδοση κώδικα
  9. Διαμορφώστε τις παραμέτρους δημιουργίας
  10. Κατασκευάστηκε TensorFlow από πηγές
  11. Δημιουργήστε το αρχείο τροχού TensorFlow για το Python 3.6
  12. Εγκαταστήστε το αρχείο TensorFlow για το Python 3.6 και ελέγξτε το αποτέλεσμα

Βήμα 1: Εγκατάσταση Git για Windows

Κατεβάστε και εγκαταστήστε το Git για Windows. Το πάω εδώ. Βεβαιωθείτε ότι η διαδρομή προς το git.exe προστίθεται στην μεταβλητή περιβάλλοντος% PATH%. Εγκαθιστώ το Git στο

C: \ Bin \ Git

φάκελο για αυτό το σεμινάριο.

Βήμα 2: Εγκατάσταση του MSYS2 x64 και των εργαλείων γραμμής εντολών

Κάντε λήψη και εγκατάσταση της διανομής 64-bit εδώ. Το Bazel χρησιμοποιεί grep, patch, unpipand άλλες θύρες του Unix-tools για να χτίσει πηγές. Μπορείτε να προσπαθήσετε να βρείτε ανεξάρτητα δυαδικά αρχεία για κάθε ένα από αυτά, αλλά προτιμώ να χρησιμοποιήσετε το πακέτο MSYS2. Το εγκαθιστώ στο

C: \ Bin \ msys64

φάκελο για αυτό το σεμινάριο. Πρέπει να προσθέσετε φάκελο με εργαλεία σε μεταβλητή περιβάλλοντος% PATH%. Είναι "C: \ Bin \ msys64 \ usr \ bin" στην περίπτωσή μου.

Ξεκινήστε τη συντόμευση "MSYS2 MinGW 64-bit" από το μενού "Έναρξη". Εκτελέστε την ακόλουθη εντολή για ενημέρωση (κάντε επανεκκίνηση του "MSYS2 MinGW 64-bit" εάν το ζητάει):

pacman -Syu

Στη συνέχεια εκτελέστε:

pacman -Su

Τα εργαλεία εγκατάστασης είναι απαραίτητα για την κατασκευή:

pacman -S patch unzip

Κλείστε το κέλυφος "MSYS2 MinGW 64-bit" από την εντολή "έξοδος". Δεν το χρειαζόμαστε πια.

Βήμα 3: Εγκαταστήστε εργαλεία δημιουργίας του Visual Studio 2017, συμπεριλαμβανομένων των εργαλείων δημιουργίας Visual Studio 2015

Πρέπει να εγκαταστήσουμε το "εργαλείο VC ++ 2015.3 v14.00 (v140) για επιφάνεια εργασίας" από το Visual Studio 2017 Build Tools για την κατασκευή του TensorFlow v1.11:

Βήμα 4: Εγκατάσταση του Bazel

Κάντε λήψη της τελευταίας Βασιλείας εδώ. Αναζητήστε το αρχείο bazel- -windows-x86_64.exe. Έχω δοκιμάσει αυτό το σεμινάριο με βάση 0.19.0. Μετονομάστε το δυαδικό στο bazel.exe και μετακινήστε το σε έναν κατάλογο στο% PATH%, ώστε να μπορείτε να εκτελέσετε το Bazel πληκτρολογώντας τη βάση σε οποιοδήποτε κατάλογο. Δείτε λεπτομέρειες για την εγκατάσταση του Bazel για Windows x64 σε περίπτωση προβλημάτων.

Προσθέστε την παγκόσμια μεταβλητή περιβάλλοντος BAZEL_SH για την τοποθεσία bash. Το μονοπάτι μου είναι

C: \ Bin \ msys64 \ usr \ bin \ bash.exe

Προσθέστε την παγκόσμια μεταβλητή περιβάλλοντος BAZEL_VC για το "VC ++ 2015.3 v14.00 (v140) σύνολο εργαλείων για επιφάνεια εργασίας" Τοποθεσία αλυσίδας εργαλείων:

C: \ Αρχεία προγράμματος (x86) \ Microsoft Visual Studio 14.0 \ VC

Βήμα 5: Εγκαταστήστε Python 3.6 64-bit

Το TensorFlow δεν υποστηρίζει το Python 3.7, οπότε πρέπει να εγκαταστήσετε την έκδοση 3.6.
Anaconda / Minicondais που δεν υποστηρίζουν επίσημα την κατασκευή από πηγές. Γι 'αυτό χρησιμοποιώ εικονικό περιβάλλον Python για την κατασκευή.

Το Python 3.6 είναι διαθέσιμο για λήψη από εδώ. Εγκαταστήστε το και προσθέστε την τοποθεσία στο python.exe στη μεταβλητή% PATH%.

Βήμα 6: Εγκαταστήστε NVIDIA CUDA 10.0 και cuDNN 7.4 (για επιτάχυνση GPU)

Αυτή η ενότητα είναι πραγματική αν διαθέτετε κάρτα γραφικών NVIDIA που υποστηρίζει CUDA. Διαφορετικά παραλείψτε αυτήν την ενότητα.
Δείτε την εγκατάσταση CUDA βήμα προς βήμα, εάν χρειάζεστε βοήθεια. Αντιγράφω-επικολλήστε αυτόν τον οδηγό αλλά κόψτε μερικές λεπτομέρειες.

Μεταβείτε στη διεύθυνση https://developer.nvidia.com/cuda-downloads και κάντε λήψη του CUDA 10.0 Installer για Windows [έκδοση]. Για μένα, η έκδοση είναι τα Windows 10.

Εγκαταστήστε την στην προεπιλεγμένη θέση με τις προεπιλεγμένες ρυθμίσεις αλλά καταργήστε την επιλογή της δυνατότητας ενσωμάτωσης VisualStudio. Θα ενημερώσει το πρόγραμμα οδήγησης της μονάδας GPU εάν απαιτείται και θα επανεκκινήσει.

Μεταβείτε στην εκτέλεση (Win + R) πληκτρολογήστε cmd

Η ακόλουθη εντολή θα ελέγξει την έκδοση nvcc και θα εξασφαλίσει ότι έχει οριστεί σε μεταβλητή περιβάλλοντος διαδρομής.

nvcc --version

Στη συνέχεια, μεταβείτε στη διεύθυνση https://developer.nvidia.com/cudnn (απαιτείται μέλος).

Μετά τη σύνδεση, κάντε λήψη των εξής:

cuDNN v7.4.1 Βιβλιοθήκη για Windows [η έκδοση σας] για μένα Windows 10. Μεταβείτε στον φάκελο που έχετε κατεβάσει και εξαγάγετε το αρχείο zip.

Μεταβείτε στο φάκελο που εξάγεται και αντιγράψτε όλα τα αρχεία και το φάκελο από το φάκελο cuda (π.χ. bin, include, lib) και επικολλήστε το σε "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0".

Τελικό βήμα εδώ είναι να προσθέσετε στο% PATH% μεταβλητή περιβάλλοντος "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64".

Βήμα 7: Ρύθμιση περιβάλλοντος δημιουργίας

Ξεκινήστε το κέλυφος VC ++ 2015 για το x64 (συντόμευση "VS2015 x64 Native Tools Command Prompt") από το μενού "Έναρξη".

Στη συνέχεια θα πρέπει να δημιουργήσετε, να ενεργοποιήσετε και να ρυθμίσετε το περιβάλλον Python. Εκτελέστε εντολές "shell VS2015 x64 Native Tools Command Prompt" παρακάτω (σωστές διαδρομές ανάλογα με τις τοποθεσίες σας).

pip3 install -U virtualenv
virtualalenv - πακέτα ιστότοπου C: \ Users \ amsokol \ tensorflow-v1.12
C: \ Χρήστες \ amsokol \ tensorflow-v1.12 \ Scripts \ activate.bat

Το κέλυφος θα πρέπει να μοιάζει με αυτό αφού εφαρμοστούν οι εντολές:

Εγκατάσταση υποχρεωτικών πακέτων Python:

pip3 εγκαταστήστε έξι τρομερό τροχό
pip3 install keras_applications == 1.0.5 - όχι-deps
pip3 install keras_preprocessing == 1.0.3 - όχι-deps

Εκτελέστε "pip3 list" για να βεβαιωθείτε ότι είναι εγκατεστημένα τα υποχρεωτικά πακέτα:

Αυτα για τωρα. Μην κλείνετε το κέλυφος.

Βήμα 8: Κλώση πηγαίου κώδικα TensorFlow και εφαρμογή υποχρεωτικής ενημερωμένης έκδοσης κώδικα

Πρώτα απ 'όλα πρέπει να επιλέξετε φάκελο όπου να κλωνοποιήσετε τον πηγαίο κώδικα TensorFlow. Είναι "C: \ Users \ amsokol \ Development \ tensorflow-build" στην περίπτωσή μου. Επιστροφή στο κέλυφος και εκτέλεση:

cd C: \ Users \ amsokol \ Ανάπτυξη \ tensorflow-build

Κλώνος πηγαίου κώδικα:

git κλώνος https://github.com/tensorflow/tensorflow

Έκδοση τελευταίας έκδοσης 1.12:

cd tensorflow
git checkout v1.12.0

Τώρα έχουμε πηγές.

Υπάρχει σφάλμα στην ιδιωτική βιβλιοθήκη τρίτου μέρους. Πρέπει να το διορθώσουμε πριν χτίσουμε.
  • Κάντε λήψη της ενημερωμένης έκδοσης κώδικα και αποθηκεύστε με το όνομα αρχείου eigen_half.patch στο φάκελο τρίτου_παρουσίας
  • Προσθέστε patch_file = clean_dep ("// third_party: eigen_half.patch"), γραμμή προς eigen_archive στο αρχείο tensorflow / workspace.bzl.

Αποτέλεσμα στο αρχείο tensorflow / workspace.bzl θα πρέπει να είναι έτσι:

...
tf_http_archive (
    όνομα = "eigen_archive",
    build_file = clean_dep ("// third_party: eigen.BUILD"),
    sha256 = "d956415d784fa4e42b6a2a45c32556d6aec9d0a3d8ef48baee2522ab762556a9",
    strip_prefix = "eigen-eigen-fd6845384b86",
    urls = [
"https://mirror.bazel.build/bitbucket.org/eigen/eigen/get/fd6845384b86.tar.gz",
"https://bitbucket.org/eigen/eigen/get/fd6845384b86.tar.gz",
    ],
    patch_file = clean_dep ("// third_party: eigen_half.patch"),
)
...

Εγινε.

Βήμα 9: Ρύθμιση παραμέτρων δημιουργίας

Βεβαιωθείτε ότι είμαστε σε ριζικό φάκελο πηγαίου κώδικα:

cd C: \ Users \ amsokol \ Ανάπτυξη \ tensorflow-build \ tensorflow

Εκτέλεση διαμορφωτή:

python ./configure.py

Πρώτα ζητά την τοποθεσία της Python. Πατήστε Enter για να αφήσετε την προεπιλεγμένη τιμή:

...
Έχετε εγκαταστήσει τη βάση 0.19.0.
Προσδιορίστε τη θέση του python. [Το προεπιλεγμένο είναι C: \ Users \ amsokol \ tensorflow-v1.12 \ Scripts \ python.exe]:

Στη συνέχεια, ζητάει θέση των διαδρομών της βιβλιοθήκης της Python. Πατήστε Enter για να αφήσετε την προεπιλεγμένη τιμή:

Traceback (τελευταία τελευταία κλήση):
  Αρχείο "", γραμμή 1, σε 
AttributeError: Η ενότητα 'site' δεν έχει κανένα χαρακτηριστικό 'getsitepackages'
Βρήκαν πιθανές διαδρομές βιβλιοθήκης της Python:
  C: \ Users \ amsokol \ tensorflow-v1.12 \ Lib \ site-πακέτα
Εισαγάγετε την επιθυμητή διαδρομή της βιβλιοθήκης Python για χρήση. Η προεπιλογή είναι [C: \ Users \ amsokol \ tensorflow-v1.12 \ Lib \ site-packages]

Στη συνέχεια, ζητάει την υποστήριξη του Apache Ignite. Πατήστε "y" αν το χρειαστείτε:

Θέλετε να δημιουργήσετε TensorFlow με υποστήριξη Apache Ignite; [Y / n]: y

Στη συνέχεια, ζητά την υποστήριξη του XLA JIT. Πατήστε "n":

Θέλετε να δημιουργήσετε TensorFlow με υποστήριξη XLA JIT; [ν / Ν]: n
Ενεργοποίηση της υποστήριξης XLA JIT αυξάνει το σφάλμα της σύνταξης "C ++ compilation of rule" // tensorflow / compiler / tf2xla: cpu_function_runtime 'απέτυχε'. Δεν έχω βρει ακόμα μια λύση.

Στη συνέχεια, ζητά την υποστήριξη ROCm. Δεν το χρειαζόμαστε αν επιλέξουμε την υποστήριξη CUDA. Πατήστε "n":

Θέλετε να δημιουργήσετε TensorFlow με υποστήριξη ROCm; [ν / Ν]: n

Στη συνέχεια, ρωτά για την υποστήριξη CUDA:

Θέλετε να δημιουργήσετε TensorFlow με υποστήριξη CUDA; [έτος / έτος]:

Απαντήστε "y" εάν πρόκειται να χρησιμοποιήσετε επιτάχυνση GPU. Διαφορετικά πατήστε "n".

Σε περίπτωση Ναι για τον διαμορφωτή CUDA σας ζητούνται επιπλέον ερωτήσεις:
Απάντηση 10.0 ως έκδοση CUDA SDK:
Προσδιορίστε την έκδοση CUDA SDK που θέλετε να χρησιμοποιήσετε. [Αφήστε κενό για προεπιλογή στο CUDA 9.0]: 10.0
Πατήστε Enter για να αφήσετε την προεπιλεγμένη θέση CUDA toolkit:
Καθορίστε τη θέση στην οποία έχει εγκατασταθεί το CUDA 10.0 toolkit. Ανατρέξτε στο README.md για περισσότερες λεπτομέρειες. [Προεπιλογή είναι C: / Αρχεία προγράμματος / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Πατήστε Enter για να αφήσετε προεπιλεγμένο το cuDNN 7:
Προσδιορίστε την έκδοση cuDNN που θέλετε να χρησιμοποιήσετε. [Αφήστε κενό για προεπιλογή στο cuDNN 7]:
Πατήστε Enter για να αφήσετε την προεπιλεγμένη θέση της βιβλιοθήκης cuDNN:
Καθορίστε τη θέση όπου είναι εγκατεστημένη η βιβλιοθήκη cuDNN 7. Ανατρέξτε στο README.md για περισσότερες λεπτομέρειες. [Προεπιλογή είναι C: / Αρχεία προγράμματος / 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 γι 'αυτό απαντώ / αψίδα: AVX2:

Παρακαλούμε καθορίστε τις σημαίες βελτιστοποίησης που θέλετε να χρησιμοποιήσετε κατά τη διάρκεια της μεταγλώττισης, όταν έχει οριστεί η επιλογή "--config = opt" [Default / arc: AVX]: / arch: AVX2

Η τελευταία ερώτηση αφορά τους ιδιοκτήτες. Απάντηση "y". Μειώνει τον χρόνο σύνταξης δραματικά.

Θα θέλατε να αντικαταστήσετε το eigen strong inline για κάποια C ++ compilation για να μειώσετε τον χρόνο σύνταξης; [Y / n]: y
Έντονη ισχυρή inline υπερισχύει.

Η διαμόρφωση ολοκληρώθηκε. Ας οικοδομήσουμε.

Βήμα 10: Δημιουργήστε το TensorFlow από πηγές

Υπάρχει BUG σε βάση 0.19.0. Δείτε εδώ λεπτομέρειες. Για να το διορθώσετε, πρέπει να προσθέσουμε τη συμβολοσειρά "import /tensorflow/tools/bazel.rc" στην κορυφαία γραμμή του (απόκρυψη αρχείου) " /tensorflow/.bazelrc". Στην περίπτωσή μου το αρχείο "C: /Users/amsokol/Development/tensorflow-build/tensorflow/.bazelrc" είναι:
εισαγωγή C: /Users/amsokol/Development/tensorflow-build/tensorflow/tools/bazel.rc
εισαγωγή C: /Users/amsokol/Development/tensorflow-build/tensorflow/.tf_configure.bazelrc

Βεβαιωθείτε ότι είμαστε σε ριζικό φάκελο πηγαίου κώδικα:

cd C: \ Users \ amsokol \ Ανάπτυξη \ tensorflow-build \ tensorflow
Η κατασκευή απαιτεί πολύ χρόνο. Σας συνιστώ να απενεργοποιήσετε το λογισμικό προστασίας από ιούς, συμπεριλαμβανομένης της προστασίας σε πραγματικό χρόνο του Windows Defender Antivirus.

Εκτέλεση εκτέλεσης:

δημιουργία βάσης --config = opt // tensorflow / tools / pip_package: build_pip_package

Καθίστε και χαλαρώστε για κάποιο χρονικό διάστημα.

Βήμα 11: Δημιουργήστε αρχείο τροχού TensorFlow για Python 3.6

Εκτελέστε εντολή για να δημιουργήσετε το αρχείο του Python:

mkdir .. \ out
basel-bin \ tensorflow \ εργαλεία \ pip_package \ build_pip_package .. \ out

Δημιουργεί αρχείο tensorflow-1.12.0-cp36-cp36m-win_amd64.whl στο φάκελο ".. \ out".

Βήμα 12: Εγκαταστήστε το αρχείο TensorFlow για το Python 3.6 και ελέγξτε το αποτέλεσμα

Εκτελέστε εντολή για την εγκατάσταση του αρχείου τροχού Python:

pip3 εγκαταστήστε .. \ out \ tensorflow-1.12.0-cp36-cp36m-win_amd64.whl

Αφήστε τον κατάλογο "tensorflow" (σφάλματα συμβαίνουν μερικές φορές όταν τρέχω σενάρια Python μέσα στο φάκελο πηγαίου κώδικα Tensoflow - δεν ξέρω λόγο):

cd ..

Για να ελέγξετε τη λήψη του σεναρίου εδώ ή αντιγράψτε-επικολλήστε και εκτελέστε:

εισαγωγή tensorflow ως tf
hello = tf.constant ('Γεια σας, TensorFlow!')
session = tf.Session ()
εκτύπωση (session.run (γεια))

Εάν το σύστημα εξάγει τα παρακάτω, τότε όλα είναι καλά:

Γεια σας, TensorFlow!

Η έξοδος μου:

Μπορείτε να εκτελέσετε αυτό το σενάριο Python για να διασφαλίσετε ότι και η έκδοση του εγκατεστημένου TensorFlow:

# TensorFlow και tf.keras
εισαγωγή tensorflow ως tf
από tensorflow εισαγωγές keras
εκτύπωση (tf .__ έκδοση__)
εκτύπωση (keras .__ version__)

Πρέπει να έχετε την εξής έξοδο:

1.12.0
2.1.6-tf

Έχετε πλέον εγκαταστήσει με επιτυχία TensorFlow 1.12 σε υπολογιστή με Windows.

Ενημερώστε με τα σχόλια παρακάτω εάν αυτό λειτούργησε για εσάς. Ή αν έχετε λάθη. Ευχαριστώ!