Би било честно да се каже, че машинното обучение е по-достъпно от всякога, със сравнително скромен хардуер и пропускане на докторантурата вече можете да създавате и обучавате свои собствени модели или да използвате предварително обучени модели. Не мога обаче да кажа, че винаги е ясно; това все още е нововъзникваща област с бързо напредващи разработки, инструменти, набори от инструменти и SDK.

Настройването на вашата среда изисква време и грижи, пълно е с клопки и едно пропускане на номер на версия, което води до часове на разочарование, чудейки се къде е изчезнал липсващият dll или гледайки вашата великолепна нова Ampere карта, която стои бездействаща, докато вашият процесор отоплява къщата !

Това ръководство ще ви преведе през стартирането и стартирането на TensorFlow 2.4 с поддръжка на CUDA, за да извлечете максимума от вашия GPU.

https://www.tensorflow.org/tutorials/images/classification

Урокът за класификация на изображения на TensorFlow е чудесен начин да подчертаете разликата, която прави използването на вашия графичен процесор пред само вашия процесор. Когато следвате урока, ще стигнете до точката, в която стартирате своя модел, ето накратко.

Epoch 1/5
92/92 [==============================] - 21s 231ms/step
Epoch 2/5
92/92 [==============================] - 23s 251ms/step
Epoch 3/5
92/92 [==============================] - 24s 262ms/step
Epoch 4/5
92/92 [==============================] - 21s 232ms/step
Epoch 5/5
92/92 [==============================] - 22s 243ms/step

Около 21–24 секунди за всяка епоха, не е ужасно, но това няма да се мащабира добре, когато започнем да използваме по-сложни модели и по-големи набори от данни. На изображението по-долу можете да видите, че Tensorflow изпълнява всичко това на CPU и не използва GPU.

Сега, изпълнявайки същия код с активирана поддръжка на CUDA, картината е много различна, обучението сега се изпълнява с около 1 секунда на епоха.

Epoch 1/5
92/92 [==============================] - 1s 15ms/step 
Epoch 2/5
92/92 [==============================] - 1s 15ms/step
Epoch 3/5
92/92 [==============================] - 1s 15ms/step
Epoch 4/5
92/92 [==============================] - 1s 15ms/step
Epoch 5/5
92/92 [==============================] - 1s 15ms/step

И можете да видите, че дори не сме увеличили GPU и използваме значително по-малко CPU. Не заснех използването на паметта на GPU, но надникна някъде около 66%.

Tensorflow изисквания

Според уебсайта TensorFlow неговите изисквания са както следва:

  • Nvidia GPU драйвер — 450.x или по-висока
  • CUDA Toolkit — CUDA 11
  • cuDNN SDK 8.0.4
  • Python 3.5–3.8

Забележка! Не поддържа Python 3.9. Понижете базовия си питон, ако е необходимо, или използвайте нещо като Conda, за да създадете среда с 3.8

Ето набора от версии, които използвах и постигнах успех:

  • Gigabyte Aorus 3070 GPU
  • Nvidia GPU драйвер 461.09
  • CUDA Toolkit 11.0.3
  • cuDNN 8.0.4.30
  • Python 3.8.5

Опитах различни комбинации от по-нови драйвери; това обаче е единствената комбинация, която успях да направя до момента, ако сте имали успех с други комбинации, уведомете ме и аз ще актуализирам тази история.

Две важни бележки, избягвайте GPU драйвер 460, има известни проблеми и TensorFlow все още не поддържа Python 3.9

Инсталирайте/актуализирайте своя графичен драйвер

https://www.nvidia.com/Download/index.aspx

CUDA Toolkit ще се предлага с пакетен драйвер, но може да има няколко версии след това, най-вероятно вече имате инсталиран драйвер. Графичните драйвери на Nvidia се доставят с много надеждни ръководени инсталатори.

Инсталирайте CUDA Toolkit

https://developer.nvidia.com/cuda-toolkit-archive

Инструментариумът CUDA включва инструментите, необходими за GPU-ускорени приложения и разработка. Това е първата част, необходима за активиране на GPU ускорение в Tensorflow.

Можете да изтеглите или локалния инсталатор (2,8 GB), който е удобен, ако възнамерявате да извършите няколко инсталации (или преинсталирания), или мрежовия инсталатор, който ще изтегли само частите, които искате да инсталирате. Локалният инсталатор включва графичен драйвер, PhysXdriver и всичко останало, от което може да се нуждаете.

Избрах персонализираната инсталация и премахнах избора на драйвера за дисплея и PhysX драйвера, тъй като вече имам инсталирани еквивалентни или по-добри драйвери.

Нямам инсталирано Visual Studio и нямате нужда от него, за да активирате поддръжката на CUDA в TensorFlow. Имаме нужда от библиотеки и изпълними файлове.

След като инсталацията приключи, проверете дали всичко работи добре. Помислете дали да рестартирате машината си в този момент или поне да отворите нов команден прозорец. Въведете nvcc -V и трябва да видите следното.

C:\>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Wed_Jul_22_19:09:35_Pacific_Daylight_Time_2020
Cuda compilation tools, release 11.0, V11.0.221
Build cuda_11.0_bu.relgpu_drvr445TC445_37.28845127_0

Ако това не успее, рестартирайте машината си и проверете PATH (напишете PATH в команден прозорец или прегледайте Променливи на средата в Windows Advanced System Settings)

Вашият системен ПЪТ трябва да съдържа:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\libnvvp

Инсталирайте cuDNN SDK

CUDA Deep Neural Network (cuDNN) SDK предоставя библиотека от примитиви за дълбоки невронни мрежи и осигурява реализации на слоеве за навиване, обединяване, нормализиране и активиране.

Ще трябва да се регистрирате в програмата за разработчици на Nvidia и да приемете лицензионното споразумение за софтуер cuDNN, преди да изтеглите.

https://developer.nvidia.com/rdp/cudnn-archive

Не изтегляйте най-новия пакет! Трябва да щракнете върху Архивирани версии на cuDNN и да изберете правилната версия в този случай cuDNN v8.0.4 за CUDA 11.0. Накрая изберете правилната връзка за вашата платформа.

cuDNN не идва с удобен инсталатор, така че ще трябва ръчно да извлечете zip файла и да копирате съдържанието в правилните папки.

  1. Копирайте ‹zipfile›\cuda\bin\cudnn*.dll в C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin
  2. Копирайте ‹zipfile›\cuda\include\cudnn*.h в C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include
  3. Копирайте ‹zipfile›\cuda\lib\x64\cudnn*.lib в C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\lib\x64

Може да бъдете помолени да копирате до тази дестинация, ако това е чиста инсталация, няма да бъдете помолени да презапишете никакви файлове. Ако бъдете помолени да презапишете файлове, може би е най-добре да премахнете напълно CUDA и cuDNN и да започнете отначало с нова инсталация.

Вече сте готови!

Тествам го.

Нека направим бърз тест, за да видим дали всичко работи добре. Стартирайте нов команден прозорец, стартирайте вашата среда на python и стартирайте бележник на Jupyter или изпълнете следния код в избраната от вас IDE.

import tensorflow as tf
tf.config.list_physical_devices('GPU')

Ако успеем, ще видим списък с поне един GPU.

Ако върне празен списък, опитайте следното за отстраняване на проблема.

  • Уверете се, че вашият PATH е правилен и сочи към правилния инструментариум CUDA
  • Рестартирайте вашата машина
  • Проверете дали сте инсталирали правилните версии.
  • Почистете и опитайте отново

Премахване на по-стара/предишна версия

За да направите чиста инсталация на по-стара версия, изтрийте папката под C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA и не забравяйте да почистите вашия PATH.

Ако ви е удобно да редактирате PATH, можете да поддържате множество версии, уверете се, че вашият PATH се отнася до версията, която искате да използвате, и само една версия.

Свършен

Надявам се, че това ви помага и ви позволява да стигнете до забавните неща на TensorFlow, спестявайки ви цялото време, което отделих, за да заработи това. Искам да чуя как се справяте и да ме уведомите за вашите въпроси, ако имате такива.

Приписвания

TensorFlow, логото на TensorFlow и всички свързани марки са търговски марки на Google Inc.

© 2021 NVIDIA Corporation, NVIDIA, логото на NVIDIA, CUDA са търговски марки и/или регистрирани търговски марки на NVIDIA Corporation в Съединените щати и други държави. Всички права запазени.