[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 */

相关文章
相关标签/搜索