Mbështetje OpenGL ES
MediaPipe mbështet OpenGL ES deri në versionin 3.2 në Android/Linux dhe deri në ES 3.0 në iOS. Përveç kësaj, MediaPipe gjithashtu mbështet Metal në iOS.
Kërkohet OpenGL ES 3.1 ose më i ri (në sistemet Android/Linux) për përdorimin e llogaritësve dhe grafikëve të konkluzioneve të mësimit të makinerisë.
Çaktivizo mbështetjen e OpenGL ES
Si parazgjedhje, ndërtimi i MediaPipe (pa flamuj të veçantë bazel) përpiqet të përpilojë dhe lidhet kundër bibliotekave OpenGL ES (dhe për iOS gjithashtu Metal).
Në platformat ku OpenGL ES nuk është i disponueshëm (shih gjithashtu OpenGL ES Setup në Linux Desktop ), duhet të çaktivizoni mbështetjen e OpenGL ES me:
$ bazel build --define MEDIAPIPE_DISABLE_GPU=1 <my-target>
Konfigurimi i OpenGL ES në desktopin Linux
Në desktopin Linux me karta video që mbështesin OpenGL ES 3.1+, MediaPipe mund të ekzekutojë llogaritjen dhe renderimin e GPU-së dhe të kryejë konkluzionet TFLite në GPU.
Për të kontrolluar nëse GPU-ja juaj e desktopit Linux mund të ekzekutojë MediaPipe me OpenGL ES:
$ sudo apt-get install mesa-common-dev libegl1-mesa-dev libgles2-mesa-dev
$ sudo apt-get install mesa-utils
$ glxinfo | grep -i opengl
Për shembull, mund të printojë:
$ glxinfo | grep -i opengl
...
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 430.50
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
Nëse jeni lidhur me kompjuterin tuaj përmes SSH dhe gjeni kur kërkoni informacionin e GPU-së, shihni daljen:
glxinfo | grep -i opengl
Error: unable to open display
Provoni të rivendosni lidhjen tuaj SSH me opsionin -X dhe provoni përsëri. Për shembull:
ssh -X <user>@<host>
Vini re tekstin ES 3.20 më sipër.
Ju duhet të shihni ES 3.1 ose më të madh të printuar në mënyrë që të kryeni përfundimin TFLite në GPU në MediaPipe. Me këtë konfigurim, ndërto me:
$ bazel build --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 <my-target>
Nëse mbështetet vetëm ES 3.0 ose më poshtë, mund të ndërtoni ende objektiva MediaPipe që nuk kërkojnë konkluzionet TFLite në GPU me:
$ bazel build --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 --copt -DMEDIAPIPE_DISABLE_GL_COMPUTE <my-target>
Mbështetja dhe konfigurimi i TensorFlow CUDA në desktopin Linux
Korniza MediaPipe nuk kërkon CUDA për llogaritjen dhe paraqitjen e GPU. Megjithatë, MediaPipe mund të punojë me TensorFlow për të kryer konkluzionet e GPU-së në kartat video që mbështesin CUDA.
Për të aktivizuar konkluzionet e TensorFlow GPU me MediaPipe, hapi i parë është të ndiqni dokumentacionin e TensorFlow GPU për të instaluar softuerin e nevojshëm NVIDIA në desktopin tuaj Linux.
Pas instalimit, përditësoni $PATH dhe $LD_LIBRARY_PATH dhe ekzekutoni ldconfig me:
$ export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64,/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
$ sudo ldconfig
Rekomandohet të verifikoni instalimin e CUPTI, CUDA, CuDNN dhe NVCC:
$ ls /usr/local/cuda/extras/CUPTI
/lib64
libcupti.so libcupti.so.10.1.208 libnvperf_host.so libnvperf_target.so
libcupti.so.10.1 libcupti_static.a libnvperf_host_static.a
$ ls /usr/local/cuda-10.1
LICENSE bin extras lib64 libnvvp nvml samples src tools
README doc include libnsight nsightee_plugins nvvm share targets version.txt
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
$ ls /usr/lib/x86_64-linux-gnu/ | grep libcudnn.so
libcudnn.so
libcudnn.so.7
libcudnn.so.7.6.4
Vendosja e $TF_CUDA_PATHS është mënyra për të deklaruar se ku është biblioteka CUDA. Vini re se pjesa e mëposhtme e kodit shton gjithashtu /usr/lib/x86_64-linux-gnu dhe /usr/include në $TF_CUDA_PATHS për cudablas dhe libcudnn.
$ export TF_CUDA_PATHS=/usr/local/cuda-10.1,/usr/lib/x86_64-linux-gnu,/usr/include
Për ta bërë MediaPipe të marrë cilësimet CUDA të TensorFlow, gjeni .bazelrc të TensorFlow dhe kopjoni seksionin build:using_cuda dhe build:cuda në skedarin .bazelrc të MediaPipe. Për shembull, që nga 23 Prill 2020, cilësimi CUDA i TensorFlow është si më poshtë:
# This config refers to building with CUDA available. It does not necessarily
# mean that we build CUDA op kernels.
build:using_cuda --define=using_cuda=true
build:using_cuda --action_env TF_NEED_CUDA=1
build:using_cuda --crosstool_top=@local_config_cuda//crosstool:toolchain
# This config refers to building CUDA op kernels with nvcc.
build:cuda --config=using_cuda
build:cuda --define=using_cuda_nvcc=true
Më në fund, ndërtoni MediaPipe me GPU TensorFlow me dy flamuj të tjerë --config=cuda dhe --spawn_strategy=local . Për shembull:
$ bazel build -c opt --config=cuda --spawn_strategy=local \
--define no_aws_support=true --copt -DMESA_EGL_NO_X11_HEADERS \
mediapipe/examples/desktop/object_detection:object_detection_tensorflow
Ndërsa binar po funksionon, ai printon informacionin e pajisjes GPU:
I external/org_tensorflow/tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcuda.so.1
I external/org_tensorflow/tensorflow/core/common_runtime/gpu/gpu_device.cc:1544] Found device 0 with properties: pciBusID: 0000:00:04.0 name: Tesla T4 computeCapability: 7.5 coreClock: 1.59GHz coreCount: 40 deviceMemorySize: 14.75GiB deviceMemoryBandwidth: 298.08GiB/s
I external/org_tensorflow/tensorflow/core/common_runtime/gpu/gpu_device.cc:1686] Adding visible gpu devices: 0
Ju mund të monitoroni përdorimin e GPU-së për të verifikuar nëse GPU përdoret për përfundimin e modelit.
$ nvidia-smi --query-gpu=utilization.gpu --format=csv --loop=1
0 %
0 %
4 %
5 %
83 %
21 %
22 %
27 %
29 %
100 %
0 %
0%