一、资源:Spark进行机器学习,支持GPU


From:https://my.oschina.net/u/2306127/blog/1602291

为了使用Spark进行机器学习,支持GPU是必须的,上层再运行神经网络引擎。

目前AWS\GCP和Databricks的云都已经支持GPU的机器学习,AliYun也在实验之中。

这包括几个层次:

  • 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操作。

下面是已经做的一些研究。

  • IBMSparkGPU 的方案可以将GPU用于RDD和DataFrame,支持通用计算,重点支持机器学习;
  • deeplearning4j 是基于Java的,包含数值计算和神经网络,支持GPU;
  • NUMBA 的方案通过PySpark即时编译产生GPU的调用代码,兼容性好;
  • Tensorflow/Caffe/MXNet等与Spark整合主要是节点调度,GPU由深度学习引擎调度,RDD需要数据交换,主要用于存储中间超参数数据。如TensorFrame的实现-https://github.com/databricks/tensorframes

Reference

二、在笔记本上实现Spark-GPU集群开发教程


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

第1部分:Spark-Notebook

选择Scala:完整的Spark API;GPU库允许我无需编写编译C代码而直接使用Java (这样从scala调用Java)。

Zeppelin -> buggy API 
Spark-Notebook -> 导入依赖很头疼
Sparknotebook -> 就选择这个了,杀手级应用

下面是从Sparknotebook 仓储Clone下载一份,按照其指引操作,比如下载IScala.jar等等。

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

[Spark News] Spark + GPU are the next generation technology的更多相关文章

  1. 【转】科普Spark,Spark是什么,如何使用Spark

    本博文是转自如下链接,为了方便自己查阅学习和他人交流.感谢原博主的提供! http://www.aboutyun.com/thread-6849-1-1.html http://www.aboutyu ...

  2. 科普Spark,Spark核心是什么,如何使用Spark(1)

    科普Spark,Spark是什么,如何使用Spark(1)转自:http://www.aboutyun.com/thread-6849-1-1.html 阅读本文章可以带着下面问题:1.Spark基于 ...

  3. Spark之 spark简介、生态圈详解

    来源:http://www.cnblogs.com/shishanyuan/p/4700615.html 1.简介 1.1 Spark简介Spark是加州大学伯克利分校AMP实验室(Algorithm ...

  4. 科普Spark,Spark是什么,如何使用Spark

    科普Spark,Spark是什么,如何使用Spark 1.Spark基于什么算法的分布式计算(很简单) 2.Spark与MapReduce不同在什么地方 3.Spark为什么比Hadoop灵活 4.S ...

  5. Spark Shell & Spark submit

    Spark 的 shell 是一个强大的交互式数据分析工具. 1. 搭建Spark 2. 两个目录下面有可执行文件: bin  包含spark-shell 和 spark-submit sbin 包含 ...

  6. Spark:使用Spark Shell的两个示例

    Spark:使用Spark Shell的两个示例 Python 行数统计 ** 注意: **使用的是Hadoop的HDFS作为持久层,需要先配置Hadoop 命令行代码 # pyspark >& ...

  7. 大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序

    第1章 Spark 概述1.1 什么是 Spark1.2 Spark 特点1.3 Spark 的用户和用途第2章 Spark 集群安装2.1 集群角色2.2 机器准备2.3 下载 Spark 安装包2 ...

  8. [Spark][Python]spark 从 avro 文件获取 Dataframe 的例子

    [Spark][Python]spark 从 avro 文件获取 Dataframe 的例子 从如下地址获取文件: https://github.com/databricks/spark-avro/r ...

  9. [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:

    [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jdbc").o ...

随机推荐

  1. kubernetes之configmap

    生成容器内的环境变量 1.创建一个名字叫nginx-config的configmap, 变量名nginx_port的值是80, 变量名server_name的值是www.test.com kubect ...

  2. java -为什么重写equals(),还需要重写hashCode()?

    1.先post这两个方法的基本定义: equals()的定义: 浅谈Java中的equals和==(转) hashCode()的定义: java中hashCode()方法的作用 Java中hashCo ...

  3. IP段的正则表达式

    IPv4 prefix格式:比如: 192.168.1.0/24 ^(?=(\b|\D))(((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{ ...

  4. django 发送邮件功能

    setting.py # 邮件配置 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.e ...

  5. Laravel Passport API 认证使用小结

    Laravel Passport API 认证使用小结 八月 4, 2017 发布在 Laravel 看到Laravel-China 社区常有人问 Laravel Passport 用于密码验证方式来 ...

  6. Connect AS400 through firewall(JDBC will require ports: 449, 8470, 8471, and 8476)

    What TCP ports are used by ODBC to connect to the DB2/400?  8471/9471 http://search400.techtarget.co ...

  7. 洛谷P4698 [CEOI2011]Hotel [贪心,二分,并查集]

    题目传送门 Hotel 题目描述 你经营着一家旅馆,这家旅馆有 n 个房间,每个房间有维护费用和容量.其中第 i 个房间的维护费用为 ci​,容量为 pi​ 人. 现在有 m 个订单,每个订单有两个参 ...

  8. Neo4j (1)创建节点

    节点模式的构成:(Variable:Lable1:Lable2{Key1:Value1,Key2,Value2}),实际上,每个节点都有一个整数ID,在创建新的节点时,Neo4j自动为节点设置ID值, ...

  9. Linux网络编程六、报文解析(1)

    一.pcap文件解析 依赖的库:libpcap,头文件:pcap/pcap.h 获取pcap文件:tcpdump,-i:指定监听接口,默认配置好的最小的号码的接口.-w:指定存入文件,将原始报文存入指 ...

  10. 反省——关于csp-s模拟50

    本人于搜索csp-s模拟49题解时,有意识地点开了一篇关于csp-s模拟50T2的题解,并知道了题解是二维前缀和以及四维偏序. 更重要的是,那篇博客说有解法二,叫二维莫队. 于是我上网搜索二维莫队,结 ...