本文轉(zhuǎn)載自:https://my.oschina.net/u/2306127/blog/1602291
這包括幾個(gè)層次:
- GPU直接支持Spark。因?yàn)镾park是多線程的,而GPU往往只能起一個(gè)單例,導(dǎo)致線程會(huì)競爭GPU資源,需要進(jìn)行管理、加鎖和調(diào)度。方法包括:
- 原生代碼內(nèi)置編譯支持。
- 引入cuDNN等NVidia庫進(jìn)行調(diào)用。
- 通過Tensorflow等間接進(jìn)行支持。
- JIT方式即時(shí)編譯調(diào)用方式支持。
- GPU支持的Docker中運(yùn)行Spark。如果將Spark節(jié)點(diǎn)放入Docker容器中運(yùn)行,則需要使用NVidia提供的特殊版本Docker,而且需要安裝NVidai提供的cuDNN等軟件支持庫。由于這些庫調(diào)用了系統(tǒng)驅(qū)動(dòng),而且是C++編寫,因此Spark要能夠進(jìn)行系統(tǒng)庫的調(diào)用。
-
GPU支持的Kubernetes之上運(yùn)行Spark。
- 在上面的基礎(chǔ)上,支持GPU的Docker容器需要能夠接受Kubernetes的管理和調(diào)度。
- 參考:https://my.oschina.net/u/2306127/blog/1808304
只有同時(shí)滿足上面的條件,才能通過Kubernetes的集群管理對Docker中Spark進(jìn)行GPU操作。
下面是已經(jīng)做的一些研究。
- IBMSparkGPU的方案可以將GPU用于RDD和DataFrame,支持通用計(jì)算,重點(diǎn)支持機(jī)器學(xué)習(xí);
- deeplearning4j是基于Java的,包含數(shù)值計(jì)算和神經(jīng)網(wǎng)絡(luò),支持GPU;
- NUMBA的方案通過PySpark即時(shí)編譯產(chǎn)生GPU的調(diào)用代碼,兼容性好;
- Tensorflow/Caffe/MXNet等與Spark整合主要是節(jié)點(diǎn)調(diào)度,GPU由深度學(xué)習(xí)引擎調(diào)度,RDD需要數(shù)據(jù)交換,主要用于存儲(chǔ)中間超參數(shù)數(shù)據(jù)。如TensorFrame的實(shí)現(xiàn)-https://github.com/databricks/tensorframes
具體的資源包括:
- https://github.com/databricks/spark-deep-learning,Deep Learning Pipelines for Apache Spark,直接支持Images的一些功能。
- http://www.spark.tc/simd-and-gpu/, Spark多種支持GPU方法。
- http://www.spark.tc/gpu-acceleration-on-apache-spark-2/,GPU擴(kuò)展
- https://my.oschina.net/u/2306127/blog/1602295,同上。
- http://www.spark.tc/0-to-life-changing-app-new-apache-systemml-api-on-spark-shell/,systemML在Spark中使用。
- Continuum-Anaconda,NUMBA: A PYTHON JIT COMPILER,http://on-demand.gputechconf.com/gtc/2016/presentation/s6413-stanley-seibert-apache-spark-python.pdf
- http://spark.tc/why-you-should-be-using-apache-systemml-2/,關(guān)于SystemML。
- 基于Java的神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)系列庫(支持GPU,https://deeplearning4j.org/),https://github.com/deeplearning4j
- https://github.com/IBMSparkGPU,源碼:https://github.com/IBMSparkGPU/GPUEnabler
- Spark Summit 2016 Talk by Jun Feng Liu (IBM) and Yonggang Hu (IBM)
- Hadoop, Spark, Deep Learning Mesh on Single GPU Cluster,https://www.nextplatform.com/2016/02/24/hadoop-spark-deep-learning-mesh-on-single-gpu-cluster/
- IBM,關(guān)于GPU RDD的討論,http://on-demand.gputechconf.com/gtc/2016/presentation/s6280-rajesh-bordawekar-accelerating-spark.pdf
- GPU Computing with Apache Spark and Python,http://on-demand.gputechconf.com/gtc/2016/presentation/s6413-stanley-seibert-apache-spark-python.pdf
- Spark ML Runs 10x Faster on GPUs, Databricks Says。https://www.datanami.com/2016/10/27/spark-ml-runs-faster-gpus/