[עדכון 1] יצירה והתקנה של TensorFlow GPU / CPU עבור Windows מקוד מקור עם Bazel ו- Python 3.6

זה עדכון לסיפור הקודם שלי. מה חדש כאן:

  • TensorFlow v1.11
  • CUDA v10.0
  • cuDNN v7.3

ישנם מדריכים באתר הרשמי. זה לא מקיף במיוחד, אבל לפעמים זה שימושי.

סיכום

  1. התקן את Git עבור Windows
  2. התקן את Bazel
  3. התקן את MSYS2 x64 ואת כלי שורת הפקודה
  4. התקן את Visual Studio 2017 Build Tools, כולל Visual Studio 2015 Tools Build
  5. התקן את Python 3.6 64 סיביות
  6. התקן את NVIDIA CUDA 10.0 ו- cuDNN 7.3 (להאצת GPU)
  7. הגדר את סביבת הבנייה
  8. שיבט את קוד המקור TensorFlow v1.11 והחל את תיקון החובה
  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 סיביות כאן. Bazel משתמש בכלי grep, patch, unzipand ונמלים אחרים מכלי Unix כדי לבנות מקורות. אתה יכול לנסות למצוא קבצים בינאריים עצמאיים עבור כל אחד מהם, אך אני מעדיף להשתמש בחבילה MSYS2. אני מתקין את זה על

C: \ Bin \ msys64

תיקייה עבור הדרכה זו. עליך להוסיף תיקיית כלים למשתנה הסביבה% PATH%. במקרה שלי זה "C: \ Bin \ msys64 \ usr \ bin".

הפעל את הקישור "MSYS2 MinGW 64-Bit" מתפריט ההתחלה. כדי לעדכן, הפעל את הפקודה הבאה (הפעל מחדש את MSYS2 MinGW 64 סיביות כשתתבקש):

פקמן סיו

ואז לרוץ:

פקמן -סו

כלי התקנה נדרשים לבנייה:

לפתוח את תיקון פקמן

סגור את מעטפת MSYS2 MinGW 64 סיביות באמצעות הפקודה "יציאה". אנחנו כבר לא צריכים את זה.

שלב 3: התקן את כלי הבנייה של Visual Studio 2017, כולל כלי הבנייה של Visual Studio 2015

עלינו להתקין את VC ++ 2015.3 v14.00 (v140) עבור ערכת כלים שולחניים מ- Visual Studio 2017 Build Build Tools לבניית TensorFlow v1.11:

שלב 4: התקן את Bazel

הורד את באזל האחרונה כאן. חפש את הקובץ bazel- -windows-x86_64.exe. בדקתי הדרכה זו עם Bazel 0.17.2. שנה את שם הבינארי ל- bazel.exe והעבר אותו לספריה ב-% PATH% כדי שתוכל להריץ את Bazel על ידי הקלדת bazel בכל ספריה. לפרטים על התקנת Bazel עבור Windows x64, עיין בבעיות.

הוסף את המשתנה הסביבתי הגלובלי BAZEL_SH עבור המיקום bash. הדרך שלי היא

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

הוסף את משתנה הסביבה הגלובלי BAZEL_VC עבור ערכת הכלים "VC ++ 2015.3 v14.00 (v140) לשולחן העבודה":

C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC

שלב 5: התקן את Python 3.6 64 סיביות

TensorFlow אינו תומך ב- Python 3.7, לכן יהיה עליך להתקין את גרסת 3.6.
נראה ש- TensorFlow v1.11 כבר לא תומך ב- Anaconda / Miniconda לבניות - אני מקבל שגיאה מוזרה. זו הסיבה שאני משתמש בסביבה הווירטואלית של Python כדי ליצור.

Python 3.6 זמין להורדה כאן. התקן אותו והוסף את המיקום python.exe למשתנה% PATH%.

שלב 6: התקן את NVIDIA CUDA 10.0 ו- cuDNN 7.3 (להאצת GPU)

סעיף זה מעודכן אם ברשותך כרטיס מסך NVIDIA התומך ב- CUDA. אחרת, דלג על החלק הזה.
התקנה צעד אחר צעד של CUDA זמינה כאן אם אתה זקוק לעזרה. אני מעתיק את המדריך הזה אך גוזר כמה פרטים.

עבור אל https://developer.nvidia.com/cuda-downloads והורד את מתקין CUDA 10.0 עבור Windows [הגרסה שלך]. עבורי הגרסה היא חלונות 10.

התקן אותו בספריית ברירת המחדל עם הגדרות ברירת המחדל, אך השבת את אפשרות השילוב של VisualStudio. מנהל התקן ה- GPU יעודכן ויופעל מחדש במידת הצורך.

הפעל את הפקודה cmd (Win + R)

הפקודה הבאה בודקת גרסה של nvcc ומוודאת שהיא מוגדרת במשתנה סביבת הנתיב.

nvcc - גרסה

עבור אל https://developer.nvidia.com/cudnn (נדרשת חברות).

לאחר הכניסה, הורד:

cuDNN v7.3.1 Library for Windows [הגרסה שלך] עבורי 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: הגדר את סביבת הבנייה

הפעל את מעטפת VC ++ 2015 עבור x64 (קיצור דרך "שורת הפקודה VS2015 x64 Native Tools") מתפריט ההתחלה.

לאחר מכן, עליך ליצור, להפעיל ולהגדיר סביבת Python. בצע את פקודות הפגז הבאות ב"שורת הפקודה VS2015 x64 Native Tools "(תקן את הנתיבים בהתאם למיקומך).

pip3 להתקין - U וירטואלי
virtualenv - חבילות אתר-אתר C: \ Users \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ active.bat

הקליפה שלך צריכה להיראות ככה לאחר החלת הפקודות:

התקן את חבילות ה- Python החובה:

pip3 להתקין שישה גלגלים קהים
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:

זרימת טנסור
git checkout v1.11.0

עכשיו יש לנו מקורות.

יש BUG בספריית צד שלישי משלהם. אנחנו צריכים לתקן את זה לפני הבנייה.
  • הורד את התיקון כאן ושמור אותו עם שם הקובץ eigen_half.patch בתיקיית Third_party
  • הוסף patch_file = clean_dep ("// third_party: eigen_half.patch"), קו לקטע "eigen_archive" בקובץ tensorflow / workspace.bzl.

התוצאה בקובץ tensorflow / workspace.bzl צריכה להיראות כך:

... tf_http_archive (name = "eigen_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", strip_prefix = "clean-eigen-clean ("// צד שלישי: eigen_half.patch"),) ...

בוצע.

שלב 9: הגדר את פרמטרי הבנייה

ודא שאנחנו בתיקיית הבסיס של קוד המקור:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow

הפעל את התצורה:

פיתון ./configure.py

ראשית תתבקש למצוא את מיקומו של פייתון. לחץ על Enter כדי לשמור על ערך ברירת המחדל:

... התקנת את bazel 0.17.2.
אנא ציין את המיקום של פייתון. [תקן הוא C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

לאחר מכן תתבקש את הנתיב לספריית פייתון. לחץ על Enter כדי לשמור על ערך ברירת המחדל:

מעקב (השיחה האחרונה האחרונה): קובץ " ", שורה 1, ב AttributeError: למודול 'אתר' אין מאפיין 'getsitepackages' נמצאו נתיבי ספריית פייתון אפשריים: C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ חבילות אתר אנא הכנס את נתיב ספריית ה- Python הרצוי. התקן הוא [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages]

ואז תתבקש לקבל את התמיכה של nGraph. אנחנו לא צריכים את זה. לחץ על "n":

האם תרצה לבנות את TensorFlow עם תמיכת nGraph? [Y / N]: n n תמיכה בצילום אינה מופעלת עבור TensorFlow.

ואז הוא מבקש תמיכה ב- CUDA:

האם אתה רוצה לבנות את TensorFlow עם תמיכת CUDA? [Y / N]:

ענה "y" אם ברצונך להשתמש בהאצת GPU. אחרת, לחץ על "n".

אם כן עבור תצורת CUDA, נשאלות שאלות נוספות:
תשובה 10.0 כגרסת CUDA SDK:
אנא ציין את גרסת ה- CUDA SDK בה ברצונך להשתמש. [השאר ריק כדי להשתמש ב- CUDA 9.0 כברירת מחדל]: 10.0
הקש Enter כדי לצאת ממיקום ערכת הכלים CUDA המוגדר כברירת מחדל:
אנא ציין את המיקום שבו מותקן ערכת הכלים CUDA 10.0. ראה README.md למידע נוסף. [ברירת המחדל היא C: / תוכניות / ערכת כלי מחשוב GPU NVIDIA / CUDA / v10.0]:
תשובה 7.3.1 כגרסת cuDNN:
אנא ציין את גרסת ה- cuDNN הרצויה. [השאר ריק כדי להשתמש ב- cuDNN 7.0 כברירת מחדל]: 7.3.1
לחץ על Enter כדי לצאת ממיקום ספריית cuDNN המוגדר כברירת מחדל:
אנא הכנס את המיקום שבו מותקנת ספריית cuDNN 7. ראה README.md למידע נוסף. [ברירת המחדל היא C: / תוכניות / ערכת כלי מחשוב GPU NVIDIA / 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

השאלה הבאה היא קביעת דגלי אופטימיזציה. יש לי מעבד אינטל מהדור השישי, אז אני עונה / קשת: AVX2:

אנא ציין דגלי אופטימיזציה שישמשו במהלך הידור אם מוגדרת אפשרות באזל "--config = opt". [ברירת מחדל היא / arch: AVX]: / arch: AVX2

השאלה האחרונה היא על אייגן. ענה עם "y". זה מקטין בצורה דרסטית את זמן ההידור.

האם ברצונך לבטל את השורה החזקה שלך בכמה אוספי C ++ כדי להפחית את זמן האוסף? [Y / n]: Y Eigen מוחלף בחוזקה.

התצורה הושלמה. בוא נבנה.

שלב 10: בניית TensorFlow ממקורות

ודא שאנחנו בתיקיית הבסיס של קוד המקור:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
לוקח הרבה זמן ליצור. אני ממליץ בחום לכבות תוכנת אנטי-וירוס כולל הגנה בזמן אמת על Windows Defender Antivirus.

ביצוע build:

build bazel --config = opt // tensorflow / tools / pip_package: build_pip_package

שבו לאחור והירגעו זמן מה.

שלב 11: צור קובץ גלגל TensorFlow עבור Python 3.6

הפעל את הפקודה ליצירת קובץ גלגל פיתון:

מקדיר .. \ החוצה
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

זה נכשל:

יש בעיה ידועה. עיין בתיקיה "bazel-bin \ tensorflow \ tools \ pip_package". הוא מכיל את הקובץ "simple_console_for_windows.zip" באורך אפס. זאת הבעיה. Bazel כולל כלי zip של 32 סיביות שייכשל בקובץ גדול יותר בנפח 2GB. ראה קישורים לפרטים ולעקיפת הבעיה:

  • 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 / להוט / python / דוגמאות / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / contrib / להוט / python / דוגמאות / gan / mnist.zip
...
זה עוזר לי. אם זה לא עוזר לך, פשוט הסר שורות אחרות עם קבצי zip (ראה פרטים כאן). מטרת הפעילות היא לשמור על אורך simple_console_for_windows.zip פחות מ -2 GB.

מחק את הקובץ הריק "simple_console_for_windows.zip".

לאחר מכן, הסתכל בתיקיית הבית שלך. עליכם למצוא את התיקיה בשם "_bazel_ "ראה. במקרה שלי זה" _bazel_amsokol ". הוא מכיל תיקיות עם קבצי build. במקרה שלי זה" lx6zoh4k ". חזרה לקליפה של ריצה (לפי שמות התיקיות שלך נכונים):

cd C: \ משתמשים \ amsokol \ _bazel_amsokol \ lx6zoh4k \ execroot \ org_tensorflow

צור את הקובץ "simple_console_for_windows.zip" באופן ידני:

חיצוני \ 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. פארמים

הפעל את הפקודה ליצירת קובץ גלגל פיתון:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

זה יוצר את הקובץ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl בתיקיה ".. \ out".

שלב 12: התקן את קובץ הגלגל TensorFlow עבור Python 3.6 ובדוק את התוצאה

הפעל את הפקודה להתקנת קובץ גלגל Python:

pip3 להתקין .. \ out \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl

צא מספריית Tensorflow

CD ..

לבדיקת סקריפט ההורדה כאן או הפעלה באמצעות העתקה והדבקה:

ייבא את Tensorflow כ- tf hello = tf.constant ('שלום, TensorFlow!') Session = tf.Session () הדפס (session.run (שלום))

אם המערכת מפיקה את הדברים הבאים, הכל בסדר:

שלום TensorFlow!

התפוקה שלי:

כעת התקנת את TensorFlow בהצלחה במחשב Windows.

ספר לי בתגובות למטה אם זה עבד בשבילך. או אם יש לך פגמים. הרבה תודות!