[Spark News] Spark + GPU are the next generation technology

1、資源:Spark進行機器學習,支持GPU


From:http://www.javashuo.com/article/p-devapfwj-ec.htmlhtml

爲了使用Spark進行機器學習,支持GPU是必須的,上層再運行神經網絡引擎。java

目前AWS\GCP和Databricks的雲都已經支持GPU的機器學習,AliYun也在實驗之中。python

這包括幾個層次:git

  • GPU直接支持Spark。由於Spark是多線程的,而GPU每每只能起一個單例,致使線程會競爭GPU資源,須要進行管理、加鎖和調度。方法包括:
    • 原生代碼內置編譯支持。
    • 引入cuDNN等NVidia庫進行調用。
    • 經過Tensorflow等間接進行支持。
    • JIT方式即時編譯調用方式支持。
  • GPU支持的Docker中運行Spark。若是將Spark節點放入Docker容器中運行,則須要使用NVidia提供的特殊版本Docker,並且須要安裝NVidai提供的cuDNN等軟件支持庫。因爲這些庫調用了系統驅動,並且是C++編寫,所以Spark要可以進行系統庫的調用。
  • GPU支持的Kubernetes之上運行Spark。

 

只有同時知足上面的條件,才能經過Kubernetes的集羣管理對Docker中Spark進行GPU操做。github

下面是已經作的一些研究。shell

  • IBMSparkGPU 的方案能夠將GPU用於RDD和DataFrame,支持通用計算,重點支持機器學習
  • deeplearning4j 是基於Java的,包含數值計算和神經網絡,支持GPU;
  • NUMBA 的方案經過PySpark即時編譯產生GPU的調用代碼,兼容性好;
  • Tensorflow/Caffe/MXNet等與Spark整合主要是節點調度,GPU由深度學習引擎調度,RDD須要數據交換,主要用於存儲中間超參數數據。如TensorFrame的實現-https://github.com/databricks/tensorframes

 

Reference

 

 

2、在筆記本上實現Spark-GPU集羣開發教程


From: https://www.jdon.com/bigdata/spark-gpu.htmlapache

第1部分:Spark-Notebook

選擇Scala:完整的Spark API;GPU庫容許我無需編寫編譯C代碼而直接使用Java (這樣從scala調用Java)。api

Zeppelin -> buggy API 
Spark-Notebook -> 導入依賴很頭疼
Sparknotebook -> 就選擇這個了,殺手級應用網絡

下面是從Sparknotebook 倉儲Clone下載一份,按照其指引操做,好比下載IScala.jar等等。session

 

第2部分:在JVM上GPU

  靈感來自於一個使人印象深入的庫包 ScalaNLP 。 他們聲稱有一個解析器,能夠在一臺計算機上每分鐘解析一百萬字。

  ScalaNLP利用JavaCL,能夠處處運行。

  Aparapi 出現的緣由。 它編譯Java代碼到OpenCL,若是不能得到一個GPU則使用Java線程池運行。

       

第3部分:整合Spark和筆記本中Aparapi

真正的挑戰是讓這些工具相互調用。 集成的第一步,咱們須要作的就是aparapi jar導入iscala筆記本。

第4部分:在筆記本(僅使用Scala)構建案例

第5部分:在Spark 集羣執行GPU內核

下面是Spark運行在筆記本上的內核上示意圖:

程序日誌記錄出現GPU…顯示它確實是被運行在GPU。

 

但問題在於深度學習必須使用cuda,仍是cuda纔是正道。

 

 

 

 

/* implement */

相關文章
相關標籤/搜索