[PYTHON] GPU ~ Implementierung von PlaidML auf Mac ~ (Stand Mai 2020)

Für diejenigen, die diese Einstellung einmal abgeschlossen haben

Dies ist das Verfahren zum Starten von jupyter ab dem nächsten Mal. Wir haben eine vereinfachte Version vorbereitet, daher würden wir uns freuen, wenn Sie darauf verweisen könnten.

[Hinweis] Plaid ML Keras-Ausführungsreihenfolge

Ausführungsumgebung

Ausführungsumgebung 1
machine MacBook Air(Retina, 13-inch,2019)
OS MacOS Catalina version 10.15.4
Erinnerung 8 GB 2133 MHz LPDDR3
Grafik Intel UHD Graphics 617 1536 MB
module version
Keras 2.2.4
plaidml 0.7.0
plaidml-keras 0.7.0
plaidbench 0.7.0
Ausführungsumgebung 2
machine MacBook (Retina, 12-inch, 2017)
OS MacOS Catalina version 10.15.4
Erinnerung 8 GB 1867 MHz LPDDR3
Grafik Intel HD Graphics 615 1536 MB
module version
Keras 2.2.4
plaidml 0.7.0
plaidml-keras 0.7.0
plaidbench 0.7.0

Motivation zur Implementierung von PlaidML

Die Anzahl der Inhalte, die zum kostenlosen Lernen von maschinellem Lernen in GW verwendet werden können, hat zugenommen, und ich habe beschlossen, das maschinelle Lernen des Bildverarbeitungssystems auszuprobieren, das ich ursprünglich durchführen wollte. Ich habe keinen Computer mit hohen Spezifikationen, auf den ich stolz bin, und wie ich in der Ausführungsumgebung geschrieben habe, ist die Ausführungsumgebung MacBook. Wenn Sie also die GPU ** NVIDIA ** nicht verwenden können, legen Sie sie auf Ihren PC. Es ist eine Belastung, aber es braucht viel Zeit. Ich spürte die Grenze des Lernens mit der CPU allein und versuchte, PlaidML zu implementieren, das angeblich auch mit dem MacBook mit der GPU lernen kann.

Verweise

Ich bezog mich hauptsächlich auf GitHub of Plaid ML.

Über die Implementierung von PlaidML

Was das Modul macht

PlaidML ist ein Framework für wissenschaftliche mathematische Berechnungsbibliotheken, die von Intel und anderen entwickelt wurden. Zu den von Keras standardmäßig unterstützten Frameworks wissenschaftlicher mathematischer Berechnungsbibliotheken gehören "Tensorflow" und "Theano". Diese Bibliotheken wurden nur auf NVIDIA-GPUs unterstützt, wenn versucht wurde, die GPU (Grafik) des PCs zu verwenden. Es war nicht möglich, mit der GPU auf einem Mac mit einer AMD-GPU zu rechnen.

Dieses Plaid ML ist jedoch nicht an NVIDIA gebunden, sondern ein Modul zur Ermöglichung der Verwendung von GPU und ein Modul, das als Framework für das Back-End von Keras verwendet wird. In dieser Implementierung werden wir PlaidML auf diesem Keras-Backend einrichten.

Wo es stecken bleibt

** Maschinelles Lernen auf einem Mac mit GPU ** darüber.

Implementierung

PlaidML Github QuickStart Link QuickStar erstellt eine virtuelle Umgebung mit "virtualenv", aber ich habe es nicht getan. Es gibt keinen besonderen Grund.

Installation der erforderlichen Module

module_install


pip3 install plaidml-keras plaidbench
pip3 install keras

PlaidML-Setup

Richten Sie PlaidML ein. Legen Sie fest, ob in PlaidML mit CPU oder GPU berechnet werden soll.

plaidml-setup


plaidml-setup

Ich bin gemäß Schnellstart vorgegangen, habe hier jedoch einen Fehler erhalten. Die Fehleranweisung lautet wie folgt.

error


Traceback (most recent call last):
  File "/usr/local/bin/plaidml-setup", line 5, in <module>
    from plaidml.plaidml_setup import main
  File "/usr/local/lib/python3.7/site-packages/plaidml/__init__.py", line 50, in <module>
    import plaidml.settings
  File "/usr/local/lib/python3.7/site-packages/plaidml/settings.py", line 33, in <module>
    _setup_config('PLAIDML_EXPERIMENTAL_CONFIG', 'experimental.json')
  File "/usr/local/lib/python3.7/site-packages/plaidml/settings.py", line 30, in _setup_config
    'Could not find PlaidML configuration file: "{}".'.format(filename))
plaidml.exceptions.PlaidMLError: Could not find PlaidML configuration file: "experimental.json".

GitHub hat diesen Fehler bereits besprochen. Wenn Sie interessiert sind, schauen Sie bitte. plaidml.exceptions.PlaidMLError: Could not find PlaidML configuration file: "experimental.json". #370

Abschließend, Da es eine Schlussfolgerung gab, dass ein Fehler aufgetreten ist, weil der PATH nicht bestanden wurde, setzen Sie den beschriebenen PATH. .. Führen Sie "export" erneut aus und überprüfen Sie, ob der festgelegte Pfad vorhanden ist ...

PATH


export PLAIDML_NATIVE_PATH=/usr/local/lib/libplaidml.dylib
export RUNFILES_DIR=/usr/local/share/plaidml

export

Führen Sie das Setup erneut aus

plaidml-setup


plaidml-setup
~~
Enable experimental device support? (y,n)[n]:y #Wählen Sie y

Multiple devices detected (You can override by setting PLAIDML_DEVICE_IDS).
Please choose a default device:

   1 : llvm_cpu.0
   2 : opencl_intel_uhd_graphics_617.0
   3 : metal_intel(r)_uhd_graphics_617.0

Default device? (1,2,3)[1]:3 #Die beiden unteren sind GPUs. Wählen Sie diesmal Grafik 3 aus
~~
#Gibt an, ob das Ergebnis dieser Auswahl gespeichert werden soll
Save settings to /Users/linda/.plaidml? (y,n)[y]:y #Wählen Sie y

Ausführungsergebnis (ganz)
PlaidML Setup (0.7.0)

Thanks for using PlaidML!

The feedback we have received from our users indicates an ever-increasing need
for performance, programmability, and portability. During the past few months,
we have been restructuring PlaidML to address those needs.  To make all the
changes we need to make while supporting our current user base, all development
of PlaidML has moved to a branch — plaidml-v1. We will continue to maintain and
support the master branch of PlaidML and the stable 0.7.0 release.

Read more here: https://github.com/plaidml/plaidml 

Some Notes:
  * Bugs and other issues: https://github.com/plaidml/plaidml/issues
  * Questions: https://stackoverflow.com/questions/tagged/plaidml
  * Say hello: https://groups.google.com/forum/#!forum/plaidml-dev
  * PlaidML is licensed under the Apache License 2.0
 

Default Config Devices:
   llvm_cpu.0 : CPU (via LLVM)
   metal_intel(r)_uhd_graphics_617.0 : Intel(R) UHD Graphics 617 (Metal)

Experimental Config Devices:
   llvm_cpu.0 : CPU (via LLVM)
   opencl_intel_uhd_graphics_617.0 : Intel Inc. Intel(R) UHD Graphics 617 (OpenCL)
   metal_intel(r)_uhd_graphics_617.0 : Intel(R) UHD Graphics 617 (Metal)

Using experimental devices can cause poor performance, crashes, and other nastiness.

Enable experimental device support? (y,n)[n]:y
Multiple devices detected (You can override by setting PLAIDML_DEVICE_IDS).
Please choose a default device:

   1 : llvm_cpu.0
   2 : opencl_intel_uhd_graphics_617.0
   3 : metal_intel(r)_uhd_graphics_617.0

Default device? (1,2,3)[1]:3

Selected device:
    metal_intel(r)_uhd_graphics_617.0

Almost done. Multiplying some matrices...
Tile code:
  function (B[X,Z], C[Z,Y]) -> (A) { A[x,y : X,Y] = +(B[x,z] * C[z,y]); }
Whew. That worked.

Save settings to /Users/linda/.plaidml? (y,n)[y]:y
Success!

Inferenzleistungs-Benchmark

Lassen Sie uns als Nächstes die Inferenzleistung von MobileNet vergleichen.

plaidbench keras mobilenet
Running 1024 examples with mobilenet, batch size 1, on backend plaid
INFO:plaidml:Opening device "metal_intel(r)_uhd_graphics_617.0"
Compiling network...INFO:plaidml:Analyzing Ops: 266 of 413 operations complete
 Warming up... Running...
Example finished, elapsed: 2.280s (compile), 32.101s (execution)

-----------------------------------------------------------------------------------------
Network Name         Inference Latency         Time / FPS          
-----------------------------------------------------------------------------------------
mobilenet            31.35 ms                  0.00 ms / 1000000000.00 fps
Correctness: PASS, max_error: 6.440454399125883e-06, max_abs_error: 5.811452865600586e-07, fail_ratio: 0.0

Zweite Zeile von oben INFO: plaidml: Öffnungsgerät" metal_intel (r) _uhd_graphics_617.0 " Sie können sehen, dass der von Ihnen eingerichtete Beschleuniger einem Benchmarking unterzogen wird.

Eigentlich ist die Einstellung selbst bisher abgeschlossen, aber lassen Sie uns überprüfen, ob das Back-End von Keras wirklich in PlaidML geändert wurde.

Starten Sie "jupyter" auf einem Terminal über diesen Pfad usw.

Seien Sie vorsichtig Wenn Sie Jupyter in einem anderen Terminalfenster starten oder das bisher eingerichtete Terminalfenster schließen, werden die Einstellungen zurückgesetzt.

Bestätigung von PlaidML

Auf Jupiter

import plaidml.keras
plaidml.keras.install_backend() #Auf Backend setzen
import keras
print(keras.backend.backend()) #Überprüfen des Backends von Keras

>>> tensorflow

Das Keras-Backend bleibt Tensorflow.

Um Plaidml tatsächlich als Backend von Keras festzulegen,

python


plaidml.keras.install_backend() #Auf Backend setzen

Stattdessen müssen Sie den Pfad festlegen, der im Backend festgelegt werden soll.

python


export KERAS_BACKEND=plaidml.keras.backend

Wenn Sie nach dem Einstellen dieses Pfads überprüfen ...



#### **`python`**
```python

import keras
print(keras.backend.backend())

>>>plaidml.keras.backend

Sie können sehen, dass es geändert wurde.

#Schließlich Ich möchte das Bildanalysesystem in Zukunft studieren.

#Ähnliche Literatur Träume von NVIDIA~ PlaidML ~

Recommended Posts

GPU ~ Implementierung von PlaidML auf Mac ~ (Stand Mai 2020)
Implementierung von MathJax auf Sphinx
Umgang mit Python auf Mac
Verwenden Sie Colab nur als externe GPU-Umgebung (ab 2020.6 / Mac-Umgebung).
Erstellen einer Umgebung für Python3.8 auf einem Mac
PC-GPU-Prüfung am Jupyter-Notebook
Versuchen Sie, die PlaidML-Bildbeurteilung auf einem Mac auszuführen
Python auf Mac
Hinweise zur Installation von Chainer 1.5 für GPU unter Windows
Unterstützung für Python 2.7-Laufzeit auf AWS Lambda (ab 2020.1)
Implementierung von persönlich optimierten Fotorahmen mit Raspberry Pi